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/14 16:53:32 UTC

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

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

commit ac6dcbf87b9aad816c899b421fdbbca131340255
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Thu Mar 14 16:53:23 2024 +0000

    deploying docs (apache/tvm@af0c038f2ec36d1762e7f500bb000d945b01e326)
---
 .../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   |    6 +-
 .../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   |    6 +-
 .../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     |    8 +-
 .../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    |    7 +-
 .../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   |   58 +-
 .../tutorial/cross_compilation_and_rpc.rst.txt     |    2 +-
 docs/_sources/tutorial/intro_topi.rst.txt          |    2 +-
 docs/_sources/tutorial/sg_execution_times.rst.txt  |   24 +-
 .../tutorial/tensor_expr_get_started.rst.txt       |   46 +-
 docs/commit_hash                                   |    2 +-
 docs/how_to/compile_models/from_darknet.html       |    2 +-
 docs/how_to/compile_models/from_oneflow.html       |   14 +-
 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 |   24 +-
 .../deploy_models/deploy_model_on_adreno.html      |    4 +-
 .../deploy_models/deploy_model_on_adreno_tvmc.html |   33 +-
 .../deploy_models/deploy_model_on_android.html     |    2 +-
 .../deploy_object_detection_pytorch.html           |   60 +-
 docs/how_to/deploy_models/deploy_prequantized.html |    9 +-
 .../deploy_models/deploy_prequantized_tflite.html  |    2 +-
 docs/how_to/deploy_models/sg_execution_times.html  |   22 +-
 docs/how_to/extend_tvm/sg_execution_times.html     |    6 +-
 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      |    6 +-
 .../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  |    5 +-
 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 |    8 +-
 docs/how_to/work_with_schedules/intrin_math.html   |    2 +-
 .../work_with_schedules/sg_execution_times.html    |   18 +-
 .../reference/api/doxygen/algorithm_8h_source.html |    2 +-
 docs/reference/api/doxygen/buffer_8h_source.html   |    6 +-
 .../api/doxygen/classtvm_1_1FloatImmNode.html      |    2 +-
 .../classtvm_1_1FloatImmNode__coll__graph.svg      |  243 ++--
 .../api/doxygen/classtvm_1_1IntImmNode.html        |    2 +-
 .../classtvm_1_1IntImmNode__coll__graph.svg        |  243 ++--
 .../api/doxygen/classtvm_1_1PrimExprNode.html      |    2 +-
 .../classtvm_1_1PrimExprNode__coll__graph.svg      |  243 ++--
 .../api/doxygen/classtvm_1_1PrimTypeNode.html      |    2 +-
 .../classtvm_1_1PrimTypeNode__coll__graph.svg      |  243 ++--
 .../classtvm_1_1PrinterConfigNode__coll__graph.svg |   55 +-
 .../doxygen/classtvm_1_1TensorAffineTypeNode.html  |    2 +-
 ...asstvm_1_1TensorAffineTypeNode__coll__graph.svg |  279 ++---
 .../api/doxygen/classtvm_1_1TensorTypeNode.html    |    2 +-
 .../classtvm_1_1TensorTypeNode__coll__graph.svg    |  297 ++---
 .../classtvm_1_1arith_1_1IterMapExprNode.html      |    2 +-
 ...vm_1_1arith_1_1IterMapExprNode__coll__graph.svg |  243 ++--
 .../classtvm_1_1arith_1_1IterSplitExprNode.html    |    2 +-
 ..._1_1arith_1_1IterSplitExprNode__coll__graph.svg |  291 ++---
 .../classtvm_1_1arith_1_1IterSumExprNode.html      |    2 +-
 ...vm_1_1arith_1_1IterSumExprNode__coll__graph.svg |  295 ++---
 ...asstvm_1_1meta__schedule_1_1TensorInfoNode.html |    2 +-
 ...ta__schedule_1_1TensorInfoNode__coll__graph.svg |  259 ++--
 .../classtvm_1_1relax_1_1DataTypeImmNode.html      |    2 +-
 ...vm_1_1relax_1_1DataTypeImmNode__coll__graph.svg |  347 +++---
 .../classtvm_1_1relax_1_1DataTypePatternNode.html  |    2 +-
 ..._1relax_1_1DataTypePatternNode__coll__graph.svg |  255 ++--
 .../classtvm_1_1relax_1_1DynTensorTypeNode.html    |    2 +-
 ..._1_1relax_1_1DynTensorTypeNode__coll__graph.svg |  263 ++--
 .../classtvm_1_1relax_1_1PrimStructInfoNode.html   |    2 +-
 ...1_1relax_1_1PrimStructInfoNode__coll__graph.svg |  271 ++--
 .../classtvm_1_1relax_1_1TensorStructInfoNode.html |    2 +-
 ...1relax_1_1TensorStructInfoNode__coll__graph.svg |  299 ++---
 .../classtvm_1_1relay_1_1DataTypePatternNode.html  |    2 +-
 ..._1relay_1_1DataTypePatternNode__coll__graph.svg |  251 ++--
 .../classtvm_1_1runtime_1_1DataType-members.html   |   81 +-
 .../doxygen/classtvm_1_1runtime_1_1DataType.html   |   76 +-
 ...lasstvm_1_1runtime_1_1DataType__coll__graph.svg |   37 +-
 ...__builder_1_1tir_1_1AllocateConstFrameNode.html |    2 +-
 ...1tir_1_1AllocateConstFrameNode__coll__graph.svg |  475 +++----
 ...1_1ir__builder_1_1tir_1_1AllocateFrameNode.html |    2 +-
 ...er_1_1tir_1_1AllocateFrameNode__coll__graph.svg |  455 +++----
 .../classtvm_1_1te_1_1PlaceholderOpNode.html       |    2 +-
 ...tvm_1_1te_1_1PlaceholderOpNode__coll__graph.svg |  299 ++---
 .../api/doxygen/classtvm_1_1te_1_1TensorNode.html  |    2 +-
 .../classtvm_1_1te_1_1TensorNode__coll__graph.svg  |  307 ++---
 .../api/doxygen/classtvm_1_1tir_1_1AddNode.html    |    2 +-
 .../classtvm_1_1tir_1_1AddNode__coll__graph.svg    |  243 ++--
 .../classtvm_1_1tir_1_1AllocateConstNode.html      |    2 +-
 ...vm_1_1tir_1_1AllocateConstNode__coll__graph.svg |  469 +++----
 .../doxygen/classtvm_1_1tir_1_1AllocateNode.html   |    2 +-
 ...lasstvm_1_1tir_1_1AllocateNode__coll__graph.svg |  419 +++----
 .../api/doxygen/classtvm_1_1tir_1_1AndNode.html    |    2 +-
 .../classtvm_1_1tir_1_1AndNode__coll__graph.svg    |  263 ++--
 .../api/doxygen/classtvm_1_1tir_1_1AnyNode.html    |    2 +-
 .../classtvm_1_1tir_1_1AnyNode__coll__graph.svg    |  243 ++--
 .../doxygen/classtvm_1_1tir_1_1BinaryOpNode.html   |    2 +-
 ...lasstvm_1_1tir_1_1BinaryOpNode__coll__graph.svg |  263 ++--
 .../doxygen/classtvm_1_1tir_1_1BroadcastNode.html  |    2 +-
 ...asstvm_1_1tir_1_1BroadcastNode__coll__graph.svg |  263 ++--
 .../doxygen/classtvm_1_1tir_1_1BufferLoadNode.html |    2 +-
 ...sstvm_1_1tir_1_1BufferLoadNode__coll__graph.svg |  279 ++---
 .../classtvm_1_1tir_1_1BufferNode__coll__graph.svg |   55 +-
 .../api/doxygen/classtvm_1_1tir_1_1CallNode.html   |    2 +-
 .../classtvm_1_1tir_1_1CallNode__coll__graph.svg   |  297 ++---
 .../api/doxygen/classtvm_1_1tir_1_1CastNode.html   |    2 +-
 .../classtvm_1_1tir_1_1CastNode__coll__graph.svg   |  263 ++--
 .../api/doxygen/classtvm_1_1tir_1_1CmpOpNode.html  |    2 +-
 .../classtvm_1_1tir_1_1CmpOpNode__coll__graph.svg  |  263 ++--
 .../api/doxygen/classtvm_1_1tir_1_1DivNode.html    |    2 +-
 .../classtvm_1_1tir_1_1DivNode__coll__graph.svg    |  243 ++--
 .../api/doxygen/classtvm_1_1tir_1_1EQNode.html     |    2 +-
 .../classtvm_1_1tir_1_1EQNode__coll__graph.svg     |  243 ++--
 .../doxygen/classtvm_1_1tir_1_1FloorDivNode.html   |    2 +-
 ...lasstvm_1_1tir_1_1FloorDivNode__coll__graph.svg |  243 ++--
 .../doxygen/classtvm_1_1tir_1_1FloorModNode.html   |    2 +-
 ...lasstvm_1_1tir_1_1FloorModNode__coll__graph.svg |  243 ++--
 .../api/doxygen/classtvm_1_1tir_1_1GENode.html     |    2 +-
 .../classtvm_1_1tir_1_1GENode__coll__graph.svg     |  243 ++--
 .../api/doxygen/classtvm_1_1tir_1_1GTNode.html     |    2 +-
 .../classtvm_1_1tir_1_1GTNode__coll__graph.svg     |  243 ++--
 ...classtvm_1_1tir_1_1IndexDataTypeNormalizer.html |    2 +-
 ...tir_1_1IndexDataTypeNormalizer__coll__graph.svg |  301 ++---
 .../api/doxygen/classtvm_1_1tir_1_1LTNode.html     |    2 +-
 .../classtvm_1_1tir_1_1LTNode__coll__graph.svg     |  243 ++--
 .../api/doxygen/classtvm_1_1tir_1_1LetNode.html    |    2 +-
 .../classtvm_1_1tir_1_1LetNode__coll__graph.svg    |  291 ++---
 .../api/doxygen/classtvm_1_1tir_1_1MaxNode.html    |    2 +-
 .../classtvm_1_1tir_1_1MaxNode__coll__graph.svg    |  243 ++--
 .../api/doxygen/classtvm_1_1tir_1_1MinNode.html    |    2 +-
 .../classtvm_1_1tir_1_1MinNode__coll__graph.svg    |  243 ++--
 .../api/doxygen/classtvm_1_1tir_1_1ModNode.html    |    2 +-
 .../classtvm_1_1tir_1_1ModNode__coll__graph.svg    |  243 ++--
 .../api/doxygen/classtvm_1_1tir_1_1MulNode.html    |    2 +-
 .../classtvm_1_1tir_1_1MulNode__coll__graph.svg    |  243 ++--
 .../api/doxygen/classtvm_1_1tir_1_1NENode.html     |    2 +-
 .../classtvm_1_1tir_1_1NENode__coll__graph.svg     |  243 ++--
 .../api/doxygen/classtvm_1_1tir_1_1NotNode.html    |    2 +-
 .../classtvm_1_1tir_1_1NotNode__coll__graph.svg    |  263 ++--
 .../api/doxygen/classtvm_1_1tir_1_1OrNode.html     |    2 +-
 .../classtvm_1_1tir_1_1OrNode__coll__graph.svg     |  263 ++--
 .../classtvm_1_1tir_1_1ProducerLoadNode.html       |    2 +-
 ...tvm_1_1tir_1_1ProducerLoadNode__coll__graph.svg |  271 ++--
 .../api/doxygen/classtvm_1_1tir_1_1RampNode.html   |    2 +-
 .../classtvm_1_1tir_1_1RampNode__coll__graph.svg   |  263 ++--
 .../api/doxygen/classtvm_1_1tir_1_1ReduceNode.html |    2 +-
 .../classtvm_1_1tir_1_1ReduceNode__coll__graph.svg |  329 ++---
 .../api/doxygen/classtvm_1_1tir_1_1SelectNode.html |    2 +-
 .../classtvm_1_1tir_1_1SelectNode__coll__graph.svg |  263 ++--
 .../doxygen/classtvm_1_1tir_1_1ShuffleNode.html    |    2 +-
 ...classtvm_1_1tir_1_1ShuffleNode__coll__graph.svg |  275 ++--
 .../doxygen/classtvm_1_1tir_1_1SizeVarNode.html    |    2 +-
 ...classtvm_1_1tir_1_1SizeVarNode__coll__graph.svg |  269 ++--
 .../doxygen/classtvm_1_1tir_1_1StringImmNode.html  |    2 +-
 ...asstvm_1_1tir_1_1StringImmNode__coll__graph.svg |  277 +++--
 .../api/doxygen/classtvm_1_1tir_1_1SubNode.html    |    2 +-
 .../classtvm_1_1tir_1_1SubNode__coll__graph.svg    |  243 ++--
 .../api/doxygen/classtvm_1_1tir_1_1VarNode.html    |    2 +-
 .../classtvm_1_1tir_1_1VarNode__coll__graph.svg    |  269 ++--
 .../api/doxygen/data__layout_8h_source.html        |    2 +-
 .../api/doxygen/data__type_8h_source.html          |  536 ++++----
 .../doxygen/data__type__rewriter_8h_source.html    |    2 +-
 .../api/doxygen/detail_2broadcast_8h_source.html   |    2 +-
 .../api/doxygen/detail_2extern_8h_source.html      |    6 +-
 docs/reference/api/doxygen/doc_8h_source.html      |   12 +-
 docs/reference/api/doxygen/elemwise_8h_source.html |    2 +-
 docs/reference/api/doxygen/functions_b.html        |    2 +-
 docs/reference/api/doxygen/functions_f.html        |    2 +-
 docs/reference/api/doxygen/functions_func_b.html   |    2 +-
 docs/reference/api/doxygen/functions_func_g.html   |    5 +-
 docs/reference/api/doxygen/functions_func_s.html   |    6 +-
 docs/reference/api/doxygen/functions_func_u.html   |    2 +-
 docs/reference/api/doxygen/functions_g.html        |    5 +-
 docs/reference/api/doxygen/functions_i.html        |    6 +-
 docs/reference/api/doxygen/functions_p.html        |    4 +-
 docs/reference/api/doxygen/functions_s.html        |   12 +-
 docs/reference/api/doxygen/functions_u.html        |    2 +-
 .../api/doxygen/group__norm_8h_source.html         |    2 +-
 .../reference/api/doxygen/ir_2attrs_8h_source.html |    2 +-
 docs/reference/api/doxygen/ir_2expr_8h_source.html |    4 +-
 .../api/doxygen/layer__norm_8h_source.html         |    2 +-
 docs/reference/api/doxygen/metadata_8h_source.html |    2 +-
 docs/reference/api/doxygen/nn_2bnn_8h_source.html  |   10 +-
 .../api/doxygen/nn_2pooling_8h_source.html         |    2 +-
 .../reference/api/doxygen/operation_8h_source.html |    4 +-
 .../api/doxygen/packed__func_8h_source.html        |    6 +-
 .../api/doxygen/relax_2type_8h_source.html         |    2 +-
 .../doxygen/relay_2attrs_2memory_8h_source.html    |    2 +-
 .../reference/api/doxygen/rms__norm_8h_source.html |    2 +-
 .../api/doxygen/script__printer_8h_source.html     |    6 +-
 docs/reference/api/doxygen/search/all_10.js        |  401 +++---
 docs/reference/api/doxygen/search/all_11.js        |  655 +++++-----
 docs/reference/api/doxygen/search/all_12.js        |   14 +-
 docs/reference/api/doxygen/search/all_13.js        |  644 +++++-----
 docs/reference/api/doxygen/search/all_14.js        |  747 +++++------
 docs/reference/api/doxygen/search/all_15.js        | 1314 ++++++++++----------
 docs/reference/api/doxygen/search/all_16.js        |  164 +--
 docs/reference/api/doxygen/search/all_17.js        |  302 ++---
 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_3.js         |    2 +-
 docs/reference/api/doxygen/search/all_7.js         |    4 +-
 docs/reference/api/doxygen/search/all_8.js         |  366 +++---
 docs/reference/api/doxygen/search/all_9.js         |   92 +-
 docs/reference/api/doxygen/search/all_a.js         |  765 ++++++------
 docs/reference/api/doxygen/search/all_b.js         |   10 +-
 docs/reference/api/doxygen/search/all_c.js         |  289 ++---
 docs/reference/api/doxygen/search/all_e.js         |  215 ++--
 docs/reference/api/doxygen/search/all_f.js         |  236 ++--
 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     |  188 +--
 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     |  190 +--
 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  |  632 +++++-----
 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       |   26 +-
 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  |  296 ++---
 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  |  532 ++++----
 docs/reference/api/doxygen/search/functions_14.js  |  532 ++++----
 docs/reference/api/doxygen/search/functions_15.js  |  132 +-
 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   |  174 +--
 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   |  242 ++--
 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  |   86 +-
 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   |  124 +-
 docs/reference/api/doxygen/search/variables_10.js  |    2 +-
 docs/reference/api/doxygen/search/variables_11.js  |  152 +--
 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   |   96 +-
 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 +--
 .../api/doxygen/strided__slice_8h_source.html      |    2 +-
 .../api/doxygen/struct__info_8h_source.html        |    2 +-
 .../structtvm_1_1relax_1_1ArgsortAttrs.html        |    2 +-
 ...cttvm_1_1relax_1_1ArgsortAttrs__coll__graph.svg |  183 +--
 .../doxygen/structtvm_1_1relax_1_1AstypeAttrs.html |    2 +-
 ...ucttvm_1_1relax_1_1AstypeAttrs__coll__graph.svg |  183 +--
 .../doxygen/structtvm_1_1relax_1_1Conv1DAttrs.html |    2 +-
 ...ucttvm_1_1relax_1_1Conv1DAttrs__coll__graph.svg |  351 +++---
 ...structtvm_1_1relax_1_1Conv1DTransposeAttrs.html |    2 +-
 ...1relax_1_1Conv1DTransposeAttrs__coll__graph.svg |  363 +++---
 .../doxygen/structtvm_1_1relax_1_1Conv2DAttrs.html |    2 +-
 ...ucttvm_1_1relax_1_1Conv2DAttrs__coll__graph.svg |  351 +++---
 ...structtvm_1_1relax_1_1Conv2DTransposeAttrs.html |    2 +-
 ...1relax_1_1Conv2DTransposeAttrs__coll__graph.svg |  363 +++---
 .../doxygen/structtvm_1_1relax_1_1Conv3DAttrs.html |    2 +-
 ...ucttvm_1_1relax_1_1Conv3DAttrs__coll__graph.svg |  351 +++---
 .../doxygen/structtvm_1_1relax_1_1InitAttrs.html   |    2 +-
 ...tructtvm_1_1relax_1_1InitAttrs__coll__graph.svg |  183 +--
 .../doxygen/structtvm_1_1relax_1_1MatmulAttrs.html |    2 +-
 ...ucttvm_1_1relax_1_1MatmulAttrs__coll__graph.svg |  183 +--
 .../structtvm_1_1relax_1_1QuantizeAttrs.html       |    2 +-
 ...ttvm_1_1relax_1_1QuantizeAttrs__coll__graph.svg |  185 +--
 .../structtvm_1_1relax_1_1Resize2DAttrs.html       |    2 +-
 ...ttvm_1_1relax_1_1Resize2DAttrs__coll__graph.svg |  365 +++---
 .../doxygen/structtvm_1_1relax_1_1ScanopAttrs.html |    2 +-
 ...ucttvm_1_1relax_1_1ScanopAttrs__coll__graph.svg |  373 +++---
 .../doxygen/structtvm_1_1relax_1_1TopKAttrs.html   |    2 +-
 ...tructtvm_1_1relax_1_1TopKAttrs__coll__graph.svg |  297 ++---
 .../structtvm_1_1relax_1_1WrapParamAttrs.html      |    2 +-
 ...tvm_1_1relax_1_1WrapParamAttrs__coll__graph.svg |  185 +--
 .../structtvm_1_1relay_1_1AllocStorageAttrs.html   |    2 +-
 ..._1_1relay_1_1AllocStorageAttrs__coll__graph.svg |  303 ++---
 .../structtvm_1_1relay_1_1AllocTensorAttrs.html    |    2 +-
 ...m_1_1relay_1_1AllocTensorAttrs__coll__graph.svg |  355 +++---
 .../doxygen/structtvm_1_1relay_1_1ArangeAttrs.html |    2 +-
 ...ucttvm_1_1relay_1_1ArangeAttrs__coll__graph.svg |  295 ++---
 .../structtvm_1_1relay_1_1ArgsortAttrs.html        |    2 +-
 ...cttvm_1_1relay_1_1ArgsortAttrs__coll__graph.svg |  183 +--
 .../structtvm_1_1relay_1_1BatchMatmulAttrs.html    |    2 +-
 ...m_1_1relay_1_1BatchMatmulAttrs__coll__graph.svg |  353 +++---
 .../structtvm_1_1relay_1_1BinaryConv2DAttrs.html   |    2 +-
 ..._1_1relay_1_1BinaryConv2DAttrs__coll__graph.svg |  341 ++---
 .../structtvm_1_1relay_1_1BinaryDenseAttrs.html    |    2 +-
 ...m_1_1relay_1_1BinaryDenseAttrs__coll__graph.svg |  305 ++---
 .../structtvm_1_1relay_1_1BitPackAttrs.html        |    2 +-
 ...cttvm_1_1relay_1_1BitPackAttrs__coll__graph.svg |  183 +--
 .../doxygen/structtvm_1_1relay_1_1CastAttrs.html   |    2 +-
 ...tructtvm_1_1relay_1_1CastAttrs__coll__graph.svg |  183 +--
 .../structtvm_1_1relay_1_1CastHintAttrs.html       |    2 +-
 ...ttvm_1_1relay_1_1CastHintAttrs__coll__graph.svg |  185 +--
 .../doxygen/structtvm_1_1relay_1_1Conv1DAttrs.html |    2 +-
 ...ucttvm_1_1relay_1_1Conv1DAttrs__coll__graph.svg |  375 +++---
 ...structtvm_1_1relay_1_1Conv1DTransposeAttrs.html |    2 +-
 ...1relay_1_1Conv1DTransposeAttrs__coll__graph.svg |  341 ++---
 .../doxygen/structtvm_1_1relay_1_1Conv2DAttrs.html |    2 +-
 ...ucttvm_1_1relay_1_1Conv2DAttrs__coll__graph.svg |  383 +++---
 ...structtvm_1_1relay_1_1Conv2DTransposeAttrs.html |    2 +-
 ...1relay_1_1Conv2DTransposeAttrs__coll__graph.svg |  341 ++---
 .../structtvm_1_1relay_1_1Conv2DWinogradAttrs.html |    2 +-
 ..._1relay_1_1Conv2DWinogradAttrs__coll__graph.svg |  385 +++---
 ..._1Conv2DWinogradNNPACKWeightTransformAttrs.html |    2 +-
 ...gradNNPACKWeightTransformAttrs__coll__graph.svg |  185 +--
 .../doxygen/structtvm_1_1relay_1_1Conv3DAttrs.html |    2 +-
 ...ucttvm_1_1relay_1_1Conv3DAttrs__coll__graph.svg |  383 +++---
 ...structtvm_1_1relay_1_1Conv3DTransposeAttrs.html |    2 +-
 ...1relay_1_1Conv3DTransposeAttrs__coll__graph.svg |  379 +++---
 .../structtvm_1_1relay_1_1Conv3DWinogradAttrs.html |    2 +-
 ..._1relay_1_1Conv3DWinogradAttrs__coll__graph.svg |  339 ++---
 .../structtvm_1_1relay_1_1CropAndResizeAttrs.html  |    2 +-
 ...1_1relay_1_1CropAndResizeAttrs__coll__graph.svg |  311 ++---
 ...tructtvm_1_1relay_1_1DeformableConv2DAttrs.html |    2 +-
 ...relay_1_1DeformableConv2DAttrs__coll__graph.svg |  339 ++---
 .../doxygen/structtvm_1_1relay_1_1DenseAttrs.html  |    2 +-
 ...ructtvm_1_1relay_1_1DenseAttrs__coll__graph.svg |  369 +++---
 .../structtvm_1_1relay_1_1DensePackAttrs.html      |    2 +-
 ...tvm_1_1relay_1_1DensePackAttrs__coll__graph.svg |  335 ++---
 .../structtvm_1_1relay_1_1Dilation2DAttrs.html     |    2 +-
 ...vm_1_1relay_1_1Dilation2DAttrs__coll__graph.svg |  313 ++---
 .../doxygen/structtvm_1_1relay_1_1InitOpAttrs.html |    2 +-
 ...ucttvm_1_1relay_1_1InitOpAttrs__coll__graph.svg |  295 ++---
 .../doxygen/structtvm_1_1relay_1_1MatmulAttrs.html |    2 +-
 ...ucttvm_1_1relay_1_1MatmulAttrs__coll__graph.svg |  369 +++---
 .../structtvm_1_1relay_1_1NdarraySizeAttrs.html    |    2 +-
 ...m_1_1relay_1_1NdarraySizeAttrs__coll__graph.svg |  185 +--
 .../doxygen/structtvm_1_1relay_1_1NormalAttrs.html |    2 +-
 ...ucttvm_1_1relay_1_1NormalAttrs__coll__graph.svg |  309 ++---
 .../doxygen/structtvm_1_1relay_1_1OneHotAttrs.html |    2 +-
 ...ucttvm_1_1relay_1_1OneHotAttrs__coll__graph.svg |  183 +--
 .../structtvm_1_1relay_1_1Resize1DAttrs.html       |    2 +-
 ...ttvm_1_1relay_1_1Resize1DAttrs__coll__graph.svg |  365 +++---
 .../structtvm_1_1relay_1_1Resize2DAttrs.html       |    2 +-
 ...ttvm_1_1relay_1_1Resize2DAttrs__coll__graph.svg |  365 +++---
 .../structtvm_1_1relay_1_1Resize3DAttrs.html       |    2 +-
 ...ttvm_1_1relay_1_1Resize3DAttrs__coll__graph.svg |  365 +++---
 .../doxygen/structtvm_1_1relay_1_1ScanopAttrs.html |    2 +-
 ...ucttvm_1_1relay_1_1ScanopAttrs__coll__graph.svg |  385 +++---
 .../structtvm_1_1relay_1_1SearchSortedAttrs.html   |    2 +-
 ..._1_1relay_1_1SearchSortedAttrs__coll__graph.svg |  185 +--
 .../structtvm_1_1relay_1_1ShapeOfAttrs.html        |    2 +-
 ...cttvm_1_1relay_1_1ShapeOfAttrs__coll__graph.svg |  183 +--
 .../doxygen/structtvm_1_1relay_1_1TopKAttrs.html   |    2 +-
 ...tructtvm_1_1relay_1_1TopKAttrs__coll__graph.svg |  295 ++---
 .../structtvm_1_1relay_1_1UniformAttrs.html        |    2 +-
 ...cttvm_1_1relay_1_1UniformAttrs__coll__graph.svg |  309 ++---
 ...ructtvm_1_1relay_1_1qnn_1_1DequantizeAttrs.html |    2 +-
 ...elay_1_1qnn_1_1DequantizeAttrs__coll__graph.svg |  185 +--
 ...structtvm_1_1relay_1_1qnn_1_1QuantizeAttrs.html |    2 +-
 ...1relay_1_1qnn_1_1QuantizeAttrs__coll__graph.svg |  185 +--
 ...ructtvm_1_1relay_1_1qnn_1_1RequantizeAttrs.html |    2 +-
 ...elay_1_1qnn_1_1RequantizeAttrs__coll__graph.svg |  185 +--
 ...CacheMetadata_1_1FileRecord_1_1ParamRecord.html |    2 +-
 ...a_1_1FileRecord_1_1ParamRecord__coll__graph.svg |  159 +--
 .../api/doxygen/structtvm_1_1tir_1_1LENode.html    |    2 +-
 .../structtvm_1_1tir_1_1LENode__coll__graph.svg    |  243 ++--
 .../api/doxygen/tensor__utils_8h_source.html       |    2 +-
 .../reference/api/doxygen/tir_2expr_8h_source.html |    2 +-
 docs/reference/api/doxygen/tir_2ir_8h_source.html  |   18 +-
 docs/reference/api/doxygen/tir_2op_8h_source.html  |   22 +-
 docs/reference/api/doxygen/topi_2nn_8h_source.html |    2 +-
 .../api/doxygen/topi_2transform_8h_source.html     |    6 +-
 docs/reference/api/doxygen/var_8h_source.html      |    2 +-
 docs/reference/api/python/auto_scheduler.html      |    4 +-
 .../api/typedoc/classes/ArtifactCache.html         |   10 +-
 docs/reference/api/typedoc/classes/DLDataType.html |   14 +-
 docs/reference/api/typedoc/classes/DLDevice.html   |   12 +-
 docs/reference/api/typedoc/classes/Instance.html   |  110 +-
 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 |   54 +-
 .../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          |    8 +-
 .../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   |    3 +-
 .../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               |  271 ++--
 docs/tutorial/cross_compilation_and_rpc.html       |    2 +-
 docs/tutorial/intro_topi.html                      |    2 +-
 docs/tutorial/sg_execution_times.html              |   30 +-
 docs/tutorial/tensor_expr_get_started.html         |   46 +-
 600 files changed, 27402 insertions(+), 27240 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 1a21fa2a42..e667b211b8 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  34.154 seconds)
+   **Total running time of the script:** ( 1 minutes  29.472 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 b3674dc5e9..276170f056 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]      16%|#6        | 6.81M/41.5M [00:00<00:00, 71.4MB/s]      35%|###4      | 14.3M/41.5M [00:00<00:00, 50.5MB/s]      47%|####7     | 19.5M/41.5M [00:00<00:00, 43.2MB/s]      58%|#####7    | 24.0M/41.5M [00:00<00:00, 32.9MB/s]      77%|#######7  | 32.0M/41.5M [00:00<00:00, 41.8MB/s]     100%|##########| 41.5M/41.5M [00:00<00:00, 50.6MB/s]
+       0%|          | 0.00/41.5M [00:00<?, ?B/s]      15%|#5        | 6.33M/41.5M [00:00<00:00, 40.6MB/s]      39%|###8      | 16.0M/41.5M [00:00<00:00, 51.9MB/s]      54%|#####3    | 22.3M/41.5M [00:00<00:00, 44.8MB/s]      64%|######4   | 26.6M/41.5M [00:00<00:00, 44.0MB/s]      76%|#######6  | 31.7M/41.5M [00:00<00:00, 40.8MB/s]      86%|########5 | 35.6M/41.5M [00:00<00:00, 39.6MB/s]      95%|#########4| 39.4M/41.5M [00:01<00:00, 35.8MB/s]     100%|##########| 41.5M/41.5M [00:01<00:00, 40.7MB/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 ee1a196b7e..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  1.598 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 c3bcbe7c7b..490fe53664 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, 46.3MB/s]      36%|###5      | 16.0M/44.7M [00:00<00:00, 51.8MB/s]      57%|#####7    | 25.6M/44.7M [00:00<00:00, 68.4MB/s]      79%|#######9  | 35.4M/44.7M [00:00<00:00, 79.9MB/s]      98%|#########7| 43.6M/44.7M [00:00<00:00, 71.1MB/s]     100%|##########| 44.7M/44.7M [00:00<00:00, 68.8MB/s]
+       0%|          | 0.00/44.7M [00:00<?, ?B/s]      18%|#7        | 7.99M/44.7M [00:00<00:00, 42.7MB/s]      36%|###5      | 16.0M/44.7M [00:00<00:00, 47.9MB/s]      54%|#####3    | 24.0M/44.7M [00:00<00:00, 54.1MB/s]      72%|#######1  | 32.0M/44.7M [00:00<00:00, 51.4MB/s]      89%|########9 | 39.8M/44.7M [00:00<00:00, 59.2MB/s]     100%|##########| 44.7M/44.7M [00:00<00:00, 54.6MB/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 19457067ae..1116722df6 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  30.723 seconds)
+   **Total running time of the script:** ( 1 minutes  31.224 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 3218882448..9e51ea5c79 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:37.652** total execution time for **how_to_compile_models** files:
+**06:30.432** total execution time for **how_to_compile_models** files:
 
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)       | 01:34.154 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``) | 01:31.224 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``) | 01:30.723 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)       | 01:29.472 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)         | 01:01.598 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)         | 00:59.862 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)       | 00:43.153 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)       | 00:42.015 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)         | 00:38.519 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)         | 00:38.256 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)       | 00:28.642 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)       | 00:28.265 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)           | 00:26.023 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)           | 00:27.096 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)         | 00:11.947 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)         | 00:11.341 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)             | 00:02.893 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)             | 00:02.902 | 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 8a3e73643b..90e98aebaf 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.7029    4124.5789    4128.6193    4122.3356      2.1209                  
+     3992.6474    3991.3611    3996.7648    3989.7515      2.5227                  
 
 
 
@@ -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  19.848 seconds)
+   **Total running time of the script:** ( 1 minutes  17.285 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 b01ba315b0..712a819431 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      13262848/102967424 [==>...........................] - ETA: 0s      18292736/102967424 [====>.........................] - ETA: 0s      23207936/102967424 [=====>........................] - ETA: 0s      28237824/102967424 [=======>......................] - ETA: 0s      33267712/102967424 [========>.....................] - ETA: 0s      38322176/102967424 [==========>...................] - ETA: 0s      43335680/102967424 [===========>..................] - ETA: 0s
       48439296/102967424 [=============>................] - ETA: 0s      53379072/102967424 [==============>...............] - ETA: 0s      58425344/102967424 [================>.............] - ETA: 0s      63062016/102967424 [=================>............] - ETA: 0s      67665920/102967424 [==================>...........] - ETA: 0s      73605120/102967424 [====================>.........] - ETA: 0s      78635008/102967424 [=====================>........] - ETA: 0s      83656704/102967424 [=======================>......] -
  ETA: 0s      88727552/102967424 [========================>.....] - ETA: 0s      92266496/102967424 [=========================>....] - ETA: 0s      99827712/102967424 [============================>.] - ETA: 0s     102967424/102967424 [==============================] - 1s 0us/step
+          8192/102967424 [..............................] - ETA: 0s       6848512/102967424 [>.............................] - ETA: 0s      11993088/102967424 [==>...........................] - ETA: 0s      16769024/102967424 [===>..........................] - ETA: 0s      21708800/102967424 [=====>........................] - ETA: 0s      25157632/102967424 [======>.......................] - ETA: 0s      34250752/102967424 [========>.....................] - ETA: 0s      41934848/102967424 [===========>..................] - ETA: 0s
       50282496/102967424 [=============>................] - ETA: 0s      54870016/102967424 [==============>...............] - ETA: 0s      58712064/102967424 [================>.............] - ETA: 0s      66338816/102967424 [==================>...........] - ETA: 0s      71352320/102967424 [===================>..........] - ETA: 0s      75489280/102967424 [====================>.........] - ETA: 0s      83263488/102967424 [=======================>......] - ETA: 0s      88260608/102967424 [========================>.....] -
  ETA: 0s      92266496/102967424 [=========================>....] - ETA: 0s     100737024/102967424 [============================>.] - ETA: 0s     102967424/102967424 [==============================] - 1s 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 c64e934a10..02e8d1f9a5 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)  
-      15.0039      14.7363      16.5908      14.5437       0.6138                  
+      14.9459      15.1243      15.4440      14.3112       0.4217                  
 
 
 
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 2af17becec..cf3b1bae9c 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]       4%|3         | 6.30M/170M [00:00<00:04, 36.7MB/s]       6%|5         | 9.81M/170M [00:00<00:06, 28.0MB/s]       8%|8         | 14.3M/170M [00:00<00:06, 26.0MB/s]      13%|#3        | 22.3M/170M [00:00<00:05, 28.8MB/s]      15%|#4        | 25.0M/170M [00:00<00:05, 28.7MB/s]      19%|#8        | 32.0M/170M [00:01<00:04, 35.8MB/s]      24%|##3       | 40.0M/170M [00:01<00:03, 40.9MB/s]      28%|##8       | 48.0M/170M [00:01<00:02, 48.3MB/s]      33%|###2      | 56.0M/170M [00:01<00:02, 53.9MB/s]      37%|###6      | 62.8M/170M [00:01<00:01, 58.1MB/s]      40%|####      | 68.6M/170M [00:01<00:02, 46.6MB/s]      43%|####3     | 73.5M/170M [00:01<00:02, 43.2MB/s]      47%|####7     | 80.1M/170M [00:02<00:01, 49.0MB/s]      51%|#####     | 86.3M/170M [00:02<00:01, 45.8MB/s]      54%|#####3    | 91.0M/170M [00:02<00:01, 45.9MB/s]      56%|#####6    | 95.6M/170M [00:02<00:01, 41.7MB/s]      59%|#####8    | 99.8M/170M [00:02<00:01, 38.0MB/
 s]      61%|######1   | 104M/170M [00:02<00:01, 37.5MB/s]       66%|######5   | 112M/170M [00:02<00:01, 44.1MB/s]      70%|######9   | 118M/170M [00:03<00:01, 38.7MB/s]      72%|#######1  | 122M/170M [00:03<00:01, 30.8MB/s]      75%|#######5  | 128M/170M [00:03<00:01, 35.0MB/s]      79%|#######9  | 134M/170M [00:03<00:01, 36.6MB/s]      81%|########1 | 138M/170M [00:03<00:01, 32.8MB/s]      85%|########4 | 144M/170M [00:03<00:00, 36.2MB/s]      89%|########9 | 152M/170M [00:04<00:00, 40.4MB/s]      93%|#########3| 158M/170M [00:04<00:00, 30.6MB/s]      95%|#########5| 162M/170M [00:04<00:00, 27.9MB/s]      98%|#########7| 166M/170M [00:04<00:00, 27.6MB/s]     100%|##########| 170M/170M [00:04<00:00, 37.0MB/s]
+       0%|          | 0.00/170M [00:00<?, ?B/s]       5%|4         | 7.99M/170M [00:00<00:04, 40.8MB/s]       8%|8         | 14.3M/170M [00:00<00:04, 39.3MB/s]      11%|#         | 18.0M/170M [00:00<00:04, 37.6MB/s]      13%|#3        | 22.3M/170M [00:00<00:03, 39.5MB/s]      15%|#5        | 26.1M/170M [00:00<00:04, 31.7MB/s]      19%|#8        | 32.0M/170M [00:00<00:04, 33.0MB/s]      24%|##3       | 40.0M/170M [00:01<00:03, 41.8MB/s]      28%|##8       | 48.0M/170M [00:01<00:02, 42.7MB/s]      33%|###2      | 56.0M/170M [00:01<00:02, 43.7MB/s]      38%|###7      | 64.0M/170M [00:01<00:02, 48.7MB/s]      42%|####2     | 72.0M/170M [00:01<00:01, 54.2MB/s]      46%|####6     | 78.3M/170M [00:01<00:01, 50.4MB/s]      49%|####9     | 83.3M/170M [00:02<00:01, 46.0MB/s]      52%|#####1    | 88.0M/170M [00:02<00:02, 39.4MB/s]      56%|#####5    | 94.3M/170M [00:02<00:01, 41.7MB/s]      58%|#####7    | 98.4M/170M [00:02<00:01, 41.6MB/s]      60%|######    | 102M/170M [00:02<00:01, 40.7MB/s
 ]       64%|######4   | 109M/170M [00:02<00:01, 46.9MB/s]      69%|######9   | 118M/170M [00:02<00:00, 59.5MB/s]      73%|#######2  | 124M/170M [00:02<00:00, 54.4MB/s]      76%|#######6  | 129M/170M [00:03<00:00, 46.8MB/s]      80%|########  | 136M/170M [00:03<00:00, 47.6MB/s]      85%|########4 | 144M/170M [00:03<00:00, 54.3MB/s]      88%|########8 | 150M/170M [00:03<00:00, 52.9MB/s]      92%|#########1| 156M/170M [00:03<00:00, 44.3MB/s]      94%|#########4| 160M/170M [00:03<00:00, 39.2MB/s]      98%|#########7| 166M/170M [00:03<00:00, 44.2MB/s]     100%|##########| 170M/170M [00:03<00:00, 45.0MB/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  37.357 seconds)
+   **Total running time of the script:** ( 3 minutes  29.335 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 65e00c15dc..0ce430a5ac 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]      59%|#####8    | 7.99M/13.6M [00:00<00:00, 46.9MB/s]     100%|##########| 13.6M/13.6M [00:00<00:00, 61.8MB/s]
+       0%|          | 0.00/13.6M [00:00<?, ?B/s]      47%|####6     | 6.30M/13.6M [00:00<00:00, 54.0MB/s]      85%|########4 | 11.5M/13.6M [00:00<00:00, 46.7MB/s]     100%|##########| 13.6M/13.6M [00:00<00:00, 38.0MB/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.0429      88.9742      90.2476      88.6331       0.2999                  
+      86.1133      86.0656      87.4021      85.8987       0.2173                  
 
 
 
@@ -457,7 +457,7 @@ TODO
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  29.579 seconds)
+   **Total running time of the script:** ( 1 minutes  28.360 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 ba3d9d9d86..9b8f17322c 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)  
-      108.8283     108.8078     109.5526     107.9958      0.3328                  
+      107.1559     106.9932     120.7226     106.4474      1.3934                  
 
 
 
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 31b493f9c1..3460f8b3b2 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
 =================
-**09:57.281** total execution time for **how_to_deploy_models** files:
+**09:41.198** 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:37.357 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``) | 03:29.335 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)                         | 01:29.579 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)                         | 01:28.360 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno.py` (``deploy_model_on_adreno.py``)                   | 01:19.848 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno.py` (``deploy_model_on_adreno.py``)                   | 01:17.285 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)                 | 00:51.867 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)           | 00:51.007 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)           | 00:51.634 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)                 | 00:50.085 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno_tvmc.py` (``deploy_model_on_adreno_tvmc.py``)         | 00:46.811 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno_tvmc.py` (``deploy_model_on_adreno_tvmc.py``)         | 00:45.683 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)                       | 00:30.091 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)                       | 00:29.719 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_nano.py` (``deploy_model_on_nano.py``)                       | 00:30.086 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_nano.py` (``deploy_model_on_nano.py``)                       | 00:29.717 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_deploy_models_deploy_sparse.py` (``deploy_sparse.py``)                                     | 00:00.008 | 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 4adc2f2613..209b9b116c 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:04.127** total execution time for **how_to_extend_tvm** files:
+**00:03.861** 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.875 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)     | 00:02.690 | 0.0 MB |
 +-------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)               | 00:01.244 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)               | 00:01.163 | 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 |
 +-------------------------------------------------------------------------------------------+-----------+--------+
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 5ff86c2968..0a01348f7d 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: 26029us [26029us] (49.02%; 49.02%)
-    FoldScaleAxis: 27065us [8us] (50.98%; 50.98%)
-            FoldConstant: 27056us [1849us] (50.96%; 99.97%)
-                    InferType: 25207us [25207us] (47.48%; 93.16%)
+    InferType: 24689us [24689us] (48.89%; 48.89%)
+    FoldScaleAxis: 25807us [7us] (51.11%; 51.11%)
+            FoldConstant: 25800us [1801us] (51.09%; 99.97%)
+                    InferType: 23999us [23999us] (47.53%; 93.02%)
 
 
 
@@ -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: 25326us [25326us] (48.52%; 48.52%)
-    FoldScaleAxis: 26873us [8us] (51.48%; 51.48%)
-            FoldConstant: 26865us [1877us] (51.47%; 99.97%)
-                    InferType: 24989us [24989us] (47.87%; 93.01%)
+    InferType: 23917us [23917us] (48.86%; 48.86%)
+    FoldScaleAxis: 25035us [5us] (51.14%; 51.14%)
+            FoldConstant: 25030us [1666us] (51.13%; 99.98%)
+                    InferType: 23364us [23364us] (47.73%; 93.34%)
 
 
 
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 eaeb53922a..06040a380f 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: 53.538814 ms
+    Convolution: 53.550304 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 2b8a9726e6..704fb5f6fa 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.270205 ms
+    conv2d with tensor core: 12.274979 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 17fda720c6..ae2f60eb2b 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.018172
-    Baseline: 3.402074
+    Numpy running time: 0.013875
+    Baseline: 3.293855
 
 
 
@@ -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.298336
+    Opt1: 0.281525
 
 
 
@@ -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.272708
+    Opt2: 0.266564
 
 
 
@@ -406,7 +406,7 @@ the access pattern for A matrix is more cache friendly.
 
  .. code-block:: none
 
-    Opt3: 0.116592
+    Opt3: 0.111960
 
 
 
@@ -523,7 +523,7 @@ flattening.
 
  .. code-block:: none
 
-    Opt4: 0.109034
+    Opt4: 0.103665
 
 
 
@@ -635,7 +635,7 @@ write to C when all the block results are ready.
 
  .. code-block:: none
 
-    Opt5: 0.111920
+    Opt5: 0.094587
 
 
 
@@ -748,7 +748,7 @@ Furthermore, we can also utilize multi-core processors to do the thread-level pa
 
  .. code-block:: none
 
-    Opt6: 0.133365
+    Opt6: 0.111818
 
 
 
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 c70bbe6d6f..a65b09e14f 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:33.967** total execution time for **how_to_optimize_operators** files:
+**00:31.505** total execution time for **how_to_optimize_operators** files:
 
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)                       | 00:30.859 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)                       | 00:28.344 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``) | 00:01.881 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``) | 00:01.887 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)             | 00:01.226 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)             | 00:01.273 | 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 a7e979ccd3..f0379685e3 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:41.555** total execution time for **how_to_tune_with_autoscheduler** files:
+**03:31.301** 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:35.887 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)             | 01:32.957 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)           | 01:14.435 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)           | 01:10.518 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)             | 00:18.372 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)             | 00:17.136 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)           | 00:16.790 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)           | 00:15.776 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``) | 00:15.968 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``) | 00:14.817 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)               | 00:00.103 | 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 f85a2cf6db..0e85f4be45 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.347 ms
+    Execution time of this operator: 0.342 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 8119418b8f..7ce4f4e346 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.2692       3.2698       3.2720       3.2657       0.0026                  
+       3.2142       3.2197       3.2217       3.2013       0.0092                  
 
 
 
@@ -660,7 +660,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  14.435 seconds)
+   **Total running time of the script:** ( 1 minutes  10.518 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 143c805582..7c03357823 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)  
-      752.4303     751.9380     754.1139     751.2390      1.2242                  
+      697.4293     697.4747     698.1670     696.6462      0.6217                  
 
 
 
@@ -682,7 +682,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  35.887 seconds)
+   **Total running time of the script:** ( 1 minutes  32.957 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 8b4c97f6a4..e74d7f6673 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:23.846** total execution time for **how_to_tune_with_autotvm** files:
+**00:22.560** 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:23.808 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)           | 00:22.522 | 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 4323c59283..d25337ba5c 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.037075
+    Time cost of this operator: 0.036980
 
 
 
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 0090073cbf..f8fe173681 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  303.7     98.746   (1, 2, 10, 10, 3)  2       1        [303.7]           
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.886     0.938    (1, 6, 10, 10)     1       1        [2.886]           
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.97      0.315    (1, 1, 10, 10, 3)  1       1        [0.97]            
-    Total_time                                    -                                             307.556   -        -                  -       -        -                 
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  297.4     98.744   (1, 2, 10, 10, 3)  2       1        [297.4]           
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.851     0.946    (1, 6, 10, 10)     1       1        [2.851]           
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.932     0.309    (1, 1, 10, 10, 3)  1       1        [0.932]           
+    Total_time                                    -                                             301.182   -        -                  -       -        -                 
 
 
 
@@ -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  100.7     97.338   (1, 6, 10, 10, 1)  2       1        [100.7]           
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.791     1.731    (1, 6, 10, 10)     1       1        [1.791]           
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.963     0.931    (1, 1, 10, 10, 3)  1       1        [0.963]           
-    Total_time                                    -                                             103.453   -        -                  -       -        -                 
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  102.3     97.601   (1, 6, 10, 10, 1)  2       1        [102.3]           
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.699     1.621    (1, 6, 10, 10)     1       1        [1.699]           
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.816     0.779    (1, 3, 10, 10, 1)  1       1        [0.816]           
+    Total_time                                    -                                             104.815   -        -                  -       -        -                 
 
 
 
@@ -439,7 +439,7 @@ Timing the tuned program
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  28.704 seconds)
+   **Total running time of the script:** ( 1 minutes  23.590 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 e00b92e075..803c2c4f88 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, 15.1MB/s]     100%|##########| 3.42M/3.42M [00:00<00:00, 24.0MB/s]
+       0%|          | 0.00/3.42M [00:00<?, ?B/s]     100%|##########| 3.42M/3.42M [00:00<00:00, 62.5MB/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  29.886 seconds)
+   **Total running time of the script:** ( 1 minutes  26.126 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 a72eb1283a..b7573e5551 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/tmp_skqxz4v/images/random'
+    '/tmp/tmppr4cx8ou/images/random'
 
 
 
@@ -317,8 +317,8 @@ objects to other stuff? We can display some examples from our datasets using ``m
 
  .. code-block:: none
 
-    /tmp/tmp_skqxz4v/images/target contains 8144 images
-    /tmp/tmp_skqxz4v/images/random contains 5000 images
+    /tmp/tmppr4cx8ou/images/target contains 8144 images
+    /tmp/tmppr4cx8ou/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.2438 - accuracy: 0.9201 - val_loss: 0.1250 - val_accuracy: 0.9577 - 39s/epoch - 120ms/step
+    328/328 - 38s - loss: 0.2267 - accuracy: 0.9230 - val_loss: 0.1855 - val_accuracy: 0.9366 - 38s/epoch - 117ms/step
     Epoch 2/3
-    328/328 - 36s - loss: 0.1015 - accuracy: 0.9634 - val_loss: 0.1305 - val_accuracy: 0.9539 - 36s/epoch - 109ms/step
+    328/328 - 34s - loss: 0.0998 - accuracy: 0.9638 - val_loss: 0.0906 - val_accuracy: 0.9690 - 34s/epoch - 105ms/step
     Epoch 3/3
-    328/328 - 35s - loss: 0.0725 - accuracy: 0.9733 - val_loss: 0.1098 - val_accuracy: 0.9671 - 35s/epoch - 108ms/step
+    328/328 - 34s - loss: 0.0666 - accuracy: 0.9750 - val_loss: 0.0845 - val_accuracy: 0.9724 - 34s/epoch - 104ms/step
 
-    <keras.callbacks.History object at 0x7fa5e6acdfa0>
+    <keras.callbacks.History object at 0x7f79540e4fd0>
 
 
 
@@ -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  30.345 seconds)
+   **Total running time of the script:** ( 4 minutes  22.223 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 6622ed2f28..3281fb5737 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.813** total execution time for **how_to_work_with_microtvm** files:
+**07:39.825** 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:30.345 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_train.py` (``micro_train.py``)           | 04:22.223 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_pytorch.py` (``micro_pytorch.py``)       | 01:29.886 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_pytorch.py` (``micro_pytorch.py``)       | 01:26.126 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)     | 01:28.704 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)     | 01:23.590 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_aot.py` (``micro_aot.py``)               | 00:12.109 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_aot.py` (``micro_aot.py``)               | 00:11.669 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_custom_ide.py` (``micro_custom_ide.py``) | 00:09.092 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_custom_ide.py` (``micro_custom_ide.py``) | 00:08.494 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)         | 00:08.677 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)         | 00:07.723 | 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 8fbc816813..93ea7e6ecf 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:39.214** total execution time for **how_to_work_with_relay** files:
+**00:37.459** 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:33.441 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_pipeline_executor.py` (``using_pipeline_executor.py``) | 00:32.219 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)           | 00:03.181 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)           | 00:03.142 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)                             | 00:02.586 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)                             | 00:02.091 | 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 e0d8a9517d..99cae75b14 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 0x7fa7cb4e9c10>
+    <function my_cuda_math_rule at 0x7f79863d2ca0>
 
 
 
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 4821b0f95e..cea43a240b 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.425** total execution time for **how_to_work_with_schedules** files:
+**00:05.374** 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.540 | 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.155 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)                     | 00:01.200 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)                     | 00:00.723 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)                     | 00:00.706 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)                               | 00:00.712 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)                               | 00:00.696 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)                     | 00:00.124 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)                     | 00:00.117 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``) | 00:00.070 | 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.067 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)                               | 00:00.065 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tuple_inputs.py` (``tuple_inputs.py``)               | 00:00.033 | 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 119fbd716a..01f4e7ac60 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 27.56s!
+    yolov3-tiny inference graph built in 25.42s!
 
 
 
@@ -445,11 +445,6 @@ Download test image
 
 
 
-.. rst-class:: sphx-glr-timing
-
-   **Total running time of the script:** ( 1 minutes  0.819 seconds)
-
-
 .. _sphx_glr_download_topic_vta_tutorials_frontend_deploy_detection.py:
 
 .. only:: html
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 81e48bf539..8a86775ca1 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
 =================
-**01:00.819** total execution time for **topic_vta_tutorials_frontend** files:
+**00:58.090** total execution time for **topic_vta_tutorials_frontend** files:
 
 +--------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``) | 01:00.819 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``) | 00:58.090 | 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 24805e10de..4dccfcb907 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.298** total execution time for **topic_vta_tutorials_optimize** files:
+**00:03.241** total execution time for **topic_vta_tutorials_optimize** files:
 
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)         | 00:02.796 | 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.502 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``) | 00:00.503 | 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 0aaa218e27..3da2b7b144 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.823** total execution time for **topic_vta_tutorials** files:
+**00:00.812** total execution time for **topic_vta_tutorials** files:
 
 +---------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``) | 00:00.426 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``) | 00:00.419 | 0.0 MB |
 +---------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``) | 00:00.397 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``) | 00:00.393 | 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 6f3fc731d8..66abb0a15a 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: 99.151 ms
+    Execution time of this operator: 90.195 ms
 
 
 
@@ -434,7 +434,7 @@ operations.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  30.713 seconds)
+   **Total running time of the script:** ( 1 minutes  35.333 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 0916b8fba4..bbb69149ab 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: 10.41/10.41     result: MeasureResult(costs=(0.025783012799999998,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7133283615112305, timestamp=1710428058.8050907)       [('tile_y', [-1, 8]), ('tile_x', [-1, 32])],None,53
-    No: 2   GFLOPS: 3.66/10.41      result: MeasureResult(costs=(0.0733377566,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.4594275951385498, timestamp=1710428060.239424)        [('tile_y', [-1, 128]), ('tile_x', [-1, 8])],None,37
-    No: 3   GFLOPS: 11.40/11.40     result: MeasureResult(costs=(0.023547542799999998,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6373717784881592, timestamp=1710428060.8833928)       [('tile_y', [-1, 32]), ('tile_x', [-1, 512])],None,95
-    No: 4   GFLOPS: 3.77/11.40      result: MeasureResult(costs=(0.0712307158,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.4181365966796875, timestamp=1710428062.2823138)       [('tile_y', [-1, 32]), ('tile_x', [-1, 8])],None,35
-    No: 5   GFLOPS: 4.25/11.40      result: MeasureResult(costs=(0.0631641488,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.2777111530303955, timestamp=1710428063.71659) [('tile_y', [-1, 8]), ('tile_x', [-1, 2])],None,13
-    No: 6   GFLOPS: 1.82/11.40      result: MeasureResult(costs=(0.1478384416,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.6288440227508545, timestamp=1710428066.3469462)       [('tile_y', [-1, 512]), ('tile_x', [-1, 4])],None,29
-    No: 7   GFLOPS: 11.27/11.40     result: MeasureResult(costs=(0.0238164708,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6612265110015869, timestamp=1710428066.998447)        [('tile_y', [-1, 16]), ('tile_x', [-1, 256])],None,84
-    No: 8   GFLOPS: 13.84/13.84     result: MeasureResult(costs=(0.0193954366,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6070129871368408, timestamp=1710428067.565897)        [('tile_y', [-1, 128]), ('tile_x', [-1, 64])],None,67
-    No: 9   GFLOPS: 7.82/13.84      result: MeasureResult(costs=(0.0343247674,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7780187129974365, timestamp=1710428068.4676843)       [('tile_y', [-1, 2]), ('tile_x', [-1, 8])],None,31
-    No: 10  GFLOPS: 11.16/13.84     result: MeasureResult(costs=(0.0240623012,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6328125, timestamp=1710428069.1200666)        [('tile_y', [-1, 64]), ('tile_x', [-1, 256])],None,86
+    No: 1   GFLOPS: 9.60/9.60       result: MeasureResult(costs=(0.027957985,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7135622501373291, timestamp=1710431221.3997476)        [('tile_y', [-1, 512]), ('tile_x', [-1, 256])],None,89
+    No: 2   GFLOPS: 9.09/9.60       result: MeasureResult(costs=(0.029521072800000003,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7502226829528809, timestamp=1710431222.1324527)       [('tile_y', [-1, 256]), ('tile_x', [-1, 16])],None,48
+    No: 3   GFLOPS: 9.21/9.60       result: MeasureResult(costs=(0.0291572382,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7378547191619873, timestamp=1710431222.8550007)       [('tile_y', [-1, 128]), ('tile_x', [-1, 16])],None,47
+    No: 4   GFLOPS: 9.34/9.60       result: MeasureResult(costs=(0.028732575000000003,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7162327766418457, timestamp=1710431223.5714147)       [('tile_y', [-1, 2]), ('tile_x', [-1, 8])],None,31
+    No: 5   GFLOPS: 3.77/9.60       result: MeasureResult(costs=(0.0712892744,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.4098103046417236, timestamp=1710431225.1035652)       [('tile_y', [-1, 128]), ('tile_x', [-1, 8])],None,37
+    No: 6   GFLOPS: 1.05/9.60       result: MeasureResult(costs=(0.2544892934,), error_no=MeasureErrorNo.NO_ERROR, all_cost=4.335297107696533, timestamp=1710431229.4331484)        [('tile_y', [-1, 256]), ('tile_x', [-1, 2])],None,18
+    No: 7   GFLOPS: 14.42/14.42     result: MeasureResult(costs=(0.018617313,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.5614416599273682, timestamp=1710431229.9875531)        [('tile_y', [-1, 16]), ('tile_x', [-1, 32])],None,54
+    No: 8   GFLOPS: 9.27/14.42      result: MeasureResult(costs=(0.028953735799999998,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7447476387023926, timestamp=1710431230.7107005)       [('tile_y', [-1, 2]), ('tile_x', [-1, 16])],None,41
+    No: 9   GFLOPS: 12.16/14.42     result: MeasureResult(costs=(0.0220788874,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.5743553638458252, timestamp=1710431231.4006262)       [('tile_y', [-1, 32]), ('tile_x', [-1, 512])],None,95
+    No: 10  GFLOPS: 0.52/14.42      result: MeasureResult(costs=(0.5208609514,), error_no=MeasureErrorNo.NO_ERROR, all_cost=8.552812099456787, timestamp=1710431239.9924538)        [('tile_y', [-1, 32]), ('tile_x', [-1, 1])],None,5
 
 
 
diff --git a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
index 2761108726..f761953c51 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': 492.7868142000443, 'median': 492.8484993501115, 'std': 1.9170657177261499}
+    {'mean': 468.5562403299991, 'median': 468.7978457499412, 'std': 1.0656040483767621}
 
 
 
@@ -582,30 +582,30 @@ 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:   13.69/  23.05 GFLOPS | Progress: (4/20) | 8.02 s     [Task  1/25]  Current/Best:   11.87/  23.05 GFLOPS | Progress: (8/20) | 10.89 s     [Task  1/25]  Current/Best:   20.72/  23.05 GFLOPS | Progress: (12/20) | 13.95 s     [Task  1/25]  Current/Best:   19.77/  23.05 GFLOPS | Progress: (16/20) | 16.64 s     [Task  1/25]  Current/Best:   11.71/  23.05 GFLOPS | Progress: (20/20) | 19.44 s Done.
-     [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  2/25]  Current/Best:   11.46/  18.88 GFLOPS | Progress: (4/20) | 4.25 s     [Task  2/25]  Current/Best:   14.13/  20.04 GFLOPS | Progress: (8/20) | 5.88 s     [Task  2/25]  Current/Best:   15.52/  20.04 GFLOPS | Progress: (12/20) | 8.29 s     [Task  2/25]  Current/Best:   12.12/  20.04 GFLOPS | Progress: (16/20) | 9.83 s     [Task  2/25]  Current/Best:    8.97/  20.04 GFLOPS | Progress: (20/20) | 11.38 s Done.
-     [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  3/25]  Current/Best:    7.65/  21.64 GFLOPS | Progress: (4/20) | 4.82 s     [Task  3/25]  Current/Best:    6.22/  21.64 GFLOPS | Progress: (8/20) | 7.61 s     [Task  3/25]  Current/Best:    5.79/  21.64 GFLOPS | Progress: (12/20) | 10.44 s     [Task  3/25]  Current/Best:   11.60/  21.64 GFLOPS | Progress: (16/20) | 13.23 s     [Task  3/25]  Current/Best:    1.62/  21.83 GFLOPS | Progress: (20/20) | 16.63 s Done.
-     [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  4/25]  Current/Best:   15.77/  15.77 GFLOPS | Progress: (4/20) | 4.73 s     [Task  4/25]  Current/Best:   14.07/  15.94 GFLOPS | Progress: (8/20) | 13.17 s     [Task  4/25]  Current/Best:   12.31/  15.94 GFLOPS | Progress: (12/20) | 20.94 s     [Task  4/25]  Current/Best:   15.75/  17.55 GFLOPS | Progress: (16/20) | 25.82 s     [Task  4/25]  Current/Best:    6.01/  21.15 GFLOPS | Progress: (20/20) | 28.76 s Done.
-     [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  5/25]  Current/Best:   12.19/  13.39 GFLOPS | Progress: (4/20) | 5.91 s     [Task  5/25]  Current/Best:   13.46/  13.83 GFLOPS | Progress: (8/20) | 8.67 s     [Task  5/25]  Current/Best:    9.11/  16.33 GFLOPS | Progress: (12/20) | 10.49 s     [Task  5/25]  Current/Best:    3.38/  16.33 GFLOPS | Progress: (16/20) | 12.75 s     [Task  5/25]  Current/Best:   11.50/  16.33 GFLOPS | Progress: (20/20) | 15.54 s Done.
-     [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  6/25]  Current/Best:   10.17/  18.58 GFLOPS | Progress: (4/20) | 4.80 s     [Task  6/25]  Current/Best:   13.20/  18.58 GFLOPS | Progress: (8/20) | 7.02 s     [Task  6/25]  Current/Best:   14.97/  18.58 GFLOPS | Progress: (12/20) | 9.20 s     [Task  6/25]  Current/Best:    4.62/  18.74 GFLOPS | Progress: (16/20) | 11.92 s     [Task  6/25]  Current/Best:   16.94/  18.74 GFLOPS | Progress: (20/20) | 14.40 s Done.
-     [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  7/25]  Current/Best:   22.62/  22.62 GFLOPS | Progress: (4/20) | 6.12 s     [Task  7/25]  Current/Best:    5.16/  22.62 GFLOPS | Progress: (8/20) | 9.73 s     [Task  7/25]  Current/Best:   20.81/  22.62 GFLOPS | Progress: (12/20) | 13.37 s     [Task  7/25]  Current/Best:    6.20/  22.62 GFLOPS | Progress: (16/20) | 15.84 s     [Task  7/25]  Current/Best:   15.22/  22.62 GFLOPS | Progress: (20/20) | 18.53 s Done.
-     [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  8/25]  Current/Best:    5.17/  17.61 GFLOPS | Progress: (4/20) | 14.19 s     [Task  8/25]  Current/Best:   12.64/  17.61 GFLOPS | Progress: (8/20) | 20.90 s     [Task  8/25]  Current/Best:    2.84/  17.61 GFLOPS | Progress: (12/20) | 29.21 s     [Task  8/25]  Current/Best:    5.17/  17.61 GFLOPS | Progress: (16/20) | 38.56 s     [Task  8/25]  Current/Best:    2.48/  17.61 GFLOPS | Progress: (20/20) | 41.58 s     [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  9/25]  Current/Best:    9.28/  12.59 GFLOPS | Progress: (4/20) | 13.75 s     [Task  9/25]  Current/Best:    8.76/  17.00 GFLOPS | Progress: (8/20) | 21.04 s     [Task  9/25]  Current/Best:   10.41/  17.11 GFLOPS | Progress: (12/20) | 27.46 s     [Task  9/25]  Current/Best:   19.55/  19.55 GFLOPS | Progress: (16/20) | 29.17 s     [Task  9/25]  Current/Best:   17.12/  20.23 GFLOPS | Progress: (2
 0/20) | 30.80 s     [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 10/25]  Current/Best:   10.45/  15.34 GFLOPS | Progress: (4/20) | 5.60 s     [Task 10/25]  Current/Best:   15.18/  18.82 GFLOPS | Progress: (8/20) | 8.52 s     [Task 10/25]  Current/Best:    4.05/  18.82 GFLOPS | Progress: (12/20) | 10.98 s     [Task 10/25]  Current/Best:   14.21/  18.82 GFLOPS | Progress: (16/20) | 12.93 s     [Task 10/25]  Current/Best:   13.51/  18.82 GFLOPS | Progress: (20/20) | 14.93 s Done.
-     [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 11/25]  Current/Best:   12.35/  21.87 GFLOPS | Progress: (4/20) | 4.60 s     [Task 11/25]  Current/Best:   22.90/  23.54 GFLOPS | Progress: (8/20) | 6.78 s     [Task 11/25]  Current/Best:   19.13/  23.54 GFLOPS | Progress: (12/20) | 9.03 s     [Task 11/25]  Current/Best:   16.49/  23.54 GFLOPS | Progress: (16/20) | 11.89 s     [Task 11/25]  Current/Best:   13.99/  23.54 GFLOPS | Progress: (20/20) | 14.55 s Done.
-     [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 12/25]  Current/Best:    7.87/  14.74 GFLOPS | Progress: (4/20) | 5.34 s     [Task 12/25]  Current/Best:   13.96/  14.74 GFLOPS | Progress: (8/20) | 8.21 s     [Task 12/25]  Current/Best:    5.31/  20.59 GFLOPS | Progress: (12/20) | 11.42 s     [Task 12/25]  Current/Best:    1.59/  21.11 GFLOPS | Progress: (16/20) | 18.65 s     [Task 12/25]  Current/Best:    4.24/  21.11 GFLOPS | Progress: (20/20) | 22.48 s Done.
-     [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 13/25]  Current/Best:   10.99/  20.55 GFLOPS | Progress: (4/20) | 5.29 s     [Task 13/25]  Current/Best:   13.73/  20.55 GFLOPS | Progress: (8/20) | 9.01 s     [Task 13/25]  Current/Best:   15.66/  22.26 GFLOPS | Progress: (12/20) | 12.27 s     [Task 13/25]  Current/Best:    2.94/  22.26 GFLOPS | Progress: (16/20) | 16.83 s     [Task 13/25]  Current/Best:   19.90/  22.26 GFLOPS | Progress: (20/20) | 19.02 s Done.
-     [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 14/25]  Current/Best:    8.70/  15.38 GFLOPS | Progress: (4/20) | 8.64 s     [Task 14/25]  Current/Best:    1.60/  15.38 GFLOPS | Progress: (8/20) | 12.05 s     [Task 14/25]  Current/Best:   11.49/  15.38 GFLOPS | Progress: (12/20) | 16.86 s     [Task 14/25]  Current/Best:   18.43/  18.43 GFLOPS | Progress: (16/20) | 19.56 s     [Task 14/25]  Current/Best:    6.42/  18.43 GFLOPS | Progress: (20/20) | 23.72 s Done.
-     [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 15/25]  Current/Best:    3.77/  15.24 GFLOPS | Progress: (4/20) | 8.87 s     [Task 15/25]  Current/Best:    8.94/  15.24 GFLOPS | Progress: (8/20) | 11.25 s     [Task 15/25]  Current/Best:   19.73/  21.25 GFLOPS | Progress: (12/20) | 13.04 s     [Task 15/25]  Current/Best:    6.41/  21.25 GFLOPS | Progress: (16/20) | 24.37 s     [Task 15/25]  Current/Best:   15.41/  21.25 GFLOPS | Progress: (20/20) | 31.82 s Done.
-     [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 16/25]  Current/Best:   18.43/  18.43 GFLOPS | Progress: (4/20) | 5.37 s     [Task 16/25]  Current/Best:   17.46/  18.43 GFLOPS | Progress: (8/20) | 7.29 s Done.
+     [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  1/25]  Current/Best:    6.65/  17.67 GFLOPS | Progress: (4/20) | 9.46 s     [Task  1/25]  Current/Best:   16.59/  23.14 GFLOPS | Progress: (8/20) | 11.49 s     [Task  1/25]  Current/Best:   24.18/  24.76 GFLOPS | Progress: (12/20) | 13.31 s     [Task  1/25]  Current/Best:   11.43/  25.06 GFLOPS | Progress: (16/20) | 16.36 s     [Task  1/25]  Current/Best:   12.46/  25.06 GFLOPS | Progress: (20/20) | 22.46 s Done.
+     [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  2/25]  Current/Best:    8.02/  17.62 GFLOPS | Progress: (4/20) | 3.92 s     [Task  2/25]  Current/Best:   19.60/  19.60 GFLOPS | Progress: (8/20) | 5.37 s     [Task  2/25]  Current/Best:   14.03/  19.60 GFLOPS | Progress: (12/20) | 7.18 s     [Task  2/25]  Current/Best:   16.97/  19.60 GFLOPS | Progress: (16/20) | 8.69 s     [Task  2/25]  Current/Best:    6.86/  19.60 GFLOPS | Progress: (20/20) | 10.47 s Done.
+     [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  3/25]  Current/Best:    5.95/  21.38 GFLOPS | Progress: (4/20) | 4.85 s     [Task  3/25]  Current/Best:   11.36/  21.38 GFLOPS | Progress: (8/20) | 7.16 s     [Task  3/25]  Current/Best:    5.60/  21.38 GFLOPS | Progress: (12/20) | 10.03 s     [Task  3/25]  Current/Best:   22.47/  22.47 GFLOPS | Progress: (16/20) | 12.07 s     [Task  3/25]  Current/Best:   24.22/  24.22 GFLOPS | Progress: (20/20) | 14.23 s Done.
+     [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  4/25]  Current/Best:   12.72/  19.86 GFLOPS | Progress: (4/20) | 4.56 s     [Task  4/25]  Current/Best:    7.14/  20.17 GFLOPS | Progress: (8/20) | 6.60 s     [Task  4/25]  Current/Best:   16.16/  20.17 GFLOPS | Progress: (12/20) | 9.45 s     [Task  4/25]  Current/Best:   18.52/  20.17 GFLOPS | Progress: (16/20) | 11.21 s     [Task  4/25]  Current/Best:    6.21/  20.17 GFLOPS | Progress: (20/20) | 13.22 s Done.
+     [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  5/25]  Current/Best:   16.60/  19.62 GFLOPS | Progress: (4/20) | 4.48 s     [Task  5/25]  Current/Best:    9.19/  19.62 GFLOPS | Progress: (8/20) | 6.62 s     [Task  5/25]  Current/Best:    6.93/  19.62 GFLOPS | Progress: (12/20) | 8.53 s     [Task  5/25]  Current/Best:    9.63/  19.62 GFLOPS | Progress: (16/20) | 11.22 s     [Task  5/25]  Current/Best:   11.51/  22.35 GFLOPS | Progress: (20/20) | 13.19 s Done.
+     [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  6/25]  Current/Best:    1.73/  16.00 GFLOPS | Progress: (4/20) | 6.60 s     [Task  6/25]  Current/Best:   18.01/  18.01 GFLOPS | Progress: (8/20) | 9.16 s     [Task  6/25]  Current/Best:   14.66/  18.01 GFLOPS | Progress: (12/20) | 11.74 s     [Task  6/25]  Current/Best:   19.58/  23.17 GFLOPS | Progress: (16/20) | 15.22 s     [Task  6/25]  Current/Best:   13.14/  23.17 GFLOPS | Progress: (20/20) | 18.25 s Done.
+     [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  7/25]  Current/Best:    9.91/  14.25 GFLOPS | Progress: (4/20) | 5.59 s     [Task  7/25]  Current/Best:   21.08/  21.08 GFLOPS | Progress: (8/20) | 8.77 s     [Task  7/25]  Current/Best:   12.46/  21.08 GFLOPS | Progress: (12/20) | 11.66 s     [Task  7/25]  Current/Best:   15.54/  21.27 GFLOPS | Progress: (16/20) | 13.95 s     [Task  7/25]  Current/Best:   18.91/  21.27 GFLOPS | Progress: (20/20) | 16.17 s Done.
+     [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  8/25]  Current/Best:    2.42/  16.70 GFLOPS | Progress: (4/20) | 5.70 s     [Task  8/25]  Current/Best:   11.20/  16.70 GFLOPS | Progress: (8/20) | 14.89 s     [Task  8/25]  Current/Best:   13.61/  16.70 GFLOPS | Progress: (12/20) | 17.65 s     [Task  8/25]  Current/Best:    8.96/  16.70 GFLOPS | Progress: (16/20) | 29.18 s     [Task  8/25]  Current/Best:    7.54/  16.70 GFLOPS | Progress: (20/20) | 40.30 s     [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  9/25]  Current/Best:   11.46/  19.32 GFLOPS | Progress: (4/20) | 6.89 s     [Task  9/25]  Current/Best:    3.30/  19.32 GFLOPS | Progress: (8/20) | 8.88 s     [Task  9/25]  Current/Best:   22.17/  22.17 GFLOPS | Progress: (12/20) | 14.53 s     [Task  9/25]  Current/Best:   14.73/  22.17 GFLOPS | Progress: (16/20) | 20.03 s     [Task  9/25]  Current/Best:   13.84/  22.17 GFLOPS | Progress: (20/2
 0) | 24.29 s Done.
+     [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 10/25]  Current/Best:    5.88/  20.70 GFLOPS | Progress: (4/20) | 4.18 s     [Task 10/25]  Current/Best:    5.93/  20.70 GFLOPS | Progress: (8/20) | 8.19 s     [Task 10/25]  Current/Best:   17.80/  20.70 GFLOPS | Progress: (12/20) | 10.33 s     [Task 10/25]  Current/Best:   15.78/  20.70 GFLOPS | Progress: (16/20) | 12.17 s     [Task 10/25]  Current/Best:   18.45/  20.70 GFLOPS | Progress: (20/20) | 15.17 s Done.
+     [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 11/25]  Current/Best:   20.68/  22.03 GFLOPS | Progress: (4/20) | 4.58 s     [Task 11/25]  Current/Best:   15.03/  22.03 GFLOPS | Progress: (8/20) | 7.66 s     [Task 11/25]  Current/Best:   16.15/  23.22 GFLOPS | Progress: (12/20) | 10.00 s     [Task 11/25]  Current/Best:    9.86/  23.22 GFLOPS | Progress: (16/20) | 12.86 s     [Task 11/25]  Current/Best:   23.71/  23.71 GFLOPS | Progress: (20/20) | 14.91 s Done.
+     [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 12/25]  Current/Best:   17.30/  17.30 GFLOPS | Progress: (4/20) | 8.20 s     [Task 12/25]  Current/Best:   11.84/  17.30 GFLOPS | Progress: (8/20) | 11.89 s     [Task 12/25]  Current/Best:   13.02/  17.30 GFLOPS | Progress: (12/20) | 15.38 s     [Task 12/25]  Current/Best:   10.57/  17.30 GFLOPS | Progress: (16/20) | 17.55 s     [Task 12/25]  Current/Best:    4.27/  21.97 GFLOPS | Progress: (20/20) | 20.91 s Done.
+     [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 13/25]  Current/Best:   19.11/  19.11 GFLOPS | Progress: (4/20) | 5.30 s     [Task 13/25]  Current/Best:   20.63/  20.63 GFLOPS | Progress: (8/20) | 7.74 s     [Task 13/25]  Current/Best:    3.14/  20.63 GFLOPS | Progress: (12/20) | 10.86 s     [Task 13/25]  Current/Best:   10.06/  20.63 GFLOPS | Progress: (16/20) | 13.76 s     [Task 13/25]  Current/Best:   18.56/  20.63 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:   15.18/  20.06 GFLOPS | Progress: (4/20) | 4.69 s     [Task 14/25]  Current/Best:    3.19/  20.06 GFLOPS | Progress: (8/20) | 9.69 s     [Task 14/25]  Current/Best:   20.64/  20.64 GFLOPS | Progress: (12/20) | 21.15 s     [Task 14/25]  Current/Best:    7.29/  20.64 GFLOPS | Progress: (16/20) | 32.57 s     [Task 14/25]  Current/Best:    8.59/  20.64 GFLOPS | Progress: (20/20) | 37.65 s     [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 15/25]  Current/Best:   19.10/  23.97 GFLOPS | Progress: (4/20) | 6.40 s     [Task 15/25]  Current/Best:    9.25/  23.97 GFLOPS | Progress: (8/20) | 11.89 s     [Task 15/25]  Current/Best:    6.14/  23.97 GFLOPS | Progress: (12/20) | 18.69 s Done.
      Done.
-     [Task 16/25]  Current/Best:   12.34/  18.43 GFLOPS | Progress: (12/20) | 9.55 s     [Task 16/25]  Current/Best:    5.12/  18.43 GFLOPS | Progress: (16/20) | 12.56 s     [Task 16/25]  Current/Best:   17.15/  18.43 GFLOPS | Progress: (20/20) | 15.74 s Done.
-     [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 17/25]  Current/Best:   20.45/  20.45 GFLOPS | Progress: (4/20) | 6.06 s     [Task 17/25]  Current/Best:    8.54/  23.39 GFLOPS | Progress: (8/20) | 8.67 s     [Task 17/25]  Current/Best:   12.27/  23.39 GFLOPS | Progress: (12/20) | 11.13 s     [Task 17/25]  Current/Best:    4.80/  23.39 GFLOPS | Progress: (16/20) | 14.37 s     [Task 17/25]  Current/Best:    8.79/  23.39 GFLOPS | Progress: (20/20) | 17.03 s Done.
-     [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 18/25]  Current/Best:   12.11/  19.59 GFLOPS | Progress: (4/20) | 4.98 s     [Task 18/25]  Current/Best:    7.60/  19.59 GFLOPS | Progress: (8/20) | 9.61 s     [Task 18/25]  Current/Best:   13.06/  21.46 GFLOPS | Progress: (12/20) | 11.62 s     [Task 18/25]  Current/Best:   16.23/  21.46 GFLOPS | Progress: (16/20) | 13.78 s     [Task 18/25]  Current/Best:   11.02/  21.46 GFLOPS | Progress: (20/20) | 18.49 s Done.
-     [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 19/25]  Current/Best:   18.89/  18.89 GFLOPS | Progress: (4/20) | 6.61 s     [Task 19/25]  Current/Best:   13.64/  22.62 GFLOPS | Progress: (8/20) | 10.77 s     [Task 19/25]  Current/Best:   17.69/  22.62 GFLOPS | Progress: (12/20) | 13.52 s     [Task 19/25]  Current/Best:   20.37/  22.62 GFLOPS | Progress: (16/20) | 16.34 s     [Task 19/25]  Current/Best:    4.92/  22.62 GFLOPS | Progress: (20/20) | 19.57 s Done.
-     [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 20/25]  Current/Best:   13.94/  18.87 GFLOPS | Progress: (4/20) | 13.95 s     [Task 20/25]  Current/Best:    8.03/  20.43 GFLOPS | Progress: (8/20) | 17.67 s     [Task 20/25]  Current/Best:   10.25/  20.43 GFLOPS | Progress: (12/20) | 29.12 s     [Task 20/25]  Current/Best:   15.13/  20.43 GFLOPS | Progress: (16/20) | 36.26 s     [Task 20/25]  Current/Best:   18.24/  20.43 GFLOPS | Progress: (20/20) | 47.71 s     [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 21/25]  Current/Best:   12.55/  12.55 GFLOPS | Progress: (4/20) | 9.76 s     [Task 21/25]  Current/Best:    2.71/  18.78 GFLOPS | Progress: (8/20) | 12.30 s     [Task 21/25]  Current/Best:    6.10/  18.78 GFLOPS | Progress: (12/20) | 23.56 s     [Task 21/25]  Current/Best:   10.03/  18.78 GFLOPS | Progress: (16/20) | 29.56 s     [Task 21/25]  Current/Best:    9.26/  18.78 GFLOPS | Progress: (20
 /20) | 40.75 s     [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 22/25]  Current/Best:   10.63/  17.15 GFLOPS | Progress: (4/20) | 5.48 s Done.
-     Done.
-     [Task 22/25]  Current/Best:    9.47/  17.15 GFLOPS | Progress: (8/20) | 8.16 s     [Task 22/25]  Current/Best:    6.18/  17.15 GFLOPS | Progress: (12/20) | 9.90 s     [Task 22/25]  Current/Best:   12.56/  19.35 GFLOPS | Progress: (16/20) | 13.48 s     [Task 22/25]  Current/Best:   22.24/  22.24 GFLOPS | Progress: (20/20) | 15.60 s Done.
-     [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 23/25]  Current/Best:   21.17/  22.20 GFLOPS | Progress: (4/20) | 8.40 s     [Task 23/25]  Current/Best:   12.15/  23.57 GFLOPS | Progress: (8/20) | 13.95 s     [Task 23/25]  Current/Best:   23.06/  23.57 GFLOPS | Progress: (12/20) | 18.03 s     [Task 23/25]  Current/Best:   11.37/  23.57 GFLOPS | Progress: (16/20) | 21.73 s     [Task 23/25]  Current/Best:   11.40/  23.57 GFLOPS | Progress: (20/20) | 25.05 s Done.
-     [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 24/25]  Current/Best:    3.65/   3.65 GFLOPS | Progress: (4/20) | 13.64 s     [Task 24/25]  Current/Best:    1.82/   5.21 GFLOPS | Progress: (8/20) | 22.67 s     [Task 24/25]  Current/Best:    3.34/   8.75 GFLOPS | Progress: (12/20) | 27.98 s     [Task 24/25]  Current/Best:    0.00/   8.75 GFLOPS | Progress: (16/20) | 38.08 s     [Task 24/25]  Current/Best:    3.23/   8.75 GFLOPS | Progress: (20/20) | 50.71 s     [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 25/25]  Current/Best:    4.18/   8.72 GFLOPS | Progress: (4/20) | 5.09 s     [Task 25/25]  Current/Best:    4.11/   9.49 GFLOPS | Progress: (8/20) | 10.59 s     [Task 25/25]  Current/Best:    1.55/   9.58 GFLOPS | Progress: (12/20) | 14.00 s     [Task 25/25]  Current/Best:    2.92/   9.58 GFLOPS | Progress: (16/20) | 23.49 s     [Task 25/25]  Current/Best:    1.50/   9.58 GFLOPS | Progress: (20
 /20) | 34.46 s
+     [Task 15/25]  Current/Best:   13.60/  23.97 GFLOPS | Progress: (16/20) | 29.80 s     [Task 15/25]  Current/Best:   16.60/  23.97 GFLOPS | Progress: (20/20) | 32.60 s     [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 16/25]  Current/Best:    8.17/  13.64 GFLOPS | Progress: (4/20) | 6.03 s     [Task 16/25]  Current/Best:   11.13/  17.20 GFLOPS | Progress: (8/20) | 9.75 s     [Task 16/25]  Current/Best:   12.03/  21.45 GFLOPS | Progress: (12/20) | 11.72 s     [Task 16/25]  Current/Best:   19.28/  21.45 GFLOPS | Progress: (16/20) | 13.55 s     [Task 16/25]  Current/Best:   11.73/  21.45 GFLOPS | Progress: (20/20) | 17.57 s Done.
+     [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 17/25]  Current/Best:   20.94/  21.86 GFLOPS | Progress: (4/20) | 6.40 s     [Task 17/25]  Current/Best:    8.65/  22.08 GFLOPS | Progress: (8/20) | 9.26 s     [Task 17/25]  Current/Best:   21.15/  23.22 GFLOPS | Progress: (12/20) | 11.50 s     [Task 17/25]  Current/Best:    9.16/  23.22 GFLOPS | Progress: (16/20) | 14.08 s     [Task 17/25]  Current/Best:   21.15/  23.22 GFLOPS | Progress: (20/20) | 18.04 s Done.
+     [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 18/25]  Current/Best:   12.11/  17.48 GFLOPS | Progress: (4/20) | 6.51 s     [Task 18/25]  Current/Best:   19.46/  19.46 GFLOPS | Progress: (8/20) | 10.67 s     [Task 18/25]  Current/Best:   19.17/  19.85 GFLOPS | Progress: (12/20) | 12.65 s     [Task 18/25]  Current/Best:   10.41/  19.85 GFLOPS | Progress: (16/20) | 15.04 s     [Task 18/25]  Current/Best:   18.71/  21.38 GFLOPS | Progress: (20/20) | 16.96 s Done.
+     [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 19/25]  Current/Best:    7.36/  18.38 GFLOPS | Progress: (4/20) | 5.08 s     [Task 19/25]  Current/Best:    9.59/  22.96 GFLOPS | Progress: (8/20) | 8.03 s     [Task 19/25]  Current/Best:    8.46/  22.96 GFLOPS | Progress: (12/20) | 12.45 s     [Task 19/25]  Current/Best:   12.38/  22.96 GFLOPS | Progress: (16/20) | 16.97 s     [Task 19/25]  Current/Best:    6.36/  22.99 GFLOPS | Progress: (20/20) | 19.72 s Done.
+     [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 20/25]  Current/Best:   14.74/  14.74 GFLOPS | Progress: (4/20) | 10.36 s     [Task 20/25]  Current/Best:    6.08/  14.74 GFLOPS | Progress: (8/20) | 14.86 s     [Task 20/25]  Current/Best:    6.63/  16.91 GFLOPS | Progress: (12/20) | 17.20 s     [Task 20/25]  Current/Best:   15.89/  21.85 GFLOPS | Progress: (16/20) | 19.34 s     [Task 20/25]  Current/Best:   19.88/  21.85 GFLOPS | Progress: (20/20) | 21.98 s Done.
+     [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 21/25]  Current/Best:   21.90/  21.90 GFLOPS | Progress: (4/20) | 4.11 s     [Task 21/25]  Current/Best:   18.47/  21.90 GFLOPS | Progress: (8/20) | 10.21 s     [Task 21/25]  Current/Best:    6.28/  21.90 GFLOPS | Progress: (12/20) | 21.65 s     [Task 21/25]  Current/Best:    5.48/  21.90 GFLOPS | Progress: (16/20) | 32.88 s     [Task 21/25]  Current/Best:   12.24/  21.90 GFLOPS | Progress: (20/20) | 44.13 s     [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 22/25]  Current/Best:   16.80/  21.21 GFLOPS | Progress: (4/20) | 5.53 s     [Task 22/25]  Current/Best:    2.70/  21.21 GFLOPS | Progress: (8/20) | 8.67 s     [Task 22/25]  Current/Best:    7.21/  21.21 GFLOPS | Progress: (12/20) | 10.70 s     [Task 22/25]  Current/Best:   19.96/  21.89 GFLOPS | Progress: (16/20) | 14.07 s     [Task 22/25]  Current/Best:    6.95/  21.89 GFLOPS | Progress: (20/2
 0) | 17.28 s Done.
+     [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 23/25]  Current/Best:   18.25/  22.31 GFLOPS | Progress: (4/20) | 5.82 s     [Task 23/25]  Current/Best:   18.93/  22.31 GFLOPS | Progress: (8/20) | 8.22 s     [Task 23/25]  Current/Best:   20.55/  22.31 GFLOPS | Progress: (12/20) | 11.17 s     [Task 23/25]  Current/Best:    5.24/  22.31 GFLOPS | Progress: (16/20) | 14.27 s     [Task 23/25]  Current/Best:   10.91/  22.57 GFLOPS | Progress: (20/20) | 17.14 s Done.
+     [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 24/25]  Current/Best:    2.16/   4.60 GFLOPS | Progress: (4/20) | 13.29 s     [Task 24/25]  Current/Best:    3.38/   4.60 GFLOPS | Progress: (8/20) | 24.42 s     [Task 24/25]  Current/Best:    1.86/   5.42 GFLOPS | Progress: (12/20) | 31.89 s Done.
+     [Task 24/25]  Current/Best:    8.58/   9.44 GFLOPS | Progress: (16/20) | 42.89 s     [Task 24/25]  Current/Best:    1.21/   9.44 GFLOPS | Progress: (20/20) | 46.94 s     [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 25/25]  Current/Best:    1.60/   7.70 GFLOPS | Progress: (4/20) | 6.73 s     [Task 25/25]  Current/Best:    5.23/   7.70 GFLOPS | Progress: (8/20) | 13.09 s     [Task 25/25]  Current/Best:    5.73/   7.71 GFLOPS | Progress: (12/20) | 17.66 s     [Task 25/25]  Current/Best:    3.08/   7.71 GFLOPS | Progress: (16/20) | 24.42 s     [Task 25/25]  Current/Best:    2.96/   8.60 GFLOPS | Progress: (20/20) | 26.18 s Done.
+
 
 
 
@@ -708,8 +708,8 @@ Verify that the optimized model runs and produces the same results:
 
  .. code-block:: none
 
-    class='n02123045 tabby, tabby cat' with probability=0.621103
-    class='n02123159 tiger cat' with probability=0.356379
+    class='n02123045 tabby, tabby cat' with probability=0.621104
+    class='n02123159 tiger cat' with probability=0.356378
     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 +766,8 @@ improvement in comparing the optimized model to the unoptimized model.
 
  .. code-block:: none
 
-    optimized: {'mean': 417.58955829001934, 'median': 418.62090955000895, 'std': 4.792962262678333}
-    unoptimized: {'mean': 492.7868142000443, 'median': 492.8484993501115, 'std': 1.9170657177261499}
+    optimized: {'mean': 386.0493829400366, 'median': 385.8367179000197, 'std': 0.7594328219139901}
+    unoptimized: {'mean': 468.5562403299991, 'median': 468.7978457499412, 'std': 1.0656040483767621}
 
 
 
@@ -790,7 +790,7 @@ profiling/benchmarking.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 14 minutes  23.982 seconds)
+   **Total running time of the script:** ( 13 minutes  21.426 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 d0656161cd..b18ced42b7 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.111e-07 secs/op
+    1.127e-07 secs/op
 
 
 
diff --git a/docs/_sources/tutorial/intro_topi.rst.txt b/docs/_sources/tutorial/intro_topi.rst.txt
index 2f8bafac3d..8c033e9c82 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, 0x13d30830)), stage(b, placeholder(b, 0x1428db40)), 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, 0x17e10980)), stage(b, placeholder(b, 0x28f931f0)), 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 8f2d5d73bf..fb839765b4 100644
--- a/docs/_sources/tutorial/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorial/sg_execution_times.rst.txt
@@ -5,32 +5,32 @@
 
 Computation times
 =================
-**17:57.586** total execution time for **tutorial** files:
+**17:04.258** total execution time for **tutorial** files:
 
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)                 | 14:23.982 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)                 | 13:21.426 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``) | 01:30.713 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``) | 01:35.333 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)     | 00:59.844 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)     | 00:57.663 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)                 | 00:43.960 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)                 | 00:42.592 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)               | 00:17.072 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)               | 00:25.256 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)                               | 00:00.912 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)       | 00:00.915 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)       | 00:00.902 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)                               | 00:00.881 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``) | 00:00.200 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``) | 00:00.193 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_tutorial_uma.py` (``uma.py``)                                             | 00:00.000 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tvmc_python.py` (``tvmc_python.py``)                             | 00:00.000 | 0.0 MB |
-+------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_tutorial_tvmc_command_line_driver.py` (``tvmc_command_line_driver.py``)   | 00:00.000 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_introduction.py` (``introduction.py``)                           | 00:00.000 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tvmc_python.py` (``tvmc_python.py``)                             | 00:00.000 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_tutorial_install.py` (``install.py``)                                     | 00:00.000 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
+| :ref:`sphx_glr_tutorial_introduction.py` (``introduction.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 1efee8f455..b0fb5d4f43 100644
--- a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
+++ b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
@@ -285,8 +285,8 @@ helper function to run a profile of the TVM generated code.
 
  .. code-block:: none
 
-    Numpy running time: 0.000008
-    naive: 0.000007
+    Numpy running time: 0.000006
+    naive: 0.000006
 
 
 
@@ -389,7 +389,7 @@ compile and run this new schedule with the parallel operation applied:
 
  .. code-block:: none
 
-    parallel: 0.000007
+    parallel: 0.000006
 
 
 
@@ -444,7 +444,7 @@ factor to be the number of threads on your CPU.
 
  .. code-block:: none
 
-    vector: 0.000039
+    vector: 0.000069
     # 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    8.08436998340767e-06                     1.0
-                   naive    6.786300000000001e-06     0.8394346144385002
-                parallel    7.055699999999999e-06     0.8727581758975766
-                  vector    3.9477800000000003e-05     4.883225295356854
+                   numpy    5.940989940427243e-06                    1.0
+                   naive               5.652e-06      0.9513566016227827
+                parallel              5.8713e-06      0.9882696417388258
+                  vector             6.91868e-05      11.645668599638205
 
 
 
@@ -922,7 +922,7 @@ matrix multiplication.
 
  .. code-block:: none
 
-    Numpy running time: 0.018259
+    Numpy running time: 0.014359
 
 
 
@@ -980,7 +980,7 @@ optimizations.
 
  .. code-block:: none
 
-    none: 3.404079
+    none: 3.297247
 
 
 
@@ -1080,7 +1080,7 @@ schedule.
 
  .. code-block:: none
 
-    blocking: 0.288200
+    blocking: 0.288894
 
 
 
@@ -1164,7 +1164,7 @@ already cache friendly from our previous optimizations.
 
  .. code-block:: none
 
-    vectorization: 0.268069
+    vectorization: 0.270508
     # 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.115759
+    loop permutation: 0.113100
     # 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.106179
+    array packing: 0.103120
     # 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.111667
+    block caching: 0.094080
     # 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.132541
+    parallelization: 0.111643
     # 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.4040794591                     1.0
-                blocking     0.28820032809999996     0.08466321998729044
-           vectorization            0.2680685773     0.07874921267874113
-        loop permutation            0.1157593124    0.034006054732519504
-           array packing     0.10617865600000001    0.031191591522975917
-           block caching     0.11166725389999999     0.03280395044877229
-         parallelization             0.132540652     0.03893582790662655
+                    none             3.297247265                     1.0
+                blocking             0.288893789     0.08761665892230257
+           vectorization            0.2705082592     0.08204063494764927
+        loop permutation            0.1131004441    0.034301474839497664
+           array packing             0.103119966     0.03127456260093372
+           block caching            0.0940799037     0.02853286276059736
+         parallelization     0.11164339270000001     0.03385957549653165
 
 
 
diff --git a/docs/commit_hash b/docs/commit_hash
index e9964e7293..9daa93a0b6 100644
--- a/docs/commit_hash
+++ b/docs/commit_hash
@@ -1 +1 @@
-695f958bc9ef40e625a84ad9355df2e75e6498a0
+af0c038f2ec36d1762e7f500bb000d945b01e326
diff --git a/docs/how_to/compile_models/from_darknet.html b/docs/how_to/compile_models/from_darknet.html
index 42b52d9994..c16a2d488a 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  34.154 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  29.472 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 ebd63a5aa8..0e8b289428 100644
--- a/docs/how_to/compile_models/from_oneflow.html
+++ b/docs/how_to/compile_models/from_oneflow.html
@@ -468,12 +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]
- 16%|#6        | 6.81M/41.5M [00:00&lt;00:00, 71.4MB/s]
- 35%|###4      | 14.3M/41.5M [00:00&lt;00:00, 50.5MB/s]
- 47%|####7     | 19.5M/41.5M [00:00&lt;00:00, 43.2MB/s]
- 58%|#####7    | 24.0M/41.5M [00:00&lt;00:00, 32.9MB/s]
- 77%|#######7  | 32.0M/41.5M [00:00&lt;00:00, 41.8MB/s]
-100%|##########| 41.5M/41.5M [00:00&lt;00:00, 50.6MB/s]
+ 15%|#5        | 6.33M/41.5M [00:00&lt;00:00, 40.6MB/s]
+ 39%|###8      | 16.0M/41.5M [00:00&lt;00:00, 51.9MB/s]
+ 54%|#####3    | 22.3M/41.5M [00:00&lt;00:00, 44.8MB/s]
+ 64%|######4   | 26.6M/41.5M [00:00&lt;00:00, 44.0MB/s]
+ 76%|#######6  | 31.7M/41.5M [00:00&lt;00:00, 40.8MB/s]
+ 86%|########5 | 35.6M/41.5M [00:00&lt;00:00, 39.6MB/s]
+ 95%|#########4| 39.4M/41.5M [00:01&lt;00:00, 35.8MB/s]
+100%|##########| 41.5M/41.5M [00:01&lt;00:00, 40.7MB/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 750071290a..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  1.598 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 f64116bf5e..78c2ddc306 100644
--- a/docs/how_to/compile_models/from_pytorch.html
+++ b/docs/how_to/compile_models/from_pytorch.html
@@ -451,12 +451,12 @@ 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, 46.3MB/s]
- 36%|###5      | 16.0M/44.7M [00:00&lt;00:00, 51.8MB/s]
- 57%|#####7    | 25.6M/44.7M [00:00&lt;00:00, 68.4MB/s]
- 79%|#######9  | 35.4M/44.7M [00:00&lt;00:00, 79.9MB/s]
- 98%|#########7| 43.6M/44.7M [00:00&lt;00:00, 71.1MB/s]
-100%|##########| 44.7M/44.7M [00:00&lt;00:00, 68.8MB/s]
+ 18%|#7        | 7.99M/44.7M [00:00&lt;00:00, 42.7MB/s]
+ 36%|###5      | 16.0M/44.7M [00:00&lt;00:00, 47.9MB/s]
+ 54%|#####3    | 24.0M/44.7M [00:00&lt;00:00, 54.1MB/s]
+ 72%|#######1  | 32.0M/44.7M [00:00&lt;00:00, 51.4MB/s]
+ 89%|########9 | 39.8M/44.7M [00:00&lt;00:00, 59.2MB/s]
+100%|##########| 44.7M/44.7M [00:00&lt;00:00, 54.6MB/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 bd24d706c2..df90cf9d99 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  30.723 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  31.224 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 7ed27964d2..ce9e61adae 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:37.652</strong> total execution time for <strong>how_to_compile_models</strong> files:</p>
+<p><strong>06:30.432</strong> total execution time for <strong>how_to_compile_models</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 81%" />
@@ -368,40 +368,40 @@
 <col style="width: 8%" />
 </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:34.154</p></td>
+<tr class="row-odd"><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:31.224</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:30.723</p></td>
+<tr class="row-even"><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:29.472</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:01.598</p></td>
+<td><p>00:59.862</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:43.153</p></td>
+<td><p>00:42.015</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:38.519</p></td>
+<td><p>00:38.256</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:28.642</p></td>
+<td><p>00:28.265</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:26.023</p></td>
+<td><p>00:27.096</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:11.947</p></td>
+<td><p>00:11.341</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.893</p></td>
+<td><p>00:02.902</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 b6052329ae..6e5d55c3d6 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.7029    4124.5789    4128.6193    4122.3356      2.1209
+ 3992.6474    3991.3611    3996.7648    3989.7515      2.5227
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  19.848 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  17.285 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 6f8dada607..f8cdfa929e 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,24 +458,23 @@ 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
- 13262848/102967424 [==&gt;...........................] - ETA: 0s
- 18292736/102967424 [====&gt;.........................] - ETA: 0s
- 23207936/102967424 [=====&gt;........................] - ETA: 0s
- 28237824/102967424 [=======&gt;......................] - ETA: 0s
- 33267712/102967424 [========&gt;.....................] - ETA: 0s
- 38322176/102967424 [==========&gt;...................] - ETA: 0s
- 43335680/102967424 [===========&gt;..................] - ETA: 0s
- 48439296/102967424 [=============&gt;................] - ETA: 0s
- 53379072/102967424 [==============&gt;...............] - ETA: 0s
- 58425344/102967424 [================&gt;.............] - ETA: 0s
- 63062016/102967424 [=================&gt;............] - ETA: 0s
- 67665920/102967424 [==================&gt;...........] - ETA: 0s
- 73605120/102967424 [====================&gt;.........] - ETA: 0s
- 78635008/102967424 [=====================&gt;........] - ETA: 0s
- 83656704/102967424 [=======================&gt;......] - ETA: 0s
- 88727552/102967424 [========================&gt;.....] - ETA: 0s
+  6848512/102967424 [&gt;.............................] - ETA: 0s
+ 11993088/102967424 [==&gt;...........................] - ETA: 0s
+ 16769024/102967424 [===&gt;..........................] - ETA: 0s
+ 21708800/102967424 [=====&gt;........................] - ETA: 0s
+ 25157632/102967424 [======&gt;.......................] - ETA: 0s
+ 34250752/102967424 [========&gt;.....................] - ETA: 0s
+ 41934848/102967424 [===========&gt;..................] - ETA: 0s
+ 50282496/102967424 [=============&gt;................] - ETA: 0s
+ 54870016/102967424 [==============&gt;...............] - ETA: 0s
+ 58712064/102967424 [================&gt;.............] - ETA: 0s
+ 66338816/102967424 [==================&gt;...........] - ETA: 0s
+ 71352320/102967424 [===================&gt;..........] - ETA: 0s
+ 75489280/102967424 [====================&gt;.........] - ETA: 0s
+ 83263488/102967424 [=======================&gt;......] - ETA: 0s
+ 88260608/102967424 [========================&gt;.....] - ETA: 0s
  92266496/102967424 [=========================&gt;....] - ETA: 0s
- 99827712/102967424 [============================&gt;.] - ETA: 0s
+100737024/102967424 [============================&gt;.] - ETA: 0s
 102967424/102967424 [==============================] - 1s 0us/step
 </pre></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 8df4df44b4..858b600c9e 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)
-  15.0039      14.7363      16.5908      14.5437       0.6138
+  14.9459      15.1243      15.4440      14.3112       0.4217
 </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 4a35c78069..241a481f0f 100644
--- a/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
+++ b/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
@@ -474,36 +474,34 @@ 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]
-  4%|3         | 6.30M/170M [00:00&lt;00:04, 36.7MB/s]
-  6%|5         | 9.81M/170M [00:00&lt;00:06, 28.0MB/s]
-  8%|8         | 14.3M/170M [00:00&lt;00:06, 26.0MB/s]
- 13%|#3        | 22.3M/170M [00:00&lt;00:05, 28.8MB/s]
- 15%|#4        | 25.0M/170M [00:00&lt;00:05, 28.7MB/s]
- 19%|#8        | 32.0M/170M [00:01&lt;00:04, 35.8MB/s]
- 24%|##3       | 40.0M/170M [00:01&lt;00:03, 40.9MB/s]
- 28%|##8       | 48.0M/170M [00:01&lt;00:02, 48.3MB/s]
- 33%|###2      | 56.0M/170M [00:01&lt;00:02, 53.9MB/s]
- 37%|###6      | 62.8M/170M [00:01&lt;00:01, 58.1MB/s]
- 40%|####      | 68.6M/170M [00:01&lt;00:02, 46.6MB/s]
- 43%|####3     | 73.5M/170M [00:01&lt;00:02, 43.2MB/s]
- 47%|####7     | 80.1M/170M [00:02&lt;00:01, 49.0MB/s]
- 51%|#####     | 86.3M/170M [00:02&lt;00:01, 45.8MB/s]
- 54%|#####3    | 91.0M/170M [00:02&lt;00:01, 45.9MB/s]
- 56%|#####6    | 95.6M/170M [00:02&lt;00:01, 41.7MB/s]
- 59%|#####8    | 99.8M/170M [00:02&lt;00:01, 38.0MB/s]
- 61%|######1   | 104M/170M [00:02&lt;00:01, 37.5MB/s]
- 66%|######5   | 112M/170M [00:02&lt;00:01, 44.1MB/s]
- 70%|######9   | 118M/170M [00:03&lt;00:01, 38.7MB/s]
- 72%|#######1  | 122M/170M [00:03&lt;00:01, 30.8MB/s]
- 75%|#######5  | 128M/170M [00:03&lt;00:01, 35.0MB/s]
- 79%|#######9  | 134M/170M [00:03&lt;00:01, 36.6MB/s]
- 81%|########1 | 138M/170M [00:03&lt;00:01, 32.8MB/s]
- 85%|########4 | 144M/170M [00:03&lt;00:00, 36.2MB/s]
- 89%|########9 | 152M/170M [00:04&lt;00:00, 40.4MB/s]
- 93%|#########3| 158M/170M [00:04&lt;00:00, 30.6MB/s]
- 95%|#########5| 162M/170M [00:04&lt;00:00, 27.9MB/s]
- 98%|#########7| 166M/170M [00:04&lt;00:00, 27.6MB/s]
-100%|##########| 170M/170M [00:04&lt;00:00, 37.0MB/s]
+  5%|4         | 7.99M/170M [00:00&lt;00:04, 40.8MB/s]
+  8%|8         | 14.3M/170M [00:00&lt;00:04, 39.3MB/s]
+ 11%|#         | 18.0M/170M [00:00&lt;00:04, 37.6MB/s]
+ 13%|#3        | 22.3M/170M [00:00&lt;00:03, 39.5MB/s]
+ 15%|#5        | 26.1M/170M [00:00&lt;00:04, 31.7MB/s]
+ 19%|#8        | 32.0M/170M [00:00&lt;00:04, 33.0MB/s]
+ 24%|##3       | 40.0M/170M [00:01&lt;00:03, 41.8MB/s]
+ 28%|##8       | 48.0M/170M [00:01&lt;00:02, 42.7MB/s]
+ 33%|###2      | 56.0M/170M [00:01&lt;00:02, 43.7MB/s]
+ 38%|###7      | 64.0M/170M [00:01&lt;00:02, 48.7MB/s]
+ 42%|####2     | 72.0M/170M [00:01&lt;00:01, 54.2MB/s]
+ 46%|####6     | 78.3M/170M [00:01&lt;00:01, 50.4MB/s]
+ 49%|####9     | 83.3M/170M [00:02&lt;00:01, 46.0MB/s]
+ 52%|#####1    | 88.0M/170M [00:02&lt;00:02, 39.4MB/s]
+ 56%|#####5    | 94.3M/170M [00:02&lt;00:01, 41.7MB/s]
+ 58%|#####7    | 98.4M/170M [00:02&lt;00:01, 41.6MB/s]
+ 60%|######    | 102M/170M [00:02&lt;00:01, 40.7MB/s]
+ 64%|######4   | 109M/170M [00:02&lt;00:01, 46.9MB/s]
+ 69%|######9   | 118M/170M [00:02&lt;00:00, 59.5MB/s]
+ 73%|#######2  | 124M/170M [00:02&lt;00:00, 54.4MB/s]
+ 76%|#######6  | 129M/170M [00:03&lt;00:00, 46.8MB/s]
+ 80%|########  | 136M/170M [00:03&lt;00:00, 47.6MB/s]
+ 85%|########4 | 144M/170M [00:03&lt;00:00, 54.3MB/s]
+ 88%|########8 | 150M/170M [00:03&lt;00:00, 52.9MB/s]
+ 92%|#########1| 156M/170M [00:03&lt;00:00, 44.3MB/s]
+ 94%|#########4| 160M/170M [00:03&lt;00:00, 39.2MB/s]
+ 98%|#########7| 166M/170M [00:03&lt;00:00, 44.2MB/s]
+100%|##########| 170M/170M [00:03&lt;00:00, 45.0MB/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).
@@ -594,7 +592,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  37.357 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 3 minutes  29.335 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 4d4e1fa3b1..a6faff1e73 100644
--- a/docs/how_to/deploy_models/deploy_prequantized.html
+++ b/docs/how_to/deploy_models/deploy_prequantized.html
@@ -515,8 +515,9 @@ 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]
- 59%|#####8    | 7.99M/13.6M [00:00&lt;00:00, 46.9MB/s]
-100%|##########| 13.6M/13.6M [00:00&lt;00:00, 61.8MB/s]
+ 47%|####6     | 6.30M/13.6M [00:00&lt;00:00, 54.0MB/s]
+ 85%|########4 | 11.5M/13.6M [00:00&lt;00:00, 46.7MB/s]
+100%|##########| 13.6M/13.6M [00:00&lt;00:00, 38.0MB/s]
 </pre></div>
 </div>
 </div>
@@ -607,7 +608,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.0429      88.9742      90.2476      88.6331       0.2999
+  86.1133      86.0656      87.4021      85.8987       0.2173
 </pre></div>
 </div>
 <div class="admonition note">
@@ -646,7 +647,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  29.579 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  28.360 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 070364c289..15f7fa6fcd 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)
-  108.8283     108.8078     109.5526     107.9958      0.3328
+  107.1559     106.9932     120.7226     106.4474      1.3934
 </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 04fdd03e84..af264e7998 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>09:57.281</strong> total execution time for <strong>how_to_deploy_models</strong> files:</p>
+<p><strong>09:41.198</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:37.357</p></td>
+<td><p>03:29.335</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:29.579</p></td>
+<td><p>01:28.360</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:19.848</p></td>
+<td><p>01:17.285</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:51.867</p></td>
+<tr class="row-even"><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:51.007</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:51.634</p></td>
+<tr class="row-odd"><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:50.085</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:46.811</p></td>
+<td><p>00:45.683</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><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.091</p></td>
+<td><p>00:29.719</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><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.086</p></td>
+<td><p>00:29.717</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 62affe5990..6d4e16c2e7 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:04.127</strong> total execution time for <strong>how_to_extend_tvm</strong> files:</p>
+<p><strong>00:03.861</strong> total execution time for <strong>how_to_extend_tvm</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 83%" />
@@ -369,11 +369,11 @@
 </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.875</p></td>
+<td><p>00:02.690</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.244</p></td>
+<td><p>00:01.163</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>
diff --git a/docs/how_to/extend_tvm/use_pass_instrument.html b/docs/how_to/extend_tvm/use_pass_instrument.html
index 85213279bd..605f929a3d 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: 26029us [26029us] (49.02%; 49.02%)
-FoldScaleAxis: 27065us [8us] (50.98%; 50.98%)
-        FoldConstant: 27056us [1849us] (50.96%; 99.97%)
-                InferType: 25207us [25207us] (47.48%; 93.16%)
+InferType: 24689us [24689us] (48.89%; 48.89%)
+FoldScaleAxis: 25807us [7us] (51.11%; 51.11%)
+        FoldConstant: 25800us [1801us] (51.09%; 99.97%)
+                InferType: 23999us [23999us] (47.53%; 93.02%)
 </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: 25326us [25326us] (48.52%; 48.52%)
-FoldScaleAxis: 26873us [8us] (51.48%; 51.48%)
-        FoldConstant: 26865us [1877us] (51.47%; 99.97%)
-                InferType: 24989us [24989us] (47.87%; 93.01%)
+InferType: 23917us [23917us] (48.86%; 48.86%)
+FoldScaleAxis: 25035us [5us] (51.14%; 51.14%)
+        FoldConstant: 25030us [1666us] (51.13%; 99.98%)
+                InferType: 23364us [23364us] (47.73%; 93.34%)
 </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 df5bd9d7a5..4e7b1a0c29 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: 53.538814 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Convolution: 53.550304 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 8497c42c0e..e79db76b9d 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.270205 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>conv2d with tensor core: 12.274979 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 4114d1d599..0dbf90bcad 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.018172
-Baseline: 3.402074
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Numpy running time: 0.013875
+Baseline: 3.293855
 </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.298336
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt1: 0.281525
 </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.272708
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt2: 0.266564
 </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.116592
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt3: 0.111960
 </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.109034
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt4: 0.103665
 </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.111920
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt5: 0.094587
 </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.133365
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt6: 0.111818
 </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 53650b6ab4..3077cf011b 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:33.967</strong> total execution time for <strong>how_to_optimize_operators</strong> files:</p>
+<p><strong>00:31.505</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.859</p></td>
+<td><p>00:28.344</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.881</p></td>
+<td><p>00:01.887</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.226</p></td>
+<td><p>00:01.273</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 686fbea0d0..a5e8bb7178 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:41.555</strong> total execution time for <strong>how_to_tune_with_autoscheduler</strong> files:</p>
+<p><strong>03:31.301</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:35.887</p></td>
+<td><p>01:32.957</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.435</p></td>
+<td><p>01:10.518</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.372</p></td>
+<td><p>00:17.136</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:16.790</p></td>
+<td><p>00:15.776</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:15.968</p></td>
+<td><p>00:14.817</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.103</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 9ebfb3ce4a..7db7cb1bff 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.347 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 0.342 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 d602c46abe..873d60dbdd 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.2692       3.2698       3.2720       3.2657       0.0026
+   3.2142       3.2197       3.2217       3.2013       0.0092
 </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.435 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  10.518 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 492c1bc7fe..65050066b8 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)
-  752.4303     751.9380     754.1139     751.2390      1.2242
+  697.4293     697.4747     698.1670     696.6462      0.6217
 </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  35.887 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  32.957 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 c46f74e517..95fd32b272 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:23.846</strong> total execution time for <strong>how_to_tune_with_autotvm</strong> files:</p>
+<p><strong>00:22.560</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,7 +369,7 @@
 </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:23.808</p></td>
+<td><p>00:22.522</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>
@@ -377,7 +377,7 @@
 <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 1caf0db0c1..e3eaec1981 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.037075
+Time cost of this operator: 0.036980
 </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 7da4ef2730..34f8ed0825 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  303.7     98.746   (1, 2, 10, 10, 3)  2       1        [303.7]
-tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.886     0.938    (1, 6, 10, 10)     1       1        [2.886]
-tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.97      0.315    (1, 1, 10, 10, 3)  1       1        [0.97]
-Total_time                                    -                                             307.556   -        -                  -       -        -
+tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  297.4     98.744   (1, 2, 10, 10, 3)  2       1        [297.4]
+tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.851     0.946    (1, 6, 10, 10)     1       1        [2.851]
+tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.932     0.309    (1, 1, 10, 10, 3)  1       1        [0.932]
+Total_time                                    -                                             301.182   -        -                  -       -        -
 </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  100.7     97.338   (1, 6, 10, 10, 1)  2       1        [100.7]
-tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.791     1.731    (1, 6, 10, 10)     1       1        [1.791]
-tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.963     0.931    (1, 1, 10, 10, 3)  1       1        [0.963]
-Total_time                                    -                                             103.453   -        -                  -       -        -
+tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  102.3     97.601   (1, 6, 10, 10, 1)  2       1        [102.3]
+tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.699     1.621    (1, 6, 10, 10)     1       1        [1.699]
+tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.816     0.779    (1, 3, 10, 10, 1)  1       1        [0.816]
+Total_time                                    -                                             104.815   -        -                  -       -        -
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  28.704 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  23.590 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 40f6758bed..5f0a3c5627 100644
--- a/docs/how_to/work_with_microtvm/micro_pytorch.html
+++ b/docs/how_to/work_with_microtvm/micro_pytorch.html
@@ -475,8 +475,7 @@ 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, 15.1MB/s]
-100%|##########| 3.42M/3.42M [00:00&lt;00:00, 24.0MB/s]
+100%|##########| 3.42M/3.42M [00:00&lt;00:00, 62.5MB/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 +603,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  29.886 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  26.126 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 4441615070..70d4443d6e 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/tmp_skqxz4v/images/random&#39;
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>&#39;/tmp/tmppr4cx8ou/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/tmp_skqxz4v/images/target contains 8144 images
-/tmp/tmp_skqxz4v/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/tmppr4cx8ou/images/target contains 8144 images
+/tmp/tmppr4cx8ou/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.2438 - accuracy: 0.9201 - val_loss: 0.1250 - val_accuracy: 0.9577 - 39s/epoch - 120ms/step
+328/328 - 38s - loss: 0.2267 - accuracy: 0.9230 - val_loss: 0.1855 - val_accuracy: 0.9366 - 38s/epoch - 117ms/step
 Epoch 2/3
-328/328 - 36s - loss: 0.1015 - accuracy: 0.9634 - val_loss: 0.1305 - val_accuracy: 0.9539 - 36s/epoch - 109ms/step
+328/328 - 34s - loss: 0.0998 - accuracy: 0.9638 - val_loss: 0.0906 - val_accuracy: 0.9690 - 34s/epoch - 105ms/step
 Epoch 3/3
-328/328 - 35s - loss: 0.0725 - accuracy: 0.9733 - val_loss: 0.1098 - val_accuracy: 0.9671 - 35s/epoch - 108ms/step
+328/328 - 34s - loss: 0.0666 - accuracy: 0.9750 - val_loss: 0.0845 - val_accuracy: 0.9724 - 34s/epoch - 104ms/step
 
-&lt;keras.callbacks.History object at 0x7fa5e6acdfa0&gt;
+&lt;keras.callbacks.History object at 0x7f79540e4fd0&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  30.345 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 4 minutes  22.223 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 a0bc20b2d1..9ab8493c06 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.813</strong> total execution time for <strong>how_to_work_with_microtvm</strong> files:</p>
+<p><strong>07:39.825</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:30.345</p></td>
+<td><p>04:22.223</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:29.886</p></td>
+<td><p>01:26.126</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:28.704</p></td>
+<td><p>01:23.590</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.109</p></td>
+<td><p>00:11.669</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:09.092</p></td>
+<td><p>00:08.494</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.677</p></td>
+<td><p>00:07.723</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 d04522e656..c77c053736 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:39.214</strong> total execution time for <strong>how_to_work_with_relay</strong> files:</p>
+<p><strong>00:37.459</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,15 +369,15 @@
 </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:33.441</p></td>
+<td><p>00:32.219</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.181</p></td>
+<td><p>00:03.142</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:02.586</p></td>
+<td><p>00:02.091</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>
diff --git a/docs/how_to/work_with_schedules/intrin_math.html b/docs/how_to/work_with_schedules/intrin_math.html
index 88d8f708c1..d6b069acca 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 0x7fa7cb4e9c10&gt;
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>&lt;function my_cuda_math_rule at 0x7f79863d2ca0&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 5778f6151e..3da4cc1d25 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.425</strong> total execution time for <strong>how_to_work_with_schedules</strong> files:</p>
+<p><strong>00:05.374</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.540</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.155</p></td>
+<td><p>00:01.200</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.723</p></td>
+<td><p>00:00.706</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.712</p></td>
+<td><p>00:00.696</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.124</p></td>
+<td><p>00:00.117</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.070</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.067</p></td>
+<td><p>00:00.065</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.033</p></td>
+<td><p>00:00.031</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/reference/api/doxygen/algorithm_8h_source.html b/docs/reference/api/doxygen/algorithm_8h_source.html
index 49665682fc..904c712ab4 100644
--- a/docs/reference/api/doxygen/algorithm_8h_source.html
+++ b/docs/reference/api/doxygen/algorithm_8h_source.html
@@ -163,7 +163,7 @@ $(function() {
 <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_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:210</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>
 <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/buffer_8h_source.html b/docs/reference/api/doxygen/buffer_8h_source.html
index 2e28cedfda..25932a38d0 100644
--- a/docs/reference/api/doxygen/buffer_8h_source.html
+++ b/docs/reference/api/doxygen/buffer_8h_source.html
@@ -259,9 +259,9 @@ $(function() {
 <div class="ttc" id="aclasstvm_1_1Span_html"><div class="ttname"><a href="classtvm_1_1Span.html">tvm::Span</a></div><div class="ttdef"><b>Definition:</b> source_map.h:120</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>
-<div class="ttc" id="aclasstvm_1_1runtime_1_1DataType_html_a237a714a6a16e14aa01fa4ac52426551"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html#a237a714a6a16e14aa01fa4ac52426551">tvm::runtime::DataType::Float</a></div><div class="ttdeci">static DataType Float(int bits, int lanes=1)</div><div class="ttdoc">Construct an float type.</div><div class="ttdef"><b>Definition:</b> data_type.h:224</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:210</div></div>
-<div class="ttc" id="aclasstvm_1_1runtime_1_1DataType_html_aebad9f7235dd20af649fb5c2113797b8"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html#aebad9f7235dd20af649fb5c2113797b8">tvm::runtime::DataType::Handle</a></div><div class="ttdeci">static DataType Handle(int bits=64, int lanes=1)</div><div class="ttdoc">Construct a handle type.</div><div class="ttdef"><b>Definition:</b> data_type.h:256</div></div>
+<div class="ttc" id="aclasstvm_1_1runtime_1_1DataType_html_a237a714a6a16e14aa01fa4ac52426551"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html#a237a714a6a16e14aa01fa4ac52426551">tvm::runtime::DataType::Float</a></div><div class="ttdeci">static DataType Float(int bits, int lanes=1)</div><div class="ttdoc">Construct an float type.</div><div class="ttdef"><b>Definition:</b> data_type.h:229</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_1DataType_html_aebad9f7235dd20af649fb5c2113797b8"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html#aebad9f7235dd20af649fb5c2113797b8">tvm::runtime::DataType::Handle</a></div><div class="ttdeci">static DataType Handle(int bits=64, int lanes=1)</div><div class="ttdoc">Construct a handle type.</div><div class="ttdef"><b>Definition:</b> data_type.h:264</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_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_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/classtvm_1_1FloatImmNode.html b/docs/reference/api/doxygen/classtvm_1_1FloatImmNode.html
index 522cfcd703..f2ffbb3057 100644
--- a/docs/reference/api/doxygen/classtvm_1_1FloatImmNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1FloatImmNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::FloatImmNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::FloatImmNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1FloatImmNode__coll__graph.svg" width="620" height="2023"><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_1FloatImmNode__coll__graph.svg" width="620" height="2038"><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_1FloatImmNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1FloatImmNode__coll__graph.svg
index f44df6e2f1..db0a7bc3eb 100644
--- a/docs/reference/api/doxygen/classtvm_1_1FloatImmNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1FloatImmNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::FloatImmNode Pages: 1 -->
-<svg width="465pt" height="1517pt"
- viewBox="0.00 0.00 465.00 1517.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 1513)">
+<svg width="465pt" height="1528pt"
+ viewBox="0.00 0.00 465.00 1528.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 1524)">
 <title>tvm::FloatImmNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1513 461,-1513 461,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1524 461,-1524 461,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -54,192 +54,193 @@
 <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="133.5,-376.5 133.5,-499.5 306.5,-499.5 306.5,-376.5 133.5,-376.5"/>
-<text text-anchor="middle" x="220" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
-<polyline fill="none" stroke="black" points="133.5,-480.5 306.5,-480.5 "/>
-<text text-anchor="start" x="141.5" y="-468.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="141.5" y="-457.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="141.5" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="141.5" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="141.5" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="141.5" y="-413.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="133.5,-406.5 306.5,-406.5 "/>
-<text text-anchor="start" x="141.5" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="141.5" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="133.5,-382 133.5,-505 306.5,-505 306.5,-382 133.5,-382"/>
+<text text-anchor="middle" x="220" y="-493" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
+<polyline fill="none" stroke="black" points="133.5,-486 306.5,-486 "/>
+<text text-anchor="start" x="141.5" y="-474" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="141.5" y="-463" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="141.5" y="-452" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="141.5" y="-441" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="141.5" y="-430" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="141.5" y="-419" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="133.5,-412 306.5,-412 "/>
+<text text-anchor="start" x="141.5" y="-400" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="141.5" y="-389" 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="M245.41,-366.74C258.82,-329.66 274.96,-285.06 287.05,-251.62"/>
-<polygon fill="none" stroke="midnightblue" points="242,-365.89 241.89,-376.48 248.58,-368.27 242,-365.89"/>
+<path fill="none" stroke="midnightblue" d="M244.85,-372.18C258.51,-333.54 275.12,-286.54 287.42,-251.73"/>
+<polygon fill="none" stroke="midnightblue" points="241.48,-371.22 241.45,-381.81 248.08,-373.55 241.48,-371.22"/>
 </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,-624.5 0,-1011.5 184,-1011.5 184,-624.5 0,-624.5"/>
-<text text-anchor="middle" x="92" y="-999.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-992.5 184,-992.5 "/>
-<text text-anchor="start" x="8" y="-980.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-936.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-925.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-914.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-903.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-892.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-881.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-870.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-859.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-848.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-837.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-830.5 184,-830.5 "/>
-<text text-anchor="start" x="8" y="-818.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-807.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-785.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-774.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-635.5 0,-1022.5 184,-1022.5 184,-635.5 0,-635.5"/>
+<text text-anchor="middle" x="92" y="-1010.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-1003.5 184,-1003.5 "/>
+<text text-anchor="start" x="8" y="-991.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-980.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-936.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-925.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-914.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-903.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-892.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-881.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-870.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-859.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-848.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-841.5 184,-841.5 "/>
+<text text-anchor="start" x="8" y="-829.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-818.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-807.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-785.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-774.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-763.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-752.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-741.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-741.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-730.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-719.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-708.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-697.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-686.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-675.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-653.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-642.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-631.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-719.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-708.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-697.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-686.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-675.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-653.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-642.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="M160.46,-614.84C174.71,-572.75 188.67,-531.53 199.48,-499.59"/>
-<polygon fill="none" stroke="midnightblue" points="157.11,-613.81 157.22,-624.4 163.74,-616.05 157.11,-613.81"/>
+<path fill="none" stroke="midnightblue" d="M159.51,-625.72C174.18,-581.78 188.6,-538.57 199.68,-505.37"/>
+<polygon fill="none" stroke="midnightblue" points="156.13,-624.81 156.28,-635.41 162.77,-627.03 156.13,-624.81"/>
 </g>
 <!-- Node4&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M184.28,-851.92C195.02,-845.66 202,-834.36 202,-818 202,-807.01 198.85,-798.3 193.52,-791.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-791.81 186.29,-791 184.28,-784.08 191.45,-784.89 193.46,-791.81"/>
-<text text-anchor="middle" x="228" y="-815.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-862.92C195.02,-856.66 202,-845.36 202,-829 202,-818.01 198.85,-809.3 193.52,-802.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-802.81 186.29,-802 184.28,-795.08 191.45,-795.89 193.46,-802.81"/>
+<text text-anchor="middle" x="228" y="-826.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="272,-773 272,-863 428,-863 428,-773 272,-773"/>
-<text text-anchor="middle" x="350" y="-851" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="272,-844 428,-844 "/>
-<text text-anchor="middle" x="350" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-825 428,-825 "/>
-<text text-anchor="start" x="280" y="-813" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="280" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="280" y="-791" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-780" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="272,-784 272,-874 428,-874 428,-784 272,-784"/>
+<text text-anchor="middle" x="350" y="-862" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="272,-855 428,-855 "/>
+<text text-anchor="middle" x="350" y="-843" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-836 428,-836 "/>
+<text text-anchor="start" x="280" y="-824" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="280" y="-813" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="280" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-791" 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="M334.83,-772.9C312.73,-708.62 271.4,-588.46 244.82,-511.18"/>
-<polygon fill="none" stroke="#404040" points="244.75,-510.97 239.02,-506.6 240.85,-499.63 246.58,-504 244.75,-510.97"/>
-<text text-anchor="middle" x="295.5" y="-598" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M334.96,-783.63C312.81,-718.28 271.15,-595.39 244.53,-516.87"/>
+<polygon fill="none" stroke="#404040" points="244.41,-516.51 238.69,-512.11 240.56,-505.14 246.27,-509.54 244.41,-516.51"/>
+<text text-anchor="middle" x="295.5" y="-609" 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="283,-1049.5 283,-1282.5 417,-1282.5 417,-1049.5 283,-1049.5"/>
-<text text-anchor="middle" x="350" y="-1270.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="283,-1263.5 417,-1263.5 "/>
-<text text-anchor="start" x="291" y="-1251.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="283,-1244.5 417,-1244.5 "/>
+<polygon fill="white" stroke="black" points="283,-1060.5 283,-1293.5 417,-1293.5 417,-1060.5 283,-1060.5"/>
+<text text-anchor="middle" x="350" y="-1281.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="283,-1274.5 417,-1274.5 "/>
+<text text-anchor="start" x="291" y="-1262.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="283,-1255.5 417,-1255.5 "/>
+<text text-anchor="start" x="291" y="-1243.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="291" y="-1232.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="291" y="-1221.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="291" y="-1210.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="291" y="-1199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="291" y="-1188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="291" y="-1177.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="291" y="-1166.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="291" y="-1155.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="291" y="-1144.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="291" y="-1133.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="291" y="-1122.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="291" y="-1221.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="291" y="-1210.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="291" y="-1199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="291" y="-1188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="291" y="-1177.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="291" y="-1166.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="291" y="-1155.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="291" y="-1144.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="291" y="-1133.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="291" y="-1122.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="291" y="-1111.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="291" y="-1100.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="291" y="-1089.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="291" y="-1078.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="291" y="-1067.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="291" y="-1056.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="291" y="-1100.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="291" y="-1089.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="291" y="-1078.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="291" y="-1067.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="M350,-1039.11C350,-977.57 350,-907.41 350,-863.17"/>
-<polygon fill="none" stroke="midnightblue" points="346.5,-1039.31 350,-1049.31 353.5,-1039.31 346.5,-1039.31"/>
+<path fill="none" stroke="midnightblue" d="M350,-1050.11C350,-988.57 350,-918.41 350,-874.17"/>
+<polygon fill="none" stroke="midnightblue" points="346.5,-1050.31 350,-1060.31 353.5,-1050.31 346.5,-1050.31"/>
 </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="280,-1330.5 280,-1508.5 420,-1508.5 420,-1330.5 280,-1330.5"/>
-<text text-anchor="start" x="288" y="-1496.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="350" y="-1485.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="280,-1478.5 420,-1478.5 "/>
-<text text-anchor="middle" x="350" y="-1466.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="280,-1459.5 420,-1459.5 "/>
+<polygon fill="white" stroke="black" points="280,-1341.5 280,-1519.5 420,-1519.5 420,-1341.5 280,-1341.5"/>
+<text text-anchor="start" x="288" y="-1507.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="350" y="-1496.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="280,-1489.5 420,-1489.5 "/>
+<text text-anchor="middle" x="350" y="-1477.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="280,-1470.5 420,-1470.5 "/>
+<text text-anchor="start" x="288" y="-1458.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1447.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1436.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1425.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1414.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1403.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1392.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1381.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="288" y="-1359.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="288" y="-1348.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="288" y="-1337.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="288" y="-1392.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="288" y="-1381.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="288" y="-1370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="288" y="-1359.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="288" y="-1348.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="M350,-1330.18C350,-1318.84 350,-1307.05 350,-1295.23"/>
-<polygon fill="none" stroke="#404040" points="350,-1294.91 346,-1288.91 350,-1282.91 354,-1288.91 350,-1294.91"/>
-<text text-anchor="middle" x="369.5" y="-1304" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M350,-1341.18C350,-1329.84 350,-1318.05 350,-1306.23"/>
+<polygon fill="none" stroke="#404040" points="350,-1305.91 346,-1299.91 350,-1293.91 354,-1299.91 350,-1305.91"/>
+<text text-anchor="middle" x="369.5" y="-1315" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="325,-299.5 325,-576.5 457,-576.5 457,-299.5 325,-299.5"/>
-<text text-anchor="middle" x="391" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="325,-557.5 457,-557.5 "/>
-<text text-anchor="middle" x="391" y="-545.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="325,-538.5 457,-538.5 "/>
+<polygon fill="white" stroke="black" points="325,-299.5 325,-587.5 457,-587.5 457,-299.5 325,-299.5"/>
+<text text-anchor="middle" x="391" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="325,-568.5 457,-568.5 "/>
+<text text-anchor="middle" x="391" y="-556.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="325,-549.5 457,-549.5 "/>
+<text text-anchor="start" x="333" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="333" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="333" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="333" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="333" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="333" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="333" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="333" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="333" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="333" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="333" y="-427.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="333" y="-416.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="333" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="333" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="333" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="333" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="333" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="333" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="333" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="333" y="-427.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="333" y="-416.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="333" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="333" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="333" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -256,8 +257,8 @@
 <!-- Node8&#45;&gt;Node2 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M340.6,-299.28C336,-286.71 331.52,-274.47 327.37,-263.14"/>
-<polygon fill="none" stroke="#404040" points="327.31,-262.96 321.49,-258.7 323.18,-251.69 329,-255.95 327.31,-262.96"/>
+<path fill="none" stroke="#404040" d="M339.86,-299.47C335.33,-286.82 330.93,-274.52 326.87,-263.15"/>
+<polygon fill="none" stroke="#404040" points="326.8,-262.97 321.02,-258.67 322.76,-251.67 328.55,-255.98 326.8,-262.97"/>
 <text text-anchor="middle" x="353" y="-273" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1IntImmNode.html b/docs/reference/api/doxygen/classtvm_1_1IntImmNode.html
index 6757122fb8..c8136e329a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1IntImmNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1IntImmNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::IntImmNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::IntImmNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1IntImmNode__coll__graph.svg" width="620" height="2023"><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_1IntImmNode__coll__graph.svg" width="620" height="2038"><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_1IntImmNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1IntImmNode__coll__graph.svg
index 5ea038ab1b..5182e66206 100644
--- a/docs/reference/api/doxygen/classtvm_1_1IntImmNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1IntImmNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::IntImmNode Pages: 1 -->
-<svg width="465pt" height="1517pt"
- viewBox="0.00 0.00 465.00 1517.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 1513)">
+<svg width="465pt" height="1528pt"
+ viewBox="0.00 0.00 465.00 1528.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 1524)">
 <title>tvm::IntImmNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1513 461,-1513 461,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1524 461,-1524 461,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -54,192 +54,193 @@
 <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="133.5,-376.5 133.5,-499.5 306.5,-499.5 306.5,-376.5 133.5,-376.5"/>
-<text text-anchor="middle" x="220" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
-<polyline fill="none" stroke="black" points="133.5,-480.5 306.5,-480.5 "/>
-<text text-anchor="start" x="141.5" y="-468.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="141.5" y="-457.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="141.5" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="141.5" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="141.5" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="141.5" y="-413.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="133.5,-406.5 306.5,-406.5 "/>
-<text text-anchor="start" x="141.5" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="141.5" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="133.5,-382 133.5,-505 306.5,-505 306.5,-382 133.5,-382"/>
+<text text-anchor="middle" x="220" y="-493" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
+<polyline fill="none" stroke="black" points="133.5,-486 306.5,-486 "/>
+<text text-anchor="start" x="141.5" y="-474" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="141.5" y="-463" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="141.5" y="-452" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="141.5" y="-441" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="141.5" y="-430" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="141.5" y="-419" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="133.5,-412 306.5,-412 "/>
+<text text-anchor="start" x="141.5" y="-400" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="141.5" y="-389" 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="M245.41,-366.74C258.82,-329.66 274.96,-285.06 287.05,-251.62"/>
-<polygon fill="none" stroke="midnightblue" points="242,-365.89 241.89,-376.48 248.58,-368.27 242,-365.89"/>
+<path fill="none" stroke="midnightblue" d="M244.85,-372.18C258.51,-333.54 275.12,-286.54 287.42,-251.73"/>
+<polygon fill="none" stroke="midnightblue" points="241.48,-371.22 241.45,-381.81 248.08,-373.55 241.48,-371.22"/>
 </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,-624.5 0,-1011.5 184,-1011.5 184,-624.5 0,-624.5"/>
-<text text-anchor="middle" x="92" y="-999.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-992.5 184,-992.5 "/>
-<text text-anchor="start" x="8" y="-980.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-936.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-925.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-914.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-903.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-892.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-881.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-870.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-859.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-848.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-837.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-830.5 184,-830.5 "/>
-<text text-anchor="start" x="8" y="-818.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-807.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-785.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-774.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-635.5 0,-1022.5 184,-1022.5 184,-635.5 0,-635.5"/>
+<text text-anchor="middle" x="92" y="-1010.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-1003.5 184,-1003.5 "/>
+<text text-anchor="start" x="8" y="-991.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-980.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-936.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-925.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-914.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-903.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-892.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-881.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-870.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-859.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-848.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-841.5 184,-841.5 "/>
+<text text-anchor="start" x="8" y="-829.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-818.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-807.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-785.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-774.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-763.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-752.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-741.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-741.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-730.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-719.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-708.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-697.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-686.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-675.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-653.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-642.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-631.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-719.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-708.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-697.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-686.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-675.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-653.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-642.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="M160.46,-614.84C174.71,-572.75 188.67,-531.53 199.48,-499.59"/>
-<polygon fill="none" stroke="midnightblue" points="157.11,-613.81 157.22,-624.4 163.74,-616.05 157.11,-613.81"/>
+<path fill="none" stroke="midnightblue" d="M159.51,-625.72C174.18,-581.78 188.6,-538.57 199.68,-505.37"/>
+<polygon fill="none" stroke="midnightblue" points="156.13,-624.81 156.28,-635.41 162.77,-627.03 156.13,-624.81"/>
 </g>
 <!-- Node4&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M184.28,-851.92C195.02,-845.66 202,-834.36 202,-818 202,-807.01 198.85,-798.3 193.52,-791.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-791.81 186.29,-791 184.28,-784.08 191.45,-784.89 193.46,-791.81"/>
-<text text-anchor="middle" x="228" y="-815.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-862.92C195.02,-856.66 202,-845.36 202,-829 202,-818.01 198.85,-809.3 193.52,-802.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-802.81 186.29,-802 184.28,-795.08 191.45,-795.89 193.46,-802.81"/>
+<text text-anchor="middle" x="228" y="-826.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="272,-773 272,-863 428,-863 428,-773 272,-773"/>
-<text text-anchor="middle" x="350" y="-851" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="272,-844 428,-844 "/>
-<text text-anchor="middle" x="350" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-825 428,-825 "/>
-<text text-anchor="start" x="280" y="-813" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="280" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="280" y="-791" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-780" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="272,-784 272,-874 428,-874 428,-784 272,-784"/>
+<text text-anchor="middle" x="350" y="-862" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="272,-855 428,-855 "/>
+<text text-anchor="middle" x="350" y="-843" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-836 428,-836 "/>
+<text text-anchor="start" x="280" y="-824" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="280" y="-813" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="280" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-791" 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="M334.83,-772.9C312.73,-708.62 271.4,-588.46 244.82,-511.18"/>
-<polygon fill="none" stroke="#404040" points="244.75,-510.97 239.02,-506.6 240.85,-499.63 246.58,-504 244.75,-510.97"/>
-<text text-anchor="middle" x="295.5" y="-598" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M334.96,-783.63C312.81,-718.28 271.15,-595.39 244.53,-516.87"/>
+<polygon fill="none" stroke="#404040" points="244.41,-516.51 238.69,-512.11 240.56,-505.14 246.27,-509.54 244.41,-516.51"/>
+<text text-anchor="middle" x="295.5" y="-609" 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="283,-1049.5 283,-1282.5 417,-1282.5 417,-1049.5 283,-1049.5"/>
-<text text-anchor="middle" x="350" y="-1270.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="283,-1263.5 417,-1263.5 "/>
-<text text-anchor="start" x="291" y="-1251.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="283,-1244.5 417,-1244.5 "/>
+<polygon fill="white" stroke="black" points="283,-1060.5 283,-1293.5 417,-1293.5 417,-1060.5 283,-1060.5"/>
+<text text-anchor="middle" x="350" y="-1281.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="283,-1274.5 417,-1274.5 "/>
+<text text-anchor="start" x="291" y="-1262.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="283,-1255.5 417,-1255.5 "/>
+<text text-anchor="start" x="291" y="-1243.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="291" y="-1232.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="291" y="-1221.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="291" y="-1210.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="291" y="-1199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="291" y="-1188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="291" y="-1177.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="291" y="-1166.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="291" y="-1155.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="291" y="-1144.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="291" y="-1133.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="291" y="-1122.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="291" y="-1221.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="291" y="-1210.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="291" y="-1199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="291" y="-1188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="291" y="-1177.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="291" y="-1166.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="291" y="-1155.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="291" y="-1144.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="291" y="-1133.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="291" y="-1122.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="291" y="-1111.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="291" y="-1100.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="291" y="-1089.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="291" y="-1078.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="291" y="-1067.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="291" y="-1056.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="291" y="-1100.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="291" y="-1089.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="291" y="-1078.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="291" y="-1067.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="M350,-1039.11C350,-977.57 350,-907.41 350,-863.17"/>
-<polygon fill="none" stroke="midnightblue" points="346.5,-1039.31 350,-1049.31 353.5,-1039.31 346.5,-1039.31"/>
+<path fill="none" stroke="midnightblue" d="M350,-1050.11C350,-988.57 350,-918.41 350,-874.17"/>
+<polygon fill="none" stroke="midnightblue" points="346.5,-1050.31 350,-1060.31 353.5,-1050.31 346.5,-1050.31"/>
 </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="280,-1330.5 280,-1508.5 420,-1508.5 420,-1330.5 280,-1330.5"/>
-<text text-anchor="start" x="288" y="-1496.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="350" y="-1485.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="280,-1478.5 420,-1478.5 "/>
-<text text-anchor="middle" x="350" y="-1466.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="280,-1459.5 420,-1459.5 "/>
+<polygon fill="white" stroke="black" points="280,-1341.5 280,-1519.5 420,-1519.5 420,-1341.5 280,-1341.5"/>
+<text text-anchor="start" x="288" y="-1507.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="350" y="-1496.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="280,-1489.5 420,-1489.5 "/>
+<text text-anchor="middle" x="350" y="-1477.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="280,-1470.5 420,-1470.5 "/>
+<text text-anchor="start" x="288" y="-1458.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1447.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1436.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1425.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1414.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1403.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1392.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1381.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="288" y="-1359.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="288" y="-1348.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="288" y="-1337.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="288" y="-1392.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="288" y="-1381.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="288" y="-1370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="288" y="-1359.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="288" y="-1348.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="M350,-1330.18C350,-1318.84 350,-1307.05 350,-1295.23"/>
-<polygon fill="none" stroke="#404040" points="350,-1294.91 346,-1288.91 350,-1282.91 354,-1288.91 350,-1294.91"/>
-<text text-anchor="middle" x="369.5" y="-1304" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M350,-1341.18C350,-1329.84 350,-1318.05 350,-1306.23"/>
+<polygon fill="none" stroke="#404040" points="350,-1305.91 346,-1299.91 350,-1293.91 354,-1299.91 350,-1305.91"/>
+<text text-anchor="middle" x="369.5" y="-1315" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="325,-299.5 325,-576.5 457,-576.5 457,-299.5 325,-299.5"/>
-<text text-anchor="middle" x="391" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="325,-557.5 457,-557.5 "/>
-<text text-anchor="middle" x="391" y="-545.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="325,-538.5 457,-538.5 "/>
+<polygon fill="white" stroke="black" points="325,-299.5 325,-587.5 457,-587.5 457,-299.5 325,-299.5"/>
+<text text-anchor="middle" x="391" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="325,-568.5 457,-568.5 "/>
+<text text-anchor="middle" x="391" y="-556.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="325,-549.5 457,-549.5 "/>
+<text text-anchor="start" x="333" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="333" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="333" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="333" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="333" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="333" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="333" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="333" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="333" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="333" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="333" y="-427.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="333" y="-416.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="333" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="333" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="333" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="333" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="333" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="333" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="333" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="333" y="-427.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="333" y="-416.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="333" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="333" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="333" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -256,8 +257,8 @@
 <!-- Node8&#45;&gt;Node2 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M340.6,-299.28C336,-286.71 331.52,-274.47 327.37,-263.14"/>
-<polygon fill="none" stroke="#404040" points="327.31,-262.96 321.49,-258.7 323.18,-251.69 329,-255.95 327.31,-262.96"/>
+<path fill="none" stroke="#404040" d="M339.86,-299.47C335.33,-286.82 330.93,-274.52 326.87,-263.15"/>
+<polygon fill="none" stroke="#404040" points="326.8,-262.97 321.02,-258.67 322.76,-251.67 328.55,-255.98 326.8,-262.97"/>
 <text text-anchor="middle" x="353" y="-273" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1PrimExprNode.html b/docs/reference/api/doxygen/classtvm_1_1PrimExprNode.html
index 4699d46477..472c33e522 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PrimExprNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1PrimExprNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::PrimExprNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::PrimExprNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1PrimExprNode__coll__graph.svg" width="620" height="1823"><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_1PrimExprNode__coll__graph.svg" width="620" height="1838"><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_1PrimExprNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1PrimExprNode__coll__graph.svg
index 06493594ab..d546f373cd 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PrimExprNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1PrimExprNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::PrimExprNode Pages: 1 -->
-<svg width="465pt" height="1367pt"
- viewBox="0.00 0.00 465.00 1367.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 1363)">
+<svg width="465pt" height="1378pt"
+ viewBox="0.00 0.00 465.00 1378.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 1374)">
 <title>tvm::PrimExprNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1363 461,-1363 461,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1374 461,-1374 461,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -30,192 +30,193 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1BaseExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="black" points="133.5,-226.5 133.5,-349.5 306.5,-349.5 306.5,-226.5 133.5,-226.5"/>
-<text text-anchor="middle" x="220" y="-337.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
-<polyline fill="none" stroke="black" points="133.5,-330.5 306.5,-330.5 "/>
-<text text-anchor="start" x="141.5" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="141.5" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="141.5" y="-296.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="141.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="141.5" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="141.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="133.5,-256.5 306.5,-256.5 "/>
-<text text-anchor="start" x="141.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="141.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="133.5,-232 133.5,-355 306.5,-355 306.5,-232 133.5,-232"/>
+<text text-anchor="middle" x="220" y="-343" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
+<polyline fill="none" stroke="black" points="133.5,-336 306.5,-336 "/>
+<text text-anchor="start" x="141.5" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="141.5" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="141.5" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="141.5" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="141.5" y="-280" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="141.5" y="-269" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="133.5,-262 306.5,-262 "/>
+<text text-anchor="start" x="141.5" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="141.5" y="-239" 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="M245.41,-216.74C258.82,-179.66 274.96,-135.06 287.05,-101.62"/>
-<polygon fill="none" stroke="midnightblue" points="242,-215.89 241.89,-226.48 248.58,-218.27 242,-215.89"/>
+<path fill="none" stroke="midnightblue" d="M244.85,-222.18C258.51,-183.54 275.12,-136.54 287.42,-101.73"/>
+<polygon fill="none" stroke="midnightblue" points="241.48,-221.22 241.45,-231.81 248.08,-223.55 241.48,-221.22"/>
 </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,-474.5 0,-861.5 184,-861.5 184,-474.5 0,-474.5"/>
-<text text-anchor="middle" x="92" y="-849.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-842.5 184,-842.5 "/>
-<text text-anchor="start" x="8" y="-830.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-819.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-808.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-797.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-786.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-775.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-764.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-753.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-742.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-731.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-720.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-709.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-698.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-687.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-680.5 184,-680.5 "/>
-<text text-anchor="start" x="8" y="-668.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-657.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-646.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-635.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-624.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-485.5 0,-872.5 184,-872.5 184,-485.5 0,-485.5"/>
+<text text-anchor="middle" x="92" y="-860.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-853.5 184,-853.5 "/>
+<text text-anchor="start" x="8" y="-841.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-830.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-819.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-808.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-797.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-786.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-775.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-764.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-753.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-742.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-731.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-720.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-709.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-698.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-691.5 184,-691.5 "/>
+<text text-anchor="start" x="8" y="-679.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-668.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-657.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-646.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-635.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-624.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-613.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-602.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-591.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-591.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-580.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-569.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-558.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-547.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-514.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-492.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-481.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-569.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-558.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-547.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-514.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-492.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="M160.46,-464.84C174.71,-422.75 188.67,-381.53 199.48,-349.59"/>
-<polygon fill="none" stroke="midnightblue" points="157.11,-463.81 157.22,-474.4 163.74,-466.05 157.11,-463.81"/>
+<path fill="none" stroke="midnightblue" d="M159.51,-475.72C174.18,-431.78 188.6,-388.57 199.68,-355.37"/>
+<polygon fill="none" stroke="midnightblue" points="156.13,-474.81 156.28,-485.41 162.77,-477.03 156.13,-474.81"/>
 </g>
 <!-- Node3&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M184.28,-701.92C195.02,-695.66 202,-684.36 202,-668 202,-657.01 198.85,-648.3 193.52,-641.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-641.81 186.29,-641 184.28,-634.08 191.45,-634.89 193.46,-641.81"/>
-<text text-anchor="middle" x="228" y="-665.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-712.92C195.02,-706.66 202,-695.36 202,-679 202,-668.01 198.85,-659.3 193.52,-652.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-652.81 186.29,-652 184.28,-645.08 191.45,-645.89 193.46,-652.81"/>
+<text text-anchor="middle" x="228" y="-676.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_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="272,-623 272,-713 428,-713 428,-623 272,-623"/>
-<text text-anchor="middle" x="350" y="-701" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="272,-694 428,-694 "/>
-<text text-anchor="middle" x="350" y="-682" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-675 428,-675 "/>
-<text text-anchor="start" x="280" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="280" y="-652" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="280" y="-641" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-630" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="272,-634 272,-724 428,-724 428,-634 272,-634"/>
+<text text-anchor="middle" x="350" y="-712" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="272,-705 428,-705 "/>
+<text text-anchor="middle" x="350" y="-693" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-686 428,-686 "/>
+<text text-anchor="start" x="280" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="280" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="280" y="-652" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-641" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node2 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M334.83,-622.9C312.73,-558.62 271.4,-438.46 244.82,-361.18"/>
-<polygon fill="none" stroke="#404040" points="244.75,-360.97 239.02,-356.6 240.85,-349.63 246.58,-354 244.75,-360.97"/>
-<text text-anchor="middle" x="295.5" y="-448" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M334.96,-633.63C312.81,-568.28 271.15,-445.39 244.53,-366.87"/>
+<polygon fill="none" stroke="#404040" points="244.41,-366.51 238.69,-362.11 240.56,-355.14 246.27,-359.54 244.41,-366.51"/>
+<text text-anchor="middle" x="295.5" y="-459" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</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="283,-899.5 283,-1132.5 417,-1132.5 417,-899.5 283,-899.5"/>
-<text text-anchor="middle" x="350" y="-1120.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="283,-1113.5 417,-1113.5 "/>
-<text text-anchor="start" x="291" y="-1101.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="283,-1094.5 417,-1094.5 "/>
+<polygon fill="white" stroke="black" points="283,-910.5 283,-1143.5 417,-1143.5 417,-910.5 283,-910.5"/>
+<text text-anchor="middle" x="350" y="-1131.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="283,-1124.5 417,-1124.5 "/>
+<text text-anchor="start" x="291" y="-1112.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="283,-1105.5 417,-1105.5 "/>
+<text text-anchor="start" x="291" y="-1093.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="291" y="-1082.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="291" y="-1071.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="291" y="-1060.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="291" y="-1049.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="291" y="-1038.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="291" y="-1027.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="291" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="291" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="291" y="-994.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="291" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="291" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="291" y="-1071.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="291" y="-1060.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="291" y="-1049.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="291" y="-1038.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="291" y="-1027.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="291" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="291" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="291" y="-994.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="291" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="291" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="291" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="291" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="291" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="291" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="291" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="291" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="291" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="291" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="291" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="291" y="-917.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="M350,-889.11C350,-827.57 350,-757.41 350,-713.17"/>
-<polygon fill="none" stroke="midnightblue" points="346.5,-889.31 350,-899.31 353.5,-889.31 346.5,-889.31"/>
+<path fill="none" stroke="midnightblue" d="M350,-900.11C350,-838.57 350,-768.41 350,-724.17"/>
+<polygon fill="none" stroke="midnightblue" points="346.5,-900.31 350,-910.31 353.5,-900.31 346.5,-900.31"/>
 </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="280,-1180.5 280,-1358.5 420,-1358.5 420,-1180.5 280,-1180.5"/>
-<text text-anchor="start" x="288" y="-1346.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="350" y="-1335.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="280,-1328.5 420,-1328.5 "/>
-<text text-anchor="middle" x="350" y="-1316.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="280,-1309.5 420,-1309.5 "/>
+<polygon fill="white" stroke="black" points="280,-1191.5 280,-1369.5 420,-1369.5 420,-1191.5 280,-1191.5"/>
+<text text-anchor="start" x="288" y="-1357.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="350" y="-1346.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="280,-1339.5 420,-1339.5 "/>
+<text text-anchor="middle" x="350" y="-1327.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="280,-1320.5 420,-1320.5 "/>
+<text text-anchor="start" x="288" y="-1308.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1297.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1286.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1264.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1253.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1242.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1231.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1220.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="288" y="-1209.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="288" y="-1198.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="288" y="-1187.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="288" y="-1242.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="288" y="-1231.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="288" y="-1220.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="288" y="-1209.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="288" y="-1198.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="M350,-1180.18C350,-1168.84 350,-1157.05 350,-1145.23"/>
-<polygon fill="none" stroke="#404040" points="350,-1144.91 346,-1138.91 350,-1132.91 354,-1138.91 350,-1144.91"/>
-<text text-anchor="middle" x="369.5" y="-1154" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M350,-1191.18C350,-1179.84 350,-1168.05 350,-1156.23"/>
+<polygon fill="none" stroke="#404040" points="350,-1155.91 346,-1149.91 350,-1143.91 354,-1149.91 350,-1155.91"/>
+<text text-anchor="middle" x="369.5" y="-1165" 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_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="325,-149.5 325,-426.5 457,-426.5 457,-149.5 325,-149.5"/>
-<text text-anchor="middle" x="391" y="-414.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="325,-407.5 457,-407.5 "/>
-<text text-anchor="middle" x="391" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="325,-388.5 457,-388.5 "/>
+<polygon fill="white" stroke="black" points="325,-149.5 325,-437.5 457,-437.5 457,-149.5 325,-149.5"/>
+<text text-anchor="middle" x="391" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="325,-418.5 457,-418.5 "/>
+<text text-anchor="middle" x="391" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="325,-399.5 457,-399.5 "/>
+<text text-anchor="start" x="333" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="333" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="333" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="333" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="333" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="333" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="333" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="333" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="333" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="333" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="333" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="333" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="333" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="333" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="333" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="333" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="333" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="333" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="333" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="333" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="333" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="333" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="333" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="333" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -232,8 +233,8 @@
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M340.6,-149.28C336,-136.71 331.52,-124.47 327.37,-113.14"/>
-<polygon fill="none" stroke="#404040" points="327.31,-112.96 321.49,-108.7 323.18,-101.69 329,-105.95 327.31,-112.96"/>
+<path fill="none" stroke="#404040" d="M339.86,-149.47C335.33,-136.82 330.93,-124.52 326.87,-113.15"/>
+<polygon fill="none" stroke="#404040" points="326.8,-112.97 321.02,-108.67 322.76,-101.67 328.55,-105.98 326.8,-112.97"/>
 <text text-anchor="middle" x="353" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode.html
index 9718adb577..a8c54bbc80 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::PrimTypeNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::PrimTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1PrimTypeNode__coll__graph.svg" width="620" height="1823"><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_1PrimTypeNode__coll__graph.svg" width="620" height="1838"><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_1PrimTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode__coll__graph.svg
index cf03643f74..296a65938e 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::PrimTypeNode Pages: 1 -->
-<svg width="465pt" height="1367pt"
- viewBox="0.00 0.00 465.00 1367.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 1363)">
+<svg width="465pt" height="1378pt"
+ viewBox="0.00 0.00 465.00 1378.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 1374)">
 <title>tvm::PrimTypeNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1363 461,-1363 461,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1374 461,-1374 461,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -30,192 +30,193 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="black" points="133.5,-226.5 133.5,-349.5 306.5,-349.5 306.5,-226.5 133.5,-226.5"/>
-<text text-anchor="middle" x="220" y="-337.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<polyline fill="none" stroke="black" points="133.5,-330.5 306.5,-330.5 "/>
-<text text-anchor="start" x="141.5" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="141.5" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="141.5" y="-296.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="141.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="141.5" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="141.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="133.5,-256.5 306.5,-256.5 "/>
-<text text-anchor="start" x="141.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="141.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="133.5,-232 133.5,-355 306.5,-355 306.5,-232 133.5,-232"/>
+<text text-anchor="middle" x="220" y="-343" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<polyline fill="none" stroke="black" points="133.5,-336 306.5,-336 "/>
+<text text-anchor="start" x="141.5" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="141.5" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="141.5" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="141.5" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="141.5" y="-280" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="141.5" y="-269" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="133.5,-262 306.5,-262 "/>
+<text text-anchor="start" x="141.5" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="141.5" y="-239" 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="M245.41,-216.74C258.82,-179.66 274.96,-135.06 287.05,-101.62"/>
-<polygon fill="none" stroke="midnightblue" points="242,-215.89 241.89,-226.48 248.58,-218.27 242,-215.89"/>
+<path fill="none" stroke="midnightblue" d="M244.85,-222.18C258.51,-183.54 275.12,-136.54 287.42,-101.73"/>
+<polygon fill="none" stroke="midnightblue" points="241.48,-221.22 241.45,-231.81 248.08,-223.55 241.48,-221.22"/>
 </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,-474.5 0,-861.5 184,-861.5 184,-474.5 0,-474.5"/>
-<text text-anchor="middle" x="92" y="-849.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-842.5 184,-842.5 "/>
-<text text-anchor="start" x="8" y="-830.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-819.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-808.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-797.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-786.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-775.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-764.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-753.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-742.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-731.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-720.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-709.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-698.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-687.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-680.5 184,-680.5 "/>
-<text text-anchor="start" x="8" y="-668.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-657.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-646.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-635.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-624.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-485.5 0,-872.5 184,-872.5 184,-485.5 0,-485.5"/>
+<text text-anchor="middle" x="92" y="-860.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-853.5 184,-853.5 "/>
+<text text-anchor="start" x="8" y="-841.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-830.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-819.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-808.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-797.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-786.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-775.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-764.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-753.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-742.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-731.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-720.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-709.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-698.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-691.5 184,-691.5 "/>
+<text text-anchor="start" x="8" y="-679.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-668.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-657.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-646.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-635.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-624.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-613.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-602.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-591.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-591.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-580.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-569.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-558.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-547.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-514.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-492.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-481.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-569.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-558.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-547.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-514.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-492.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="M160.46,-464.84C174.71,-422.75 188.67,-381.53 199.48,-349.59"/>
-<polygon fill="none" stroke="midnightblue" points="157.11,-463.81 157.22,-474.4 163.74,-466.05 157.11,-463.81"/>
+<path fill="none" stroke="midnightblue" d="M159.51,-475.72C174.18,-431.78 188.6,-388.57 199.68,-355.37"/>
+<polygon fill="none" stroke="midnightblue" points="156.13,-474.81 156.28,-485.41 162.77,-477.03 156.13,-474.81"/>
 </g>
 <!-- Node3&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M184.28,-701.92C195.02,-695.66 202,-684.36 202,-668 202,-657.01 198.85,-648.3 193.52,-641.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-641.81 186.29,-641 184.28,-634.08 191.45,-634.89 193.46,-641.81"/>
-<text text-anchor="middle" x="228" y="-665.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-712.92C195.02,-706.66 202,-695.36 202,-679 202,-668.01 198.85,-659.3 193.52,-652.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-652.81 186.29,-652 184.28,-645.08 191.45,-645.89 193.46,-652.81"/>
+<text text-anchor="middle" x="228" y="-676.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_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="272,-623 272,-713 428,-713 428,-623 272,-623"/>
-<text text-anchor="middle" x="350" y="-701" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="272,-694 428,-694 "/>
-<text text-anchor="middle" x="350" y="-682" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-675 428,-675 "/>
-<text text-anchor="start" x="280" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="280" y="-652" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="280" y="-641" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-630" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="272,-634 272,-724 428,-724 428,-634 272,-634"/>
+<text text-anchor="middle" x="350" y="-712" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="272,-705 428,-705 "/>
+<text text-anchor="middle" x="350" y="-693" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-686 428,-686 "/>
+<text text-anchor="start" x="280" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="280" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="280" y="-652" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-641" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node2 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M334.83,-622.9C312.73,-558.62 271.4,-438.46 244.82,-361.18"/>
-<polygon fill="none" stroke="#404040" points="244.75,-360.97 239.02,-356.6 240.85,-349.63 246.58,-354 244.75,-360.97"/>
-<text text-anchor="middle" x="295.5" y="-448" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M334.96,-633.63C312.81,-568.28 271.15,-445.39 244.53,-366.87"/>
+<polygon fill="none" stroke="#404040" points="244.41,-366.51 238.69,-362.11 240.56,-355.14 246.27,-359.54 244.41,-366.51"/>
+<text text-anchor="middle" x="295.5" y="-459" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</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="283,-899.5 283,-1132.5 417,-1132.5 417,-899.5 283,-899.5"/>
-<text text-anchor="middle" x="350" y="-1120.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="283,-1113.5 417,-1113.5 "/>
-<text text-anchor="start" x="291" y="-1101.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="283,-1094.5 417,-1094.5 "/>
+<polygon fill="white" stroke="black" points="283,-910.5 283,-1143.5 417,-1143.5 417,-910.5 283,-910.5"/>
+<text text-anchor="middle" x="350" y="-1131.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="283,-1124.5 417,-1124.5 "/>
+<text text-anchor="start" x="291" y="-1112.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="283,-1105.5 417,-1105.5 "/>
+<text text-anchor="start" x="291" y="-1093.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="291" y="-1082.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="291" y="-1071.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="291" y="-1060.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="291" y="-1049.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="291" y="-1038.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="291" y="-1027.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="291" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="291" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="291" y="-994.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="291" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="291" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="291" y="-1071.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="291" y="-1060.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="291" y="-1049.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="291" y="-1038.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="291" y="-1027.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="291" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="291" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="291" y="-994.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="291" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="291" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="291" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="291" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="291" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="291" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="291" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="291" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="291" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="291" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="291" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="291" y="-917.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="M350,-889.11C350,-827.57 350,-757.41 350,-713.17"/>
-<polygon fill="none" stroke="midnightblue" points="346.5,-889.31 350,-899.31 353.5,-889.31 346.5,-889.31"/>
+<path fill="none" stroke="midnightblue" d="M350,-900.11C350,-838.57 350,-768.41 350,-724.17"/>
+<polygon fill="none" stroke="midnightblue" points="346.5,-900.31 350,-910.31 353.5,-900.31 346.5,-900.31"/>
 </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="280,-1180.5 280,-1358.5 420,-1358.5 420,-1180.5 280,-1180.5"/>
-<text text-anchor="start" x="288" y="-1346.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="350" y="-1335.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="280,-1328.5 420,-1328.5 "/>
-<text text-anchor="middle" x="350" y="-1316.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="280,-1309.5 420,-1309.5 "/>
+<polygon fill="white" stroke="black" points="280,-1191.5 280,-1369.5 420,-1369.5 420,-1191.5 280,-1191.5"/>
+<text text-anchor="start" x="288" y="-1357.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="350" y="-1346.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="280,-1339.5 420,-1339.5 "/>
+<text text-anchor="middle" x="350" y="-1327.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="280,-1320.5 420,-1320.5 "/>
+<text text-anchor="start" x="288" y="-1308.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1297.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1286.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1264.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1253.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1242.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1231.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1220.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="288" y="-1209.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="288" y="-1198.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="288" y="-1187.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="288" y="-1242.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="288" y="-1231.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="288" y="-1220.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="288" y="-1209.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="288" y="-1198.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="M350,-1180.18C350,-1168.84 350,-1157.05 350,-1145.23"/>
-<polygon fill="none" stroke="#404040" points="350,-1144.91 346,-1138.91 350,-1132.91 354,-1138.91 350,-1144.91"/>
-<text text-anchor="middle" x="369.5" y="-1154" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M350,-1191.18C350,-1179.84 350,-1168.05 350,-1156.23"/>
+<polygon fill="none" stroke="#404040" points="350,-1155.91 346,-1149.91 350,-1143.91 354,-1149.91 350,-1155.91"/>
+<text text-anchor="middle" x="369.5" y="-1165" 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_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="325,-149.5 325,-426.5 457,-426.5 457,-149.5 325,-149.5"/>
-<text text-anchor="middle" x="391" y="-414.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="325,-407.5 457,-407.5 "/>
-<text text-anchor="middle" x="391" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="325,-388.5 457,-388.5 "/>
+<polygon fill="white" stroke="black" points="325,-149.5 325,-437.5 457,-437.5 457,-149.5 325,-149.5"/>
+<text text-anchor="middle" x="391" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="325,-418.5 457,-418.5 "/>
+<text text-anchor="middle" x="391" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="325,-399.5 457,-399.5 "/>
+<text text-anchor="start" x="333" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="333" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="333" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="333" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="333" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="333" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="333" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="333" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="333" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="333" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="333" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="333" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="333" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="333" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="333" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="333" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="333" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="333" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="333" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="333" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="333" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="333" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="333" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="333" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -232,8 +233,8 @@
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M340.6,-149.28C336,-136.71 331.52,-124.47 327.37,-113.14"/>
-<polygon fill="none" stroke="#404040" points="327.31,-112.96 321.49,-108.7 323.18,-101.69 329,-105.95 327.31,-112.96"/>
+<path fill="none" stroke="#404040" d="M339.86,-149.47C335.33,-136.82 330.93,-124.52 326.87,-113.15"/>
+<polygon fill="none" stroke="#404040" points="326.8,-112.97 321.02,-108.67 322.76,-101.67 328.55,-105.98 326.8,-112.97"/>
 <text text-anchor="middle" x="353" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1PrinterConfigNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1PrinterConfigNode__coll__graph.svg
index 01b64240fc..2432222607 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PrinterConfigNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1PrinterConfigNode__coll__graph.svg
@@ -365,39 +365,40 @@
 <g id="node10" class="node">
 <title>Node10</title>
 <g id="a_node10"><a xlink:href="classtvm_1_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="1042,-347.5 1042,-624.5 1174,-624.5 1174,-347.5 1042,-347.5"/>
-<text text-anchor="middle" x="1108" y="-612.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="1042,-605.5 1174,-605.5 "/>
-<text text-anchor="middle" x="1108" y="-593.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="1042,-586.5 1174,-586.5 "/>
-<text text-anchor="start" x="1050" y="-574.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="1050" y="-563.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="1050" y="-552.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="1050" y="-541.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="1050" y="-530.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="1050" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="1050" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="1050" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="1050" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="1050" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="1050" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
-<text text-anchor="start" x="1050" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
-<text text-anchor="start" x="1050" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
-<text text-anchor="start" x="1050" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
-<text text-anchor="start" x="1050" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ BFloat()</text>
-<text text-anchor="start" x="1050" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ NVFloat8E4M3()</text>
-<text text-anchor="start" x="1050" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ NVFloat8E5M2()</text>
-<text text-anchor="start" x="1050" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Bool()</text>
-<text text-anchor="start" x="1050" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Handle()</text>
-<text text-anchor="start" x="1050" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Void()</text>
-<text text-anchor="start" x="1050" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ShapeIndex()</text>
+<polygon fill="white" stroke="black" points="1042,-342 1042,-630 1174,-630 1174,-342 1042,-342"/>
+<text text-anchor="middle" x="1108" y="-618" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="1042,-611 1174,-611 "/>
+<text text-anchor="middle" x="1108" y="-599" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="1042,-592 1174,-592 "/>
+<text text-anchor="start" x="1050" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
+<text text-anchor="start" x="1050" y="-569" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
+<text text-anchor="start" x="1050" y="-558" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
+<text text-anchor="start" x="1050" y="-547" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="1050" y="-536" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="1050" y="-525" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="1050" y="-514" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="1050" y="-503" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="1050" y="-492" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="1050" y="-481" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="1050" y="-470" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="1050" y="-459" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
+<text text-anchor="start" x="1050" y="-448" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
+<text text-anchor="start" x="1050" y="-437" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
+<text text-anchor="start" x="1050" y="-426" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
+<text text-anchor="start" x="1050" y="-415" font-family="Helvetica,sans-Serif" font-size="10.00">+ BFloat()</text>
+<text text-anchor="start" x="1050" y="-404" font-family="Helvetica,sans-Serif" font-size="10.00">+ NVFloat8E4M3()</text>
+<text text-anchor="start" x="1050" y="-393" font-family="Helvetica,sans-Serif" font-size="10.00">+ NVFloat8E5M2()</text>
+<text text-anchor="start" x="1050" y="-382" font-family="Helvetica,sans-Serif" font-size="10.00">+ Bool()</text>
+<text text-anchor="start" x="1050" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00">+ Handle()</text>
+<text text-anchor="start" x="1050" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00">+ Void()</text>
+<text text-anchor="start" x="1050" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00">+ ShapeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node10&#45;&gt;Node1 -->
 <g id="edge14" class="edge">
 <title>Node10&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M1069.9,-347.42C1052.21,-307.24 1026.88,-267.15 991,-241 923.39,-191.73 834.31,-158.2 766.67,-137.78"/>
+<path fill="none" stroke="#404040" d="M1067.46,-342C1049.91,-303.66 1025.27,-265.97 991,-241 923.39,-191.73 834.31,-158.2 766.67,-137.78"/>
 <polygon fill="none" stroke="#404040" points="766.66,-137.77 759.77,-139.9 755.15,-134.36 762.04,-132.23 766.66,-137.77"/>
 <text text-anchor="middle" x="1058.5" y="-266" font-family="Helvetica,sans-Serif" font-size="10.00"> +buffer_dtype</text>
 <text text-anchor="middle" x="1058.5" y="-255" font-family="Helvetica,sans-Serif" font-size="10.00">+float_dtype</text>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TensorAffineTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1TensorAffineTypeNode.html
index 6a09ace153..1c49db48e9 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TensorAffineTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1TensorAffineTypeNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::TensorAffineTypeNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::TensorAffineTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TensorAffineTypeNode__coll__graph.svg" width="1014" height="1852"><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_1TensorAffineTypeNode__coll__graph.svg" width="1014" height="1867"><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_1TensorAffineTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1TensorAffineTypeNode__coll__graph.svg
index a6c84c6d7d..3a4761fdda 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TensorAffineTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1TensorAffineTypeNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::TensorAffineTypeNode Pages: 1 -->
-<svg width="760pt" height="1389pt"
- viewBox="0.00 0.00 760.00 1389.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 1385)">
+<svg width="760pt" height="1400pt"
+ viewBox="0.00 0.00 760.00 1400.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 1396)">
 <title>tvm::TensorAffineTypeNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1385 756,-1385 756,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1396 756,-1396 756,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -31,239 +31,240 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1AffineTypeNode.html" target="_top" xlink:title="AffineType representation.">
-<polygon fill="white" stroke="black" points="254.5,-254 254.5,-366 427.5,-366 427.5,-254 254.5,-254"/>
-<text text-anchor="middle" x="341" y="-354" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::AffineTypeNode</text>
-<polyline fill="none" stroke="black" points="254.5,-347 427.5,-347 "/>
-<text text-anchor="start" x="262.5" y="-335" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="262.5" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="262.5" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="262.5" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="262.5" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<polyline fill="none" stroke="black" points="254.5,-284 427.5,-284 "/>
-<text text-anchor="start" x="262.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="262.5" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="254.5,-259.5 254.5,-371.5 427.5,-371.5 427.5,-259.5 254.5,-259.5"/>
+<text text-anchor="middle" x="341" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::AffineTypeNode</text>
+<polyline fill="none" stroke="black" points="254.5,-352.5 427.5,-352.5 "/>
+<text text-anchor="start" x="262.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="262.5" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="262.5" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="262.5" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="262.5" y="-296.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<polyline fill="none" stroke="black" points="254.5,-289.5 427.5,-289.5 "/>
+<text text-anchor="start" x="262.5" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="262.5" y="-266.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="M384.37,-245.35C400.64,-221.82 419.44,-195.03 437,-171 451.06,-151.75 466.81,-130.98 481,-112.53"/>
-<polygon fill="none" stroke="midnightblue" points="381.3,-243.64 378.5,-253.86 387.06,-247.61 381.3,-243.64"/>
+<path fill="none" stroke="midnightblue" d="M382.18,-251.04C398.85,-225.88 418.49,-196.83 437,-171 450.81,-151.73 466.43,-131.04 480.58,-112.67"/>
+<polygon fill="none" stroke="midnightblue" points="379.24,-249.15 376.65,-259.42 385.08,-253 379.24,-249.15"/>
 </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,-496.5 0,-883.5 184,-883.5 184,-496.5 0,-496.5"/>
-<text text-anchor="middle" x="92" y="-871.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-864.5 184,-864.5 "/>
-<text text-anchor="start" x="8" y="-852.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-841.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-830.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-819.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-808.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-797.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-786.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-775.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-764.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-753.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-742.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-731.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-720.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-709.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-702.5 184,-702.5 "/>
-<text text-anchor="start" x="8" y="-690.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-679.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-668.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-657.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-646.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-507.5 0,-894.5 184,-894.5 184,-507.5 0,-507.5"/>
+<text text-anchor="middle" x="92" y="-882.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-875.5 184,-875.5 "/>
+<text text-anchor="start" x="8" y="-863.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-852.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-841.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-830.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-819.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-808.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-797.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-786.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-775.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-764.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-753.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-742.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-731.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-720.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-713.5 184,-713.5 "/>
+<text text-anchor="start" x="8" y="-701.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-690.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-679.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-668.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-657.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-646.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-635.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-624.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-613.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-613.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-602.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-591.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-580.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-569.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-558.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-547.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-514.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-591.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-580.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-569.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-558.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-547.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-514.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="M189.68,-540.72C230.05,-479.43 274.37,-412.15 304.55,-366.33"/>
-<polygon fill="none" stroke="midnightblue" points="186.59,-539.04 184.01,-549.32 192.43,-542.9 186.59,-539.04"/>
+<path fill="none" stroke="midnightblue" d="M189.47,-549.88C230.17,-487.19 274.93,-418.26 305.18,-371.68"/>
+<polygon fill="none" stroke="midnightblue" points="186.52,-548 184.01,-558.29 192.39,-551.81 186.52,-548"/>
 </g>
 <!-- Node3&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M184.28,-723.92C195.02,-717.66 202,-706.36 202,-690 202,-679.01 198.85,-670.3 193.52,-663.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-663.81 186.29,-663 184.28,-656.08 191.45,-656.89 193.46,-663.81"/>
-<text text-anchor="middle" x="228" y="-687.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-734.92C195.02,-728.66 202,-717.36 202,-701 202,-690.01 198.85,-681.3 193.52,-674.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-674.81 186.29,-674 184.28,-667.08 191.45,-667.89 193.46,-674.81"/>
+<text text-anchor="middle" x="228" y="-698.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_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="272,-645 272,-735 428,-735 428,-645 272,-645"/>
-<text text-anchor="middle" x="350" y="-723" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="272,-716 428,-716 "/>
-<text text-anchor="middle" x="350" y="-704" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-697 428,-697 "/>
-<text text-anchor="start" x="280" y="-685" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="280" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="280" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-652" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="272,-656 272,-746 428,-746 428,-656 272,-656"/>
+<text text-anchor="middle" x="350" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="272,-727 428,-727 "/>
+<text text-anchor="middle" x="350" y="-715" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-708 428,-708 "/>
+<text text-anchor="start" x="280" y="-696" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="280" y="-685" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="280" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node2 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M348.95,-644.9C347.39,-579.32 344.44,-455.56 342.61,-378.53"/>
-<polygon fill="none" stroke="#404040" points="342.6,-378.11 338.46,-372.21 342.31,-366.11 346.45,-372.02 342.6,-378.11"/>
-<text text-anchor="middle" x="362.5" y="-470" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M348.96,-655.63C347.39,-588.82 344.41,-461.89 342.58,-383.69"/>
+<polygon fill="none" stroke="#404040" points="342.57,-383.57 338.43,-377.66 342.29,-371.57 346.43,-377.48 342.57,-383.57"/>
+<text text-anchor="middle" x="362.5" y="-481" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</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="369,-921.5 369,-1154.5 503,-1154.5 503,-921.5 369,-921.5"/>
-<text text-anchor="middle" x="436" y="-1142.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="369,-1135.5 503,-1135.5 "/>
-<text text-anchor="start" x="377" y="-1123.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="369,-1116.5 503,-1116.5 "/>
+<polygon fill="white" stroke="black" points="369,-932.5 369,-1165.5 503,-1165.5 503,-932.5 369,-932.5"/>
+<text text-anchor="middle" x="436" y="-1153.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="369,-1146.5 503,-1146.5 "/>
+<text text-anchor="start" x="377" y="-1134.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="369,-1127.5 503,-1127.5 "/>
+<text text-anchor="start" x="377" y="-1115.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="377" y="-1104.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="377" y="-1093.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="377" y="-1082.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="377" y="-1071.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="377" y="-1060.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="377" y="-1049.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="377" y="-1038.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="377" y="-1027.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="377" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="377" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="377" y="-994.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="377" y="-1093.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="377" y="-1082.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="377" y="-1071.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="377" y="-1060.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="377" y="-1049.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="377" y="-1038.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="377" y="-1027.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="377" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="377" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="377" y="-994.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="377" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="377" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="377" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="377" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="377" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="377" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="377" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="377" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="377" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="377" y="-939.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="M404.8,-911.49C389.48,-849.86 372,-779.5 360.98,-735.17"/>
-<polygon fill="none" stroke="midnightblue" points="401.43,-912.45 407.24,-921.31 408.23,-910.76 401.43,-912.45"/>
+<path fill="none" stroke="midnightblue" d="M404.8,-922.49C389.48,-860.86 372,-790.5 360.98,-746.17"/>
+<polygon fill="none" stroke="midnightblue" points="401.43,-923.45 407.24,-932.31 408.23,-921.76 401.43,-923.45"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1BaseExpr.html" target="_top" xlink:title="Managed reference to BaseExprNode.">
-<polygon fill="white" stroke="black" points="446,-656 446,-724 602,-724 602,-656 446,-656"/>
-<text text-anchor="middle" x="524" y="-712" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
-<polyline fill="none" stroke="black" points="446,-705 602,-705 "/>
-<text text-anchor="middle" x="524" y="-693" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="446,-686 602,-686 "/>
-<text text-anchor="start" x="454" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="454" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="446,-667 446,-735 602,-735 602,-667 446,-667"/>
+<text text-anchor="middle" x="524" y="-723" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
+<polyline fill="none" stroke="black" points="446,-716 602,-716 "/>
+<text text-anchor="middle" x="524" y="-704" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="446,-697 602,-697 "/>
+<text text-anchor="start" x="454" y="-685" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="454" y="-674" 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="M467.92,-911.5C484.97,-844.46 504.64,-767.12 515.57,-724.16"/>
-<polygon fill="none" stroke="midnightblue" points="464.5,-910.75 465.43,-921.31 471.28,-912.48 464.5,-910.75"/>
+<path fill="none" stroke="midnightblue" d="M467.92,-922.5C484.97,-855.46 504.64,-778.12 515.57,-735.16"/>
+<polygon fill="none" stroke="midnightblue" points="464.5,-921.75 465.43,-932.31 471.28,-923.48 464.5,-921.75"/>
 </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="366,-1202.5 366,-1380.5 506,-1380.5 506,-1202.5 366,-1202.5"/>
-<text text-anchor="start" x="374" y="-1368.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="436" y="-1357.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="366,-1350.5 506,-1350.5 "/>
-<text text-anchor="middle" x="436" y="-1338.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="366,-1331.5 506,-1331.5 "/>
+<polygon fill="white" stroke="black" points="366,-1213.5 366,-1391.5 506,-1391.5 506,-1213.5 366,-1213.5"/>
+<text text-anchor="start" x="374" y="-1379.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="436" y="-1368.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="366,-1361.5 506,-1361.5 "/>
+<text text-anchor="middle" x="436" y="-1349.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="366,-1342.5 506,-1342.5 "/>
+<text text-anchor="start" x="374" y="-1330.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="374" y="-1319.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="374" y="-1308.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="374" y="-1297.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="374" y="-1286.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="374" y="-1275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="374" y="-1264.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="374" y="-1253.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="374" y="-1242.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="374" y="-1231.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="374" y="-1220.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="374" y="-1209.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="374" y="-1264.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="374" y="-1253.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="374" y="-1242.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="374" y="-1231.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="374" y="-1220.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="M436,-1202.18C436,-1190.84 436,-1179.05 436,-1167.23"/>
-<polygon fill="none" stroke="#404040" points="436,-1166.91 432,-1160.91 436,-1154.91 440,-1160.91 436,-1166.91"/>
-<text text-anchor="middle" x="455.5" y="-1176" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M436,-1213.18C436,-1201.84 436,-1190.05 436,-1178.23"/>
+<polygon fill="none" stroke="#404040" points="436,-1177.91 432,-1171.91 436,-1165.91 440,-1171.91 436,-1177.91"/>
+<text text-anchor="middle" x="455.5" y="-1187" 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_1RelayExpr.html" target="_top" xlink:title="Managed reference to RelayExprNode.">
-<polygon fill="white" stroke="black" points="446,-276 446,-344 602,-344 602,-276 446,-276"/>
-<text text-anchor="middle" x="524" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExpr</text>
-<polyline fill="none" stroke="black" points="446,-325 602,-325 "/>
-<text text-anchor="middle" x="524" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="446,-306 602,-306 "/>
-<text text-anchor="start" x="454" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="454" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="446,-281.5 446,-349.5 602,-349.5 602,-281.5 446,-281.5"/>
+<text text-anchor="middle" x="524" y="-337.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExpr</text>
+<polyline fill="none" stroke="black" points="446,-330.5 602,-330.5 "/>
+<text text-anchor="middle" x="524" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="446,-311.5 602,-311.5 "/>
+<text text-anchor="start" x="454" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="454" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</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="M524,-275.86C524,-237.62 524,-173.74 524,-124.92"/>
-<polygon fill="none" stroke="#404040" points="524,-124.86 520,-118.86 524,-112.86 528,-118.86 524,-124.86"/>
+<path fill="none" stroke="#404040" d="M524,-281.43C524,-242.1 524,-175.46 524,-125.07"/>
+<polygon fill="none" stroke="#404040" points="524,-124.97 520,-118.97 524,-112.97 528,-118.97 524,-124.97"/>
 <text text-anchor="middle" x="554" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00"> +scale</text>
 <text text-anchor="middle" x="554" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">+zero_point</text>
 </g>
 <!-- Node8&#45;&gt;Node7 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M524,-645.55C524,-569.14 524,-412.3 524,-344"/>
-<polygon fill="none" stroke="midnightblue" points="520.5,-645.79 524,-655.79 527.5,-645.79 520.5,-645.79"/>
+<path fill="none" stroke="midnightblue" d="M524,-656.62C524,-579.2 524,-418.87 524,-349.59"/>
+<polygon fill="none" stroke="midnightblue" points="520.5,-656.97 524,-666.97 527.5,-656.97 520.5,-656.97"/>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node">
 <title>Node9</title>
 <g id="a_node9"><a xlink:href="classtvm_1_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="620,-171.5 620,-448.5 752,-448.5 752,-171.5 620,-171.5"/>
-<text text-anchor="middle" x="686" y="-436.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="620,-429.5 752,-429.5 "/>
-<text text-anchor="middle" x="686" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="620,-410.5 752,-410.5 "/>
+<polygon fill="white" stroke="black" points="620,-171.5 620,-459.5 752,-459.5 752,-171.5 620,-171.5"/>
+<text text-anchor="middle" x="686" y="-447.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="620,-440.5 752,-440.5 "/>
+<text text-anchor="middle" x="686" y="-428.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="620,-421.5 752,-421.5 "/>
+<text text-anchor="start" x="628" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="628" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="628" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="628" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="628" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="628" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="628" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="628" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="628" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="628" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="628" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="628" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="628" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="628" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="628" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="628" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="628" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="628" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="628" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="628" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="628" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="628" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="628" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="628" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -280,7 +281,7 @@
 <!-- Node9&#45;&gt;Node1 -->
 <g id="edge10" class="edge">
 <title>Node9&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M619.89,-180.4C609.81,-163.4 599.05,-146.51 588,-131 585.97,-128.16 583.86,-125.3 581.68,-122.44"/>
+<path fill="none" stroke="#404040" d="M619.82,-180.75C609.82,-163.59 599.11,-146.59 588,-131 585.97,-128.16 583.86,-125.3 581.68,-122.44"/>
 <polygon fill="none" stroke="#404040" points="581.5,-122.2 574.65,-119.95 574.09,-112.76 580.94,-115.01 581.5,-122.2"/>
 <text text-anchor="middle" x="620" y="-139.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TensorTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1TensorTypeNode.html
index 9c6afa78b9..74bae79718 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TensorTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1TensorTypeNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::TensorTypeNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::TensorTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TensorTypeNode__coll__graph.svg" width="832" height="2392"><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_1TensorTypeNode__coll__graph.svg" width="832" height="2407"><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_1TensorTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1TensorTypeNode__coll__graph.svg
index 64cfa771ae..d756dbe20f 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TensorTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1TensorTypeNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::TensorTypeNode Pages: 1 -->
-<svg width="624pt" height="1794pt"
- viewBox="0.00 0.00 624.00 1794.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 1790)">
+<svg width="624pt" height="1805pt"
+ viewBox="0.00 0.00 624.00 1805.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 1801)">
 <title>tvm::TensorTypeNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1790 620,-1790 620,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1801 620,-1801 620,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -31,172 +31,173 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1BaseTensorTypeNode.html" target="_top" xlink:title="Base of all Tensor types This container can hold TensorType or GenericTensorType.">
-<polygon fill="white" stroke="black" points="254.5,-259.5 254.5,-338.5 427.5,-338.5 427.5,-259.5 254.5,-259.5"/>
-<text text-anchor="middle" x="341" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseTensorTypeNode</text>
-<polyline fill="none" stroke="black" points="254.5,-319.5 427.5,-319.5 "/>
-<text text-anchor="start" x="262.5" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="262.5" y="-296.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="254.5,-289.5 427.5,-289.5 "/>
-<text text-anchor="start" x="262.5" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="262.5" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="254.5,-265 254.5,-344 427.5,-344 427.5,-265 254.5,-265"/>
+<text text-anchor="middle" x="341" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseTensorTypeNode</text>
+<polyline fill="none" stroke="black" points="254.5,-325 427.5,-325 "/>
+<text text-anchor="start" x="262.5" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="262.5" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="254.5,-295 427.5,-295 "/>
+<text text-anchor="start" x="262.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="262.5" y="-272" 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="M363.87,-250.16C382.83,-210.52 409.78,-154.16 429.64,-112.63"/>
-<polygon fill="none" stroke="midnightblue" points="360.63,-248.83 359.48,-259.36 366.95,-251.85 360.63,-248.83"/>
+<path fill="none" stroke="midnightblue" d="M363.4,-255.57C382.53,-214.66 410.04,-155.81 430.11,-112.89"/>
+<polygon fill="none" stroke="midnightblue" points="360.16,-254.25 359.1,-264.79 366.5,-257.22 360.16,-254.25"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="black" points="254.5,-485.5 254.5,-608.5 427.5,-608.5 427.5,-485.5 254.5,-485.5"/>
-<text text-anchor="middle" x="341" y="-596.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<polyline fill="none" stroke="black" points="254.5,-589.5 427.5,-589.5 "/>
-<text text-anchor="start" x="262.5" y="-577.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="262.5" y="-566.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="262.5" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="262.5" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="262.5" y="-533.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="262.5" y="-522.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="254.5,-515.5 427.5,-515.5 "/>
-<text text-anchor="start" x="262.5" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="262.5" y="-492.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="254.5,-496.5 254.5,-619.5 427.5,-619.5 427.5,-496.5 254.5,-496.5"/>
+<text text-anchor="middle" x="341" y="-607.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<polyline fill="none" stroke="black" points="254.5,-600.5 427.5,-600.5 "/>
+<text text-anchor="start" x="262.5" y="-588.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="262.5" y="-577.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="262.5" y="-566.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="262.5" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="262.5" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="262.5" y="-533.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="254.5,-526.5 427.5,-526.5 "/>
+<text text-anchor="start" x="262.5" y="-514.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="262.5" y="-503.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="M341,-475.03C341,-430.61 341,-375.1 341,-338.65"/>
-<polygon fill="none" stroke="midnightblue" points="337.5,-475.19 341,-485.19 344.5,-475.19 337.5,-475.19"/>
+<path fill="none" stroke="midnightblue" d="M341,-486.21C341,-440.11 341,-381.75 341,-344.03"/>
+<polygon fill="none" stroke="midnightblue" points="337.5,-486.44 341,-496.44 344.5,-486.44 337.5,-486.44"/>
 </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,-901.5 0,-1288.5 184,-1288.5 184,-901.5 0,-901.5"/>
-<text text-anchor="middle" x="92" y="-1276.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-1269.5 184,-1269.5 "/>
-<text text-anchor="start" x="8" y="-1257.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-1246.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-1235.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-1224.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-1213.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-1202.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-1191.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-1180.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-1169.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-1158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-1147.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-1136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-1125.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-1114.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-1107.5 184,-1107.5 "/>
-<text text-anchor="start" x="8" y="-1095.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-1084.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-1073.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-1062.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-1051.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-912.5 0,-1299.5 184,-1299.5 184,-912.5 0,-912.5"/>
+<text text-anchor="middle" x="92" y="-1287.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-1280.5 184,-1280.5 "/>
+<text text-anchor="start" x="8" y="-1268.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-1257.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-1246.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-1235.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-1224.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-1213.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-1202.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-1191.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-1180.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-1169.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-1158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-1147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-1136.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-1125.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-1118.5 184,-1118.5 "/>
+<text text-anchor="start" x="8" y="-1106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-1095.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-1084.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-1073.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-1062.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-1051.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-1040.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-1029.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-1018.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-1018.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-1007.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-996.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-985.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-974.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-963.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-952.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-941.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-930.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-919.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-908.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-996.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-985.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-974.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-963.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-952.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-941.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-930.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-919.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="M184.24,-891.74C230.13,-791.12 282.29,-676.73 313.38,-608.56"/>
-<polygon fill="none" stroke="midnightblue" points="180.93,-890.57 179.96,-901.12 187.3,-893.47 180.93,-890.57"/>
+<path fill="none" stroke="midnightblue" d="M184.24,-902.74C230.13,-802.12 282.29,-687.73 313.38,-619.56"/>
+<polygon fill="none" stroke="midnightblue" points="180.93,-901.57 179.96,-912.12 187.3,-904.47 180.93,-901.57"/>
 </g>
 <!-- Node4&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M184.28,-1128.92C195.02,-1122.66 202,-1111.36 202,-1095 202,-1084.01 198.85,-1075.3 193.52,-1068.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-1068.81 186.29,-1068 184.28,-1061.08 191.45,-1061.89 193.46,-1068.81"/>
-<text text-anchor="middle" x="228" y="-1092.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-1139.92C195.02,-1133.66 202,-1122.36 202,-1106 202,-1095.01 198.85,-1086.3 193.52,-1079.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-1079.81 186.29,-1079 184.28,-1072.08 191.45,-1072.89 193.46,-1079.81"/>
+<text text-anchor="middle" x="228" y="-1103.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="272,-1050 272,-1140 428,-1140 428,-1050 272,-1050"/>
-<text text-anchor="middle" x="350" y="-1128" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="272,-1121 428,-1121 "/>
-<text text-anchor="middle" x="350" y="-1109" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-1102 428,-1102 "/>
-<text text-anchor="start" x="280" y="-1090" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="280" y="-1079" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="280" y="-1068" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-1057" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="272,-1061 272,-1151 428,-1151 428,-1061 272,-1061"/>
+<text text-anchor="middle" x="350" y="-1139" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="272,-1132 428,-1132 "/>
+<text text-anchor="middle" x="350" y="-1120" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-1113 428,-1113 "/>
+<text text-anchor="start" x="280" y="-1101" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="280" y="-1090" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="280" y="-1079" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-1068" 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="M349.27,-1049.78C347.72,-955.84 344.09,-735.61 342.2,-620.69"/>
-<polygon fill="none" stroke="#404040" points="342.2,-620.56 338.1,-614.62 342,-608.56 346.1,-614.49 342.2,-620.56"/>
-<text text-anchor="middle" x="364.5" y="-752.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M349.27,-1060.78C347.72,-966.84 344.09,-746.61 342.2,-631.69"/>
+<polygon fill="none" stroke="#404040" points="342.2,-631.56 338.1,-625.62 342,-619.56 346.1,-625.49 342.2,-631.56"/>
+<text text-anchor="middle" x="364.5" y="-763.5" 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="336,-1326.5 336,-1559.5 470,-1559.5 470,-1326.5 336,-1326.5"/>
-<text text-anchor="middle" x="403" y="-1547.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="336,-1540.5 470,-1540.5 "/>
-<text text-anchor="start" x="344" y="-1528.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="336,-1521.5 470,-1521.5 "/>
+<polygon fill="white" stroke="black" points="336,-1337.5 336,-1570.5 470,-1570.5 470,-1337.5 336,-1337.5"/>
+<text text-anchor="middle" x="403" y="-1558.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="336,-1551.5 470,-1551.5 "/>
+<text text-anchor="start" x="344" y="-1539.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="336,-1532.5 470,-1532.5 "/>
+<text text-anchor="start" x="344" y="-1520.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="344" y="-1509.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="344" y="-1498.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="344" y="-1487.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="344" y="-1476.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="344" y="-1465.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="344" y="-1454.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="344" y="-1443.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="344" y="-1432.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="344" y="-1421.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="344" y="-1410.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="344" y="-1399.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="344" y="-1498.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="344" y="-1487.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="344" y="-1476.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="344" y="-1465.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="344" y="-1454.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="344" y="-1443.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="344" y="-1432.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="344" y="-1421.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="344" y="-1410.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="344" y="-1399.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="344" y="-1388.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="344" y="-1377.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="344" y="-1366.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="344" y="-1355.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="344" y="-1344.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="344" y="-1333.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="344" y="-1377.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="344" y="-1366.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="344" y="-1355.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="344" y="-1344.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="M383.72,-1316.11C374.29,-1254.57 363.54,-1184.41 356.77,-1140.17"/>
-<polygon fill="none" stroke="midnightblue" points="380.3,-1316.95 385.28,-1326.31 387.22,-1315.89 380.3,-1316.95"/>
+<path fill="none" stroke="midnightblue" d="M383.72,-1327.11C374.29,-1265.57 363.54,-1195.41 356.77,-1151.17"/>
+<polygon fill="none" stroke="midnightblue" points="380.3,-1327.95 385.28,-1337.31 387.22,-1326.89 380.3,-1327.95"/>
 </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="395.5,-627.5 395.5,-882.5 516.5,-882.5 516.5,-627.5 395.5,-627.5"/>
-<text text-anchor="start" x="403.5" y="-870.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
-<text text-anchor="middle" x="456" y="-859.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::PrimExpr &gt;</text>
-<polyline fill="none" stroke="black" points="395.5,-852.5 516.5,-852.5 "/>
-<text text-anchor="middle" x="456" y="-840.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="395.5,-833.5 516.5,-833.5 "/>
+<polygon fill="white" stroke="black" points="395.5,-638.5 395.5,-893.5 516.5,-893.5 516.5,-638.5 395.5,-638.5"/>
+<text text-anchor="start" x="403.5" y="-881.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
+<text text-anchor="middle" x="456" y="-870.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::PrimExpr &gt;</text>
+<polyline fill="none" stroke="black" points="395.5,-863.5 516.5,-863.5 "/>
+<text text-anchor="middle" x="456" y="-851.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="395.5,-844.5 516.5,-844.5 "/>
+<text text-anchor="start" x="403.5" y="-832.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
 <text text-anchor="start" x="403.5" y="-821.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
 <text text-anchor="start" x="403.5" y="-810.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
 <text text-anchor="start" x="403.5" y="-799.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
@@ -204,84 +205,84 @@
 <text text-anchor="start" x="403.5" y="-777.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
 <text text-anchor="start" x="403.5" y="-766.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
 <text text-anchor="start" x="403.5" y="-755.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="403.5" y="-744.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="403.5" y="-744.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="403.5" y="-733.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="403.5" y="-722.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="403.5" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
+<text text-anchor="start" x="403.5" y="-722.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
+<text text-anchor="start" x="403.5" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
 <text text-anchor="start" x="403.5" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
 <text text-anchor="start" x="403.5" y="-689.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="403.5" y="-678.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="403.5" y="-678.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
 <text text-anchor="start" x="403.5" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
 <text text-anchor="start" x="403.5" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="403.5" y="-645.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="403.5" y="-634.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
+<text text-anchor="start" x="403.5" y="-645.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="M432.85,-1316.29C434.45,-1307.09 435.86,-1297.92 437,-1289 454.67,-1150.77 458.13,-990.86 457.98,-882.53"/>
-<polygon fill="none" stroke="midnightblue" points="429.38,-1315.81 431.05,-1326.27 436.27,-1317.05 429.38,-1315.81"/>
+<path fill="none" stroke="midnightblue" d="M432.85,-1327.29C434.45,-1318.09 435.86,-1308.92 437,-1300 454.67,-1161.77 458.13,-1001.86 457.98,-893.53"/>
+<polygon fill="none" stroke="midnightblue" points="429.38,-1326.81 431.05,-1337.27 436.27,-1328.05 429.38,-1326.81"/>
 </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="333,-1607.5 333,-1785.5 473,-1785.5 473,-1607.5 333,-1607.5"/>
-<text text-anchor="start" x="341" y="-1773.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="403" y="-1762.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="333,-1755.5 473,-1755.5 "/>
-<text text-anchor="middle" x="403" y="-1743.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="333,-1736.5 473,-1736.5 "/>
+<polygon fill="white" stroke="black" points="333,-1618.5 333,-1796.5 473,-1796.5 473,-1618.5 333,-1618.5"/>
+<text text-anchor="start" x="341" y="-1784.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="403" y="-1773.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="333,-1766.5 473,-1766.5 "/>
+<text text-anchor="middle" x="403" y="-1754.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="333,-1747.5 473,-1747.5 "/>
+<text text-anchor="start" x="341" y="-1735.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="341" y="-1724.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="341" y="-1713.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="341" y="-1702.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="341" y="-1691.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="341" y="-1680.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="341" y="-1669.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="341" y="-1658.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="341" y="-1647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="341" y="-1636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="341" y="-1625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="341" y="-1614.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="341" y="-1669.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="341" y="-1658.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="341" y="-1647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="341" y="-1636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="341" y="-1625.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="M403,-1607.18C403,-1595.84 403,-1584.05 403,-1572.23"/>
-<polygon fill="none" stroke="#404040" points="403,-1571.91 399,-1565.91 403,-1559.91 407,-1565.91 403,-1571.91"/>
-<text text-anchor="middle" x="422.5" y="-1581" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M403,-1618.18C403,-1606.84 403,-1595.05 403,-1583.23"/>
+<polygon fill="none" stroke="#404040" points="403,-1582.91 399,-1576.91 403,-1570.91 407,-1576.91 403,-1582.91"/>
+<text text-anchor="middle" x="422.5" y="-1592" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node8&#45;&gt;Node1 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M456,-627.47C456,-479.7 456,-240.76 456,-124.85"/>
-<polygon fill="none" stroke="#404040" points="456,-124.68 452,-118.68 456,-112.68 460,-118.68 456,-124.68"/>
-<text text-anchor="middle" x="476.5" y="-459" font-family="Helvetica,sans-Serif" font-size="10.00"> +shape</text>
+<path fill="none" stroke="#404040" d="M456,-638.1C456,-487.71 456,-242.68 456,-124.9"/>
+<polygon fill="none" stroke="#404040" points="456,-124.54 452,-118.54 456,-112.54 460,-118.54 456,-124.54"/>
+<text text-anchor="middle" x="476.5" y="-470" font-family="Helvetica,sans-Serif" font-size="10.00"> +shape</text>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node">
 <title>Node9</title>
 <g id="a_node9"><a xlink:href="classtvm_1_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="484,-160.5 484,-437.5 616,-437.5 616,-160.5 484,-160.5"/>
-<text text-anchor="middle" x="550" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="484,-418.5 616,-418.5 "/>
-<text text-anchor="middle" x="550" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="484,-399.5 616,-399.5 "/>
+<polygon fill="white" stroke="black" points="484,-160.5 484,-448.5 616,-448.5 616,-160.5 484,-160.5"/>
+<text text-anchor="middle" x="550" y="-436.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="484,-429.5 616,-429.5 "/>
+<text text-anchor="middle" x="550" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="484,-410.5 616,-410.5 "/>
+<text text-anchor="start" x="492" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="492" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="492" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="492" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="492" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="492" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="492" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="492" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="492" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="492" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="492" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="492" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="492" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="492" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="492" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="492" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="492" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="492" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="492" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="492" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="492" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="492" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="492" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="492" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -298,8 +299,8 @@
 <!-- Node9&#45;&gt;Node1 -->
 <g id="edge10" class="edge">
 <title>Node9&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M496.14,-160.19C491.21,-147.6 486.39,-135.27 481.9,-123.76"/>
-<polygon fill="none" stroke="#404040" points="481.89,-123.74 475.98,-119.61 477.52,-112.56 483.43,-116.69 481.89,-123.74"/>
+<path fill="none" stroke="#404040" d="M495.32,-160.4C490.47,-147.72 485.74,-135.33 481.33,-123.79"/>
+<polygon fill="none" stroke="#404040" points="481.32,-123.76 475.44,-119.59 477.04,-112.55 482.92,-116.73 481.32,-123.76"/>
 <text text-anchor="middle" x="507" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterMapExprNode.html b/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterMapExprNode.html
index 7e5ade500f..67ede4bff0 100644
--- a/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterMapExprNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterMapExprNode.html
@@ -87,7 +87,7 @@ Inheritance diagram for tvm::arith::IterMapExprNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::arith::IterMapExprNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1arith_1_1IterMapExprNode__coll__graph.svg" width="620" height="1994"><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_1arith_1_1IterMapExprNode__coll__graph.svg" width="620" height="2008"><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_1arith_1_1IterMapExprNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterMapExprNode__coll__graph.svg
index 98a4df12b1..81d29f6f54 100644
--- a/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterMapExprNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterMapExprNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::arith::IterMapExprNode Pages: 1 -->
-<svg width="465pt" height="1495pt"
- viewBox="0.00 0.00 465.00 1495.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 1491)">
+<svg width="465pt" height="1506pt"
+ viewBox="0.00 0.00 465.00 1506.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 1502)">
 <title>tvm::arith::IterMapExprNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1491 461,-1491 461,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1502 461,-1502 461,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -52,192 +52,193 @@
 <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="133.5,-354.5 133.5,-477.5 306.5,-477.5 306.5,-354.5 133.5,-354.5"/>
-<text text-anchor="middle" x="220" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
-<polyline fill="none" stroke="black" points="133.5,-458.5 306.5,-458.5 "/>
-<text text-anchor="start" x="141.5" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="141.5" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="141.5" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="141.5" y="-413.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="141.5" y="-402.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="141.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="133.5,-384.5 306.5,-384.5 "/>
-<text text-anchor="start" x="141.5" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="141.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="133.5,-360 133.5,-483 306.5,-483 306.5,-360 133.5,-360"/>
+<text text-anchor="middle" x="220" y="-471" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
+<polyline fill="none" stroke="black" points="133.5,-464 306.5,-464 "/>
+<text text-anchor="start" x="141.5" y="-452" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="141.5" y="-441" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="141.5" y="-430" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="141.5" y="-419" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="141.5" y="-408" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="141.5" y="-397" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="133.5,-390 306.5,-390 "/>
+<text text-anchor="start" x="141.5" y="-378" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="141.5" y="-367" 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="M245.41,-344.74C258.82,-307.66 274.96,-263.06 287.05,-229.62"/>
-<polygon fill="none" stroke="midnightblue" points="242,-343.89 241.89,-354.48 248.58,-346.27 242,-343.89"/>
+<path fill="none" stroke="midnightblue" d="M244.85,-350.18C258.51,-311.54 275.12,-264.54 287.42,-229.73"/>
+<polygon fill="none" stroke="midnightblue" points="241.48,-349.22 241.45,-359.81 248.08,-351.55 241.48,-349.22"/>
 </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,-602.5 0,-989.5 184,-989.5 184,-602.5 0,-602.5"/>
-<text text-anchor="middle" x="92" y="-977.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-970.5 184,-970.5 "/>
-<text text-anchor="start" x="8" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-936.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-925.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-914.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-903.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-892.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-881.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-870.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-859.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-848.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-837.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-826.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-815.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-808.5 184,-808.5 "/>
-<text text-anchor="start" x="8" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-785.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-774.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-763.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-752.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-613.5 0,-1000.5 184,-1000.5 184,-613.5 0,-613.5"/>
+<text text-anchor="middle" x="92" y="-988.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-981.5 184,-981.5 "/>
+<text text-anchor="start" x="8" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-936.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-925.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-914.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-903.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-892.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-881.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-870.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-859.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-848.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-837.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-826.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-819.5 184,-819.5 "/>
+<text text-anchor="start" x="8" y="-807.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-785.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-774.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-763.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-752.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-741.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-730.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-719.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-719.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-708.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-697.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-686.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-675.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-653.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-642.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-631.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-620.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-609.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-697.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-686.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-675.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-653.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-642.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-631.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-620.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="M160.46,-592.84C174.71,-550.75 188.67,-509.53 199.48,-477.59"/>
-<polygon fill="none" stroke="midnightblue" points="157.11,-591.81 157.22,-602.4 163.74,-594.05 157.11,-591.81"/>
+<path fill="none" stroke="midnightblue" d="M159.51,-603.72C174.18,-559.78 188.6,-516.57 199.68,-483.37"/>
+<polygon fill="none" stroke="midnightblue" points="156.13,-602.81 156.28,-613.41 162.77,-605.03 156.13,-602.81"/>
 </g>
 <!-- Node4&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M184.28,-829.92C195.02,-823.66 202,-812.36 202,-796 202,-785.01 198.85,-776.3 193.52,-769.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-769.81 186.29,-769 184.28,-762.08 191.45,-762.89 193.46,-769.81"/>
-<text text-anchor="middle" x="228" y="-793.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-840.92C195.02,-834.66 202,-823.36 202,-807 202,-796.01 198.85,-787.3 193.52,-780.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-780.81 186.29,-780 184.28,-773.08 191.45,-773.89 193.46,-780.81"/>
+<text text-anchor="middle" x="228" y="-804.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="272,-751 272,-841 428,-841 428,-751 272,-751"/>
-<text text-anchor="middle" x="350" y="-829" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="272,-822 428,-822 "/>
-<text text-anchor="middle" x="350" y="-810" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-803 428,-803 "/>
-<text text-anchor="start" x="280" y="-791" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="280" y="-780" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="280" y="-769" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-758" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="272,-762 272,-852 428,-852 428,-762 272,-762"/>
+<text text-anchor="middle" x="350" y="-840" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="272,-833 428,-833 "/>
+<text text-anchor="middle" x="350" y="-821" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-814 428,-814 "/>
+<text text-anchor="start" x="280" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="280" y="-791" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="280" y="-780" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-769" 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="M334.83,-750.9C312.73,-686.62 271.4,-566.46 244.82,-489.18"/>
-<polygon fill="none" stroke="#404040" points="244.75,-488.97 239.02,-484.6 240.85,-477.63 246.58,-482 244.75,-488.97"/>
-<text text-anchor="middle" x="295.5" y="-576" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M334.96,-761.63C312.81,-696.28 271.15,-573.39 244.53,-494.87"/>
+<polygon fill="none" stroke="#404040" points="244.41,-494.51 238.69,-490.11 240.56,-483.14 246.27,-487.54 244.41,-494.51"/>
+<text text-anchor="middle" x="295.5" y="-587" 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="283,-1027.5 283,-1260.5 417,-1260.5 417,-1027.5 283,-1027.5"/>
-<text text-anchor="middle" x="350" y="-1248.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="283,-1241.5 417,-1241.5 "/>
-<text text-anchor="start" x="291" y="-1229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="283,-1222.5 417,-1222.5 "/>
+<polygon fill="white" stroke="black" points="283,-1038.5 283,-1271.5 417,-1271.5 417,-1038.5 283,-1038.5"/>
+<text text-anchor="middle" x="350" y="-1259.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="283,-1252.5 417,-1252.5 "/>
+<text text-anchor="start" x="291" y="-1240.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="283,-1233.5 417,-1233.5 "/>
+<text text-anchor="start" x="291" y="-1221.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="291" y="-1210.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="291" y="-1199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="291" y="-1188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="291" y="-1177.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="291" y="-1166.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="291" y="-1155.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="291" y="-1144.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="291" y="-1133.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="291" y="-1122.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="291" y="-1111.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="291" y="-1100.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="291" y="-1199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="291" y="-1188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="291" y="-1177.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="291" y="-1166.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="291" y="-1155.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="291" y="-1144.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="291" y="-1133.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="291" y="-1122.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="291" y="-1111.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="291" y="-1100.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="291" y="-1089.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="291" y="-1078.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="291" y="-1067.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="291" y="-1056.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="291" y="-1045.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="291" y="-1034.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="291" y="-1078.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="291" y="-1067.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="291" y="-1056.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="291" y="-1045.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="M350,-1017.11C350,-955.57 350,-885.41 350,-841.17"/>
-<polygon fill="none" stroke="midnightblue" points="346.5,-1017.31 350,-1027.31 353.5,-1017.31 346.5,-1017.31"/>
+<path fill="none" stroke="midnightblue" d="M350,-1028.11C350,-966.57 350,-896.41 350,-852.17"/>
+<polygon fill="none" stroke="midnightblue" points="346.5,-1028.31 350,-1038.31 353.5,-1028.31 346.5,-1028.31"/>
 </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="280,-1308.5 280,-1486.5 420,-1486.5 420,-1308.5 280,-1308.5"/>
-<text text-anchor="start" x="288" y="-1474.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="350" y="-1463.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="280,-1456.5 420,-1456.5 "/>
-<text text-anchor="middle" x="350" y="-1444.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="280,-1437.5 420,-1437.5 "/>
+<polygon fill="white" stroke="black" points="280,-1319.5 280,-1497.5 420,-1497.5 420,-1319.5 280,-1319.5"/>
+<text text-anchor="start" x="288" y="-1485.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="350" y="-1474.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="280,-1467.5 420,-1467.5 "/>
+<text text-anchor="middle" x="350" y="-1455.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="280,-1448.5 420,-1448.5 "/>
+<text text-anchor="start" x="288" y="-1436.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1425.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1414.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1403.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1392.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1381.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1359.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1348.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="288" y="-1337.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="288" y="-1326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="288" y="-1315.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="288" y="-1370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="288" y="-1359.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="288" y="-1348.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="288" y="-1337.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="288" y="-1326.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="M350,-1308.18C350,-1296.84 350,-1285.05 350,-1273.23"/>
-<polygon fill="none" stroke="#404040" points="350,-1272.91 346,-1266.91 350,-1260.91 354,-1266.91 350,-1272.91"/>
-<text text-anchor="middle" x="369.5" y="-1282" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M350,-1319.18C350,-1307.84 350,-1296.05 350,-1284.23"/>
+<polygon fill="none" stroke="#404040" points="350,-1283.91 346,-1277.91 350,-1271.91 354,-1277.91 350,-1283.91"/>
+<text text-anchor="middle" x="369.5" y="-1293" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="325,-277.5 325,-554.5 457,-554.5 457,-277.5 325,-277.5"/>
-<text text-anchor="middle" x="391" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="325,-535.5 457,-535.5 "/>
-<text text-anchor="middle" x="391" y="-523.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="325,-516.5 457,-516.5 "/>
+<polygon fill="white" stroke="black" points="325,-277.5 325,-565.5 457,-565.5 457,-277.5 325,-277.5"/>
+<text text-anchor="middle" x="391" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="325,-546.5 457,-546.5 "/>
+<text text-anchor="middle" x="391" y="-534.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="325,-527.5 457,-527.5 "/>
+<text text-anchor="start" x="333" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="333" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="333" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="333" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="333" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="333" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="333" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="333" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="333" y="-427.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="333" y="-416.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="333" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="333" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="333" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="333" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="333" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="333" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="333" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="333" y="-427.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="333" y="-416.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="333" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="333" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="333" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="333" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="333" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -254,8 +255,8 @@
 <!-- Node8&#45;&gt;Node2 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M340.6,-277.28C336,-264.71 331.52,-252.47 327.37,-241.14"/>
-<polygon fill="none" stroke="#404040" points="327.31,-240.96 321.49,-236.7 323.18,-229.69 329,-233.95 327.31,-240.96"/>
+<path fill="none" stroke="#404040" d="M339.86,-277.47C335.33,-264.82 330.93,-252.52 326.87,-241.15"/>
+<polygon fill="none" stroke="#404040" points="326.8,-240.97 321.02,-236.67 322.76,-229.67 328.55,-233.98 326.8,-240.97"/>
 <text text-anchor="middle" x="353" y="-251" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSplitExprNode.html b/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSplitExprNode.html
index 8c3da54adf..e098931c15 100644
--- a/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSplitExprNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSplitExprNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::arith::IterSplitExprNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::arith::IterSplitExprNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1arith_1_1IterSplitExprNode__coll__graph.svg" width="938" height="2464"><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_1arith_1_1IterSplitExprNode__coll__graph.svg" width="938" height="2479"><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_1arith_1_1IterSplitExprNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSplitExprNode__coll__graph.svg
index d1a3859046..231695e949 100644
--- a/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSplitExprNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSplitExprNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::arith::IterSplitExprNode Pages: 1 -->
-<svg width="703pt" height="1848pt"
- viewBox="0.00 0.00 703.00 1848.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 1844)">
+<svg width="703pt" height="1859pt"
+ viewBox="0.00 0.00 703.00 1859.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 1855)">
 <title>tvm::arith::IterSplitExprNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1844 699,-1844 699,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1855 699,-1855 699,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -75,235 +75,236 @@
 <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="320.5,-616.5 320.5,-739.5 493.5,-739.5 493.5,-616.5 320.5,-616.5"/>
-<text text-anchor="middle" x="407" y="-727.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
-<polyline fill="none" stroke="black" points="320.5,-720.5 493.5,-720.5 "/>
-<text text-anchor="start" x="328.5" y="-708.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="328.5" y="-697.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="328.5" y="-686.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="328.5" y="-675.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="328.5" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="328.5" y="-653.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="320.5,-646.5 493.5,-646.5 "/>
-<text text-anchor="start" x="328.5" y="-634.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="328.5" y="-623.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="320.5,-622 320.5,-745 493.5,-745 493.5,-622 320.5,-622"/>
+<text text-anchor="middle" x="407" y="-733" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
+<polyline fill="none" stroke="black" points="320.5,-726 493.5,-726 "/>
+<text text-anchor="start" x="328.5" y="-714" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="328.5" y="-703" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="328.5" y="-692" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="328.5" y="-681" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="328.5" y="-670" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="328.5" y="-659" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="320.5,-652 493.5,-652 "/>
+<text text-anchor="start" x="328.5" y="-640" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="328.5" y="-629" 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="M388.2,-606.54C373.89,-554.4 353.1,-481.83 332,-419 329.99,-413.01 327.77,-406.76 325.5,-400.59"/>
-<polygon fill="none" stroke="midnightblue" points="384.87,-607.63 390.89,-616.35 391.63,-605.78 384.87,-607.63"/>
+<path fill="none" stroke="midnightblue" d="M388.78,-612.16C374.53,-558.78 353.56,-483.79 332,-419 330,-413 327.8,-406.76 325.54,-400.58"/>
+<polygon fill="none" stroke="midnightblue" points="385.41,-613.1 391.37,-621.86 392.18,-611.3 385.41,-613.1"/>
 </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="93,-955.5 93,-1342.5 277,-1342.5 277,-955.5 93,-955.5"/>
-<text text-anchor="middle" x="185" y="-1330.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="93,-1323.5 277,-1323.5 "/>
-<text text-anchor="start" x="101" y="-1311.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="101" y="-1300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="101" y="-1289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="101" y="-1278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="101" y="-1267.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="101" y="-1256.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="101" y="-1245.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="101" y="-1234.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="101" y="-1223.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="101" y="-1212.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="101" y="-1201.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="101" y="-1190.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="101" y="-1179.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="101" y="-1168.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="93,-1161.5 277,-1161.5 "/>
-<text text-anchor="start" x="101" y="-1149.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="101" y="-1138.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="101" y="-1127.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="101" y="-1116.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="101" y="-1105.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="93,-966.5 93,-1353.5 277,-1353.5 277,-966.5 93,-966.5"/>
+<text text-anchor="middle" x="185" y="-1341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="93,-1334.5 277,-1334.5 "/>
+<text text-anchor="start" x="101" y="-1322.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="101" y="-1311.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="101" y="-1300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="101" y="-1289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="101" y="-1278.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="101" y="-1267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="101" y="-1256.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="101" y="-1245.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="101" y="-1234.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="101" y="-1223.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="101" y="-1212.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="101" y="-1201.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="101" y="-1190.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="101" y="-1179.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="93,-1172.5 277,-1172.5 "/>
+<text text-anchor="start" x="101" y="-1160.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="101" y="-1149.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="101" y="-1138.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="101" y="-1127.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="101" y="-1116.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="101" y="-1105.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="101" y="-1094.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="101" y="-1083.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="101" y="-1072.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="101" y="-1072.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="101" y="-1061.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="101" y="-1050.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="101" y="-1039.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="101" y="-1028.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="101" y="-1017.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="101" y="-1006.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="101" y="-995.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="101" y="-984.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="101" y="-973.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="101" y="-962.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="101" y="-1050.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="101" y="-1039.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="101" y="-1028.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="101" y="-1017.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="101" y="-1006.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="101" y="-995.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="101" y="-984.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="101" y="-973.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="M280.56,-946.12C315.92,-871.41 353.42,-792.2 378.31,-739.61"/>
-<polygon fill="none" stroke="midnightblue" points="277.37,-944.67 276.26,-955.21 283.7,-947.67 277.37,-944.67"/>
+<path fill="none" stroke="midnightblue" d="M279.49,-957.03C315.32,-880.46 353.49,-798.88 378.63,-745.14"/>
+<polygon fill="none" stroke="midnightblue" points="276.2,-955.8 275.14,-966.34 282.54,-958.77 276.2,-955.8"/>
 </g>
 <!-- Node5&#45;&gt;Node5 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M277.28,-1182.92C288.02,-1176.66 295,-1165.36 295,-1149 295,-1138.01 291.85,-1129.3 286.52,-1122.87"/>
-<polygon fill="none" stroke="#404040" points="286.46,-1122.81 279.29,-1122 277.28,-1115.08 284.45,-1115.89 286.46,-1122.81"/>
-<text text-anchor="middle" x="321" y="-1146.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M277.28,-1193.92C288.02,-1187.66 295,-1176.36 295,-1160 295,-1149.01 291.85,-1140.3 286.52,-1133.87"/>
+<polygon fill="none" stroke="#404040" points="286.46,-1133.81 279.29,-1133 277.28,-1126.08 284.45,-1126.89 286.46,-1133.81"/>
+<text text-anchor="middle" x="321" y="-1157.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="365,-1104 365,-1194 521,-1194 521,-1104 365,-1104"/>
-<text text-anchor="middle" x="443" y="-1182" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="365,-1175 521,-1175 "/>
-<text text-anchor="middle" x="443" y="-1163" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="365,-1156 521,-1156 "/>
-<text text-anchor="start" x="373" y="-1144" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="373" y="-1133" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="373" y="-1122" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="373" y="-1111" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="365,-1115 365,-1205 521,-1205 521,-1115 365,-1115"/>
+<text text-anchor="middle" x="443" y="-1193" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="365,-1186 521,-1186 "/>
+<text text-anchor="middle" x="443" y="-1174" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="365,-1167 521,-1167 "/>
+<text text-anchor="start" x="373" y="-1155" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="373" y="-1144" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="373" y="-1133" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="373" y="-1122" 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="M439.61,-1103.88C433.41,-1023.08 420.17,-850.61 412.61,-752.06"/>
-<polygon fill="none" stroke="#404040" points="412.59,-751.8 408.14,-746.12 411.67,-739.84 416.12,-745.51 412.59,-751.8"/>
-<text text-anchor="middle" x="443.5" y="-883.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M439.65,-1114.79C433.43,-1032.85 420.07,-856.71 412.51,-757.06"/>
+<polygon fill="none" stroke="#404040" points="412.5,-756.97 408.06,-751.29 411.59,-745.01 416.03,-750.69 412.5,-756.97"/>
+<text text-anchor="middle" x="443.5" y="-894.5" 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="376,-1380.5 376,-1613.5 510,-1613.5 510,-1380.5 376,-1380.5"/>
-<text text-anchor="middle" x="443" y="-1601.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="376,-1594.5 510,-1594.5 "/>
-<text text-anchor="start" x="384" y="-1582.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="376,-1575.5 510,-1575.5 "/>
+<polygon fill="white" stroke="black" points="376,-1391.5 376,-1624.5 510,-1624.5 510,-1391.5 376,-1391.5"/>
+<text text-anchor="middle" x="443" y="-1612.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="376,-1605.5 510,-1605.5 "/>
+<text text-anchor="start" x="384" y="-1593.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="376,-1586.5 510,-1586.5 "/>
+<text text-anchor="start" x="384" y="-1574.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="384" y="-1563.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="384" y="-1552.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="384" y="-1541.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="384" y="-1530.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="384" y="-1519.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="384" y="-1508.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="384" y="-1497.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="384" y="-1486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="384" y="-1475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="384" y="-1464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="384" y="-1453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="384" y="-1552.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="384" y="-1541.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="384" y="-1530.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="384" y="-1519.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="384" y="-1508.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="384" y="-1497.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="384" y="-1486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="384" y="-1475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="384" y="-1464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="384" y="-1453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="384" y="-1442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="384" y="-1431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="384" y="-1420.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="384" y="-1409.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="384" y="-1398.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="384" y="-1387.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="384" y="-1431.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="384" y="-1420.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="384" y="-1409.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="384" y="-1398.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</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="M443,-1370.11C443,-1308.57 443,-1238.41 443,-1194.17"/>
-<polygon fill="none" stroke="midnightblue" points="439.5,-1370.31 443,-1380.31 446.5,-1370.31 439.5,-1370.31"/>
+<path fill="none" stroke="midnightblue" d="M443,-1381.11C443,-1319.57 443,-1249.41 443,-1205.17"/>
+<polygon fill="none" stroke="midnightblue" points="439.5,-1381.31 443,-1391.31 446.5,-1381.31 439.5,-1381.31"/>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node">
 <title>Node10</title>
 <g id="a_node10"><a xlink:href="classtvm_1_1arith_1_1IterMark.html" target="_top" xlink:title="Managed reference to IterMarkExprNode.">
-<polygon fill="white" stroke="black" points="0,-835.5 0,-936.5 156,-936.5 156,-835.5 0,-835.5"/>
-<text text-anchor="middle" x="78" y="-924.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::arith::IterMark</text>
-<polyline fill="none" stroke="black" points="0,-917.5 156,-917.5 "/>
-<text text-anchor="middle" x="78" y="-905.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="0,-898.5 156,-898.5 "/>
-<text text-anchor="start" x="8" y="-886.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IterMark()</text>
-<text text-anchor="start" x="8" y="-875.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-864.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="8" y="-853.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-842.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="0,-846.5 0,-947.5 156,-947.5 156,-846.5 0,-846.5"/>
+<text text-anchor="middle" x="78" y="-935.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::arith::IterMark</text>
+<polyline fill="none" stroke="black" points="0,-928.5 156,-928.5 "/>
+<text text-anchor="middle" x="78" y="-916.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="0,-909.5 156,-909.5 "/>
+<text text-anchor="start" x="8" y="-897.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IterMark()</text>
+<text text-anchor="start" x="8" y="-886.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="8" y="-875.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<text text-anchor="start" x="8" y="-864.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="8" y="-853.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node10 -->
 <g id="edge11" class="edge">
 <title>Node7&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M366.04,-1487.49C280.79,-1473.51 147.05,-1437.06 84,-1343 0.02,-1217.72 37.7,-1026.38 62.48,-936.67"/>
-<polygon fill="none" stroke="midnightblue" points="365.51,-1490.95 375.94,-1489.05 366.6,-1484.04 365.51,-1490.95"/>
+<path fill="none" stroke="midnightblue" d="M366.04,-1498.49C280.79,-1484.51 147.05,-1448.06 84,-1354 0.02,-1228.72 37.7,-1037.38 62.48,-947.67"/>
+<polygon fill="none" stroke="midnightblue" points="365.51,-1501.95 375.94,-1500.05 366.6,-1495.04 365.51,-1501.95"/>
 </g>
 <!-- Node12 -->
 <g id="node12" class="node">
 <title>Node12</title>
 <g id="a_node12"><a xlink:href="classtvm_1_1BaseExpr.html" target="_top" xlink:title="Managed reference to BaseExprNode.">
-<polygon fill="white" stroke="black" points="539,-1115 539,-1183 695,-1183 695,-1115 539,-1115"/>
-<text text-anchor="middle" x="617" y="-1171" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
-<polyline fill="none" stroke="black" points="539,-1164 695,-1164 "/>
-<text text-anchor="middle" x="617" y="-1152" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="539,-1145 695,-1145 "/>
-<text text-anchor="start" x="547" y="-1133" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="547" y="-1122" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="539,-1126 539,-1194 695,-1194 695,-1126 539,-1126"/>
+<text text-anchor="middle" x="617" y="-1182" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
+<polyline fill="none" stroke="black" points="539,-1175 695,-1175 "/>
+<text text-anchor="middle" x="617" y="-1163" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="539,-1156 695,-1156 "/>
+<text text-anchor="start" x="547" y="-1144" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="547" y="-1133" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node12 -->
 <g id="edge14" class="edge">
 <title>Node7&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M514.98,-1371.65C520.17,-1362.01 525.23,-1352.38 530,-1343 557.98,-1287.96 586.7,-1222.04 603.15,-1183.23"/>
-<polygon fill="none" stroke="midnightblue" points="511.87,-1370.04 510.18,-1380.5 518.02,-1373.38 511.87,-1370.04"/>
+<path fill="none" stroke="midnightblue" d="M514.98,-1382.65C520.17,-1373.01 525.23,-1363.38 530,-1354 557.98,-1298.96 586.7,-1233.04 603.15,-1194.23"/>
+<polygon fill="none" stroke="midnightblue" points="511.87,-1381.04 510.18,-1391.5 518.02,-1384.38 511.87,-1381.04"/>
 </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="373,-1661.5 373,-1839.5 513,-1839.5 513,-1661.5 373,-1661.5"/>
-<text text-anchor="start" x="381" y="-1827.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="443" y="-1816.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="373,-1809.5 513,-1809.5 "/>
-<text text-anchor="middle" x="443" y="-1797.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="373,-1790.5 513,-1790.5 "/>
+<polygon fill="white" stroke="black" points="373,-1672.5 373,-1850.5 513,-1850.5 513,-1672.5 373,-1672.5"/>
+<text text-anchor="start" x="381" y="-1838.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="443" y="-1827.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="373,-1820.5 513,-1820.5 "/>
+<text text-anchor="middle" x="443" y="-1808.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="373,-1801.5 513,-1801.5 "/>
+<text text-anchor="start" x="381" y="-1789.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="381" y="-1778.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="381" y="-1767.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="381" y="-1756.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="381" y="-1745.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="381" y="-1734.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="381" y="-1723.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="381" y="-1712.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="381" y="-1701.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="381" y="-1690.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="381" y="-1679.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="381" y="-1668.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="381" y="-1723.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="381" y="-1712.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="381" y="-1701.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="381" y="-1690.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="381" y="-1679.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="M443,-1661.18C443,-1649.84 443,-1638.05 443,-1626.23"/>
-<polygon fill="none" stroke="#404040" points="443,-1625.91 439,-1619.91 443,-1613.91 447,-1619.91 443,-1625.91"/>
-<text text-anchor="middle" x="462.5" y="-1635" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M443,-1672.18C443,-1660.84 443,-1649.05 443,-1637.23"/>
+<polygon fill="none" stroke="#404040" points="443,-1636.91 439,-1630.91 443,-1624.91 447,-1630.91 443,-1636.91"/>
+<text text-anchor="middle" x="462.5" y="-1646" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node">
 <title>Node9</title>
 <g id="a_node9"><a xlink:href="classtvm_1_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="170,-539.5 170,-816.5 302,-816.5 302,-539.5 170,-539.5"/>
-<text text-anchor="middle" x="236" y="-804.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="170,-797.5 302,-797.5 "/>
-<text text-anchor="middle" x="236" y="-785.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="170,-778.5 302,-778.5 "/>
+<polygon fill="white" stroke="black" points="170,-539.5 170,-827.5 302,-827.5 302,-539.5 170,-539.5"/>
+<text text-anchor="middle" x="236" y="-815.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="170,-808.5 302,-808.5 "/>
+<text text-anchor="middle" x="236" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="170,-789.5 302,-789.5 "/>
+<text text-anchor="start" x="178" y="-777.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="178" y="-766.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="178" y="-755.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="178" y="-744.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="178" y="-733.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="178" y="-722.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="178" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="178" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="178" y="-689.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="178" y="-678.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="178" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="178" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="178" y="-744.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="178" y="-733.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="178" y="-722.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="178" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="178" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="178" y="-689.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="178" y="-678.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="178" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="178" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="178" y="-645.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="178" y="-634.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="178" y="-623.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -320,14 +321,14 @@
 <!-- Node9&#45;&gt;Node3 -->
 <g id="edge9" class="edge">
 <title>Node9&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M265.58,-539.22C275.03,-495.23 285.02,-448.72 292.7,-412.95"/>
-<polygon fill="none" stroke="#404040" points="292.8,-412.5 290.14,-405.79 295.31,-400.76 297.97,-407.47 292.8,-412.5"/>
+<path fill="none" stroke="#404040" d="M266.3,-539.03C275.62,-494.89 285.39,-448.6 292.91,-412.99"/>
+<polygon fill="none" stroke="#404040" points="292.99,-412.61 290.32,-405.91 295.47,-400.87 298.14,-407.56 292.99,-412.61"/>
 <text text-anchor="middle" x="310" y="-467.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 <!-- Node10&#45;&gt;Node1 -->
 <g id="edge10" class="edge">
 <title>Node10&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M87.94,-835.21C102.52,-757.69 128,-603.31 128,-471 128,-471 128,-471 128,-183.5 128,-138.09 165.94,-106.58 206.79,-85.82"/>
+<path fill="none" stroke="#404040" d="M87.64,-846.5C102.17,-767.45 128,-607.7 128,-471 128,-471 128,-471 128,-183.5 128,-138.09 165.94,-106.58 206.79,-85.82"/>
 <polygon fill="none" stroke="#404040" points="206.98,-85.73 210.64,-79.51 217.78,-80.51 214.12,-86.72 206.98,-85.73"/>
 <text text-anchor="middle" x="150" y="-347.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +source</text>
 </g>
@@ -360,8 +361,8 @@
 <!-- Node12&#45;&gt;Node11 -->
 <g id="edge13" class="edge">
 <title>Node12&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M611.09,-1104.98C594.63,-985.16 548.33,-648.11 530.82,-520.66"/>
-<polygon fill="none" stroke="midnightblue" points="607.62,-1105.46 612.45,-1114.89 614.56,-1104.51 607.62,-1105.46"/>
+<path fill="none" stroke="midnightblue" d="M611.16,-1115.76C594.72,-994.16 548.15,-649.64 530.71,-520.61"/>
+<polygon fill="none" stroke="midnightblue" points="607.71,-1116.38 612.51,-1125.82 614.64,-1115.44 607.71,-1116.38"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSumExprNode.html b/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSumExprNode.html
index 22862b3621..63ad692908 100644
--- a/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSumExprNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSumExprNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::arith::IterSumExprNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::arith::IterSumExprNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1arith_1_1IterSumExprNode__coll__graph.svg" width="946" height="2640"><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_1arith_1_1IterSumExprNode__coll__graph.svg" width="946" height="2655"><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_1arith_1_1IterSumExprNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSumExprNode__coll__graph.svg
index d0dcad6f13..f471d90783 100644
--- a/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSumExprNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1arith_1_1IterSumExprNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::arith::IterSumExprNode Pages: 1 -->
-<svg width="709pt" height="1980pt"
- viewBox="0.00 0.00 708.50 1980.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 1976)">
+<svg width="709pt" height="1991pt"
+ viewBox="0.00 0.00 708.50 1991.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 1987)">
 <title>tvm::arith::IterSumExprNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1976 704.5,-1976 704.5,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1987 704.5,-1987 704.5,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -75,171 +75,172 @@
 <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="405.5,-594.5 405.5,-717.5 578.5,-717.5 578.5,-594.5 405.5,-594.5"/>
-<text text-anchor="middle" x="492" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
-<polyline fill="none" stroke="black" points="405.5,-698.5 578.5,-698.5 "/>
-<text text-anchor="start" x="413.5" y="-686.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="413.5" y="-675.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="413.5" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="413.5" y="-653.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="413.5" y="-642.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="413.5" y="-631.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="405.5,-624.5 578.5,-624.5 "/>
-<text text-anchor="start" x="413.5" y="-612.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="413.5" y="-601.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="405.5,-600 405.5,-723 578.5,-723 578.5,-600 405.5,-600"/>
+<text text-anchor="middle" x="492" y="-711" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
+<polyline fill="none" stroke="black" points="405.5,-704 578.5,-704 "/>
+<text text-anchor="start" x="413.5" y="-692" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="413.5" y="-681" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="413.5" y="-670" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="413.5" y="-659" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="413.5" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="413.5" y="-637" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="405.5,-630 578.5,-630 "/>
+<text text-anchor="start" x="413.5" y="-618" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="413.5" y="-607" 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="M483.98,-584.33C476.93,-522.22 466.85,-433.41 460.63,-378.57"/>
-<polygon fill="none" stroke="midnightblue" points="480.52,-584.9 485.13,-594.45 487.48,-584.11 480.52,-584.9"/>
+<path fill="none" stroke="midnightblue" d="M484.1,-589.76C477.01,-526.24 466.79,-434.63 460.54,-378.61"/>
+<polygon fill="none" stroke="midnightblue" points="480.63,-590.15 485.21,-599.7 487.58,-589.37 480.63,-590.15"/>
 </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,-1087.5 174,-1474.5 358,-1474.5 358,-1087.5 174,-1087.5"/>
-<text text-anchor="middle" x="266" y="-1462.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="174,-1455.5 358,-1455.5 "/>
-<text text-anchor="start" x="182" y="-1443.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="182" y="-1432.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="182" y="-1421.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="182" y="-1410.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="182" y="-1399.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="182" y="-1388.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="182" y="-1377.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="182" y="-1366.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="182" y="-1355.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="182" y="-1344.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="182" y="-1333.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="182" y="-1322.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="182" y="-1311.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="182" y="-1300.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="174,-1293.5 358,-1293.5 "/>
-<text text-anchor="start" x="182" y="-1281.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="182" y="-1270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="182" y="-1259.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="182" y="-1248.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="182" y="-1237.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="174,-1098.5 174,-1485.5 358,-1485.5 358,-1098.5 174,-1098.5"/>
+<text text-anchor="middle" x="266" y="-1473.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="174,-1466.5 358,-1466.5 "/>
+<text text-anchor="start" x="182" y="-1454.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="182" y="-1443.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="182" y="-1432.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="182" y="-1421.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="182" y="-1410.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="182" y="-1399.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="182" y="-1388.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="182" y="-1377.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="182" y="-1366.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="182" y="-1355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="182" y="-1344.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="182" y="-1333.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="182" y="-1322.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="182" y="-1311.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="174,-1304.5 358,-1304.5 "/>
+<text text-anchor="start" x="182" y="-1292.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="182" y="-1281.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="182" y="-1270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="182" y="-1259.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="182" y="-1248.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="182" y="-1237.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="182" y="-1226.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="182" y="-1215.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="182" y="-1204.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="182" y="-1204.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="182" y="-1193.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="182" y="-1182.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="182" y="-1171.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="182" y="-1160.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="182" y="-1149.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="182" y="-1138.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="182" y="-1127.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="182" y="-1116.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="182" y="-1105.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="182" y="-1094.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="182" y="-1182.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="182" y="-1171.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="182" y="-1160.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="182" y="-1149.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="182" y="-1138.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="182" y="-1127.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="182" y="-1116.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="182" y="-1105.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="M339.49,-1077.42C384.87,-952.32 439.98,-800.4 469.96,-717.75"/>
-<polygon fill="none" stroke="midnightblue" points="336.08,-1076.55 335.96,-1087.15 342.66,-1078.94 336.08,-1076.55"/>
+<path fill="none" stroke="midnightblue" d="M338.75,-1088.68C384.41,-961.72 440.14,-806.71 470.23,-723.05"/>
+<polygon fill="none" stroke="midnightblue" points="335.43,-1087.56 335.34,-1098.16 342.02,-1089.93 335.43,-1087.56"/>
 </g>
 <!-- Node5&#45;&gt;Node5 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M358.28,-1314.92C369.02,-1308.66 376,-1297.36 376,-1281 376,-1270.01 372.85,-1261.3 367.52,-1254.87"/>
-<polygon fill="none" stroke="#404040" points="367.46,-1254.81 360.29,-1254 358.28,-1247.08 365.45,-1247.89 367.46,-1254.81"/>
-<text text-anchor="middle" x="402" y="-1278.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M358.28,-1325.92C369.02,-1319.66 376,-1308.36 376,-1292 376,-1281.01 372.85,-1272.3 367.52,-1265.87"/>
+<polygon fill="none" stroke="#404040" points="367.46,-1265.81 360.29,-1265 358.28,-1258.08 365.45,-1258.89 367.46,-1265.81"/>
+<text text-anchor="middle" x="402" y="-1289.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,-1236 446,-1326 602,-1326 602,-1236 446,-1236"/>
-<text text-anchor="middle" x="524" y="-1314" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="446,-1307 602,-1307 "/>
-<text text-anchor="middle" x="524" y="-1295" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="446,-1288 602,-1288 "/>
-<text text-anchor="start" x="454" y="-1276" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="454" y="-1265" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="454" y="-1254" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="454" y="-1243" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="446,-1247 446,-1337 602,-1337 602,-1247 446,-1247"/>
+<text text-anchor="middle" x="524" y="-1325" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="446,-1318 602,-1318 "/>
+<text text-anchor="middle" x="524" y="-1306" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="446,-1299 602,-1299 "/>
+<text text-anchor="start" x="454" y="-1287" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="454" y="-1276" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="454" y="-1265" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="454" y="-1254" 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="M518.94,-1235.61C514.28,-1192.96 507.57,-1126.66 504,-1069 496.66,-950.46 493.8,-812.44 492.69,-730.03"/>
-<polygon fill="none" stroke="#404040" points="492.68,-729.79 488.61,-723.84 492.53,-717.79 496.61,-723.74 492.68,-729.79"/>
-<text text-anchor="middle" x="521.5" y="-938.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M518.94,-1246.61C514.27,-1203.96 507.56,-1137.66 504,-1080 496.55,-959.23 493.71,-818.52 492.64,-735.18"/>
+<polygon fill="none" stroke="#404040" points="492.64,-735.05 488.57,-729.1 492.49,-723.05 496.57,-729 492.64,-735.05"/>
+<text text-anchor="middle" x="521.5" y="-949.5" 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="457,-1512.5 457,-1745.5 591,-1745.5 591,-1512.5 457,-1512.5"/>
-<text text-anchor="middle" x="524" y="-1733.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="457,-1726.5 591,-1726.5 "/>
-<text text-anchor="start" x="465" y="-1714.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="457,-1707.5 591,-1707.5 "/>
+<polygon fill="white" stroke="black" points="457,-1523.5 457,-1756.5 591,-1756.5 591,-1523.5 457,-1523.5"/>
+<text text-anchor="middle" x="524" y="-1744.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="457,-1737.5 591,-1737.5 "/>
+<text text-anchor="start" x="465" y="-1725.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="457,-1718.5 591,-1718.5 "/>
+<text text-anchor="start" x="465" y="-1706.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="465" y="-1695.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="465" y="-1684.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="465" y="-1673.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="465" y="-1662.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="465" y="-1651.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="465" y="-1640.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="465" y="-1629.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="465" y="-1618.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="465" y="-1607.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="465" y="-1596.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="465" y="-1585.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="465" y="-1684.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="465" y="-1673.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="465" y="-1662.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="465" y="-1651.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="465" y="-1640.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="465" y="-1629.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="465" y="-1618.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="465" y="-1607.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="465" y="-1596.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="465" y="-1585.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="465" y="-1574.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="465" y="-1563.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="465" y="-1552.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="465" y="-1541.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="465" y="-1530.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="465" y="-1519.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="465" y="-1563.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="465" y="-1552.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="465" y="-1541.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="465" y="-1530.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</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="M524,-1502.11C524,-1440.57 524,-1370.41 524,-1326.17"/>
-<polygon fill="none" stroke="midnightblue" points="520.5,-1502.31 524,-1512.31 527.5,-1502.31 520.5,-1502.31"/>
+<path fill="none" stroke="midnightblue" d="M524,-1513.11C524,-1451.57 524,-1381.41 524,-1337.17"/>
+<polygon fill="none" stroke="midnightblue" points="520.5,-1513.31 524,-1523.31 527.5,-1513.31 520.5,-1513.31"/>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node">
 <title>Node11</title>
 <g id="a_node11"><a xlink:href="classtvm_1_1BaseExpr.html" target="_top" xlink:title="Managed reference to BaseExprNode.">
-<polygon fill="white" stroke="black" points="0,-1247 0,-1315 156,-1315 156,-1247 0,-1247"/>
-<text text-anchor="middle" x="78" y="-1303" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
-<polyline fill="none" stroke="black" points="0,-1296 156,-1296 "/>
-<text text-anchor="middle" x="78" y="-1284" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="0,-1277 156,-1277 "/>
-<text text-anchor="start" x="8" y="-1265" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-1254" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="0,-1258 0,-1326 156,-1326 156,-1258 0,-1258"/>
+<text text-anchor="middle" x="78" y="-1314" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
+<polyline fill="none" stroke="black" points="0,-1307 156,-1307 "/>
+<text text-anchor="middle" x="78" y="-1295" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="0,-1288 156,-1288 "/>
+<text text-anchor="start" x="8" y="-1276" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="8" y="-1265" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node11 -->
 <g id="edge12" class="edge">
 <title>Node7&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M446.86,-1612.53C367.17,-1592.95 243.67,-1552.06 165,-1475 119.45,-1430.38 95.68,-1357.59 85.09,-1315.31"/>
-<polygon fill="none" stroke="midnightblue" points="446.29,-1615.99 456.84,-1614.92 447.93,-1609.19 446.29,-1615.99"/>
+<path fill="none" stroke="midnightblue" d="M446.86,-1623.53C367.17,-1603.95 243.67,-1563.06 165,-1486 119.45,-1441.38 95.68,-1368.59 85.09,-1326.31"/>
+<polygon fill="none" stroke="midnightblue" points="446.29,-1626.99 456.84,-1625.92 447.93,-1620.19 446.29,-1626.99"/>
 </g>
 <!-- Node12 -->
 <g id="node12" class="node">
 <title>Node12</title>
 <g id="a_node12"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="547.5,-813.5 547.5,-1068.5 700.5,-1068.5 700.5,-813.5 547.5,-813.5"/>
-<text text-anchor="start" x="555.5" y="-1056.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
-<text text-anchor="middle" x="624" y="-1045.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::arith::IterSplitExpr &gt;</text>
-<polyline fill="none" stroke="black" points="547.5,-1038.5 700.5,-1038.5 "/>
-<text text-anchor="middle" x="624" y="-1026.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="547.5,-1019.5 700.5,-1019.5 "/>
+<polygon fill="white" stroke="black" points="547.5,-824.5 547.5,-1079.5 700.5,-1079.5 700.5,-824.5 547.5,-824.5"/>
+<text text-anchor="start" x="555.5" y="-1067.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
+<text text-anchor="middle" x="624" y="-1056.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::arith::IterSplitExpr &gt;</text>
+<polyline fill="none" stroke="black" points="547.5,-1049.5 700.5,-1049.5 "/>
+<text text-anchor="middle" x="624" y="-1037.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="547.5,-1030.5 700.5,-1030.5 "/>
+<text text-anchor="start" x="555.5" y="-1018.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
 <text text-anchor="start" x="555.5" y="-1007.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
 <text text-anchor="start" x="555.5" y="-996.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
 <text text-anchor="start" x="555.5" y="-985.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
@@ -247,77 +248,77 @@
 <text text-anchor="start" x="555.5" y="-963.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
 <text text-anchor="start" x="555.5" y="-952.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
 <text text-anchor="start" x="555.5" y="-941.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="555.5" y="-930.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="555.5" y="-930.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="555.5" y="-919.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="555.5" y="-908.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="555.5" y="-897.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
+<text text-anchor="start" x="555.5" y="-908.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
+<text text-anchor="start" x="555.5" y="-897.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
 <text text-anchor="start" x="555.5" y="-886.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
 <text text-anchor="start" x="555.5" y="-875.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="555.5" y="-864.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="555.5" y="-864.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
 <text text-anchor="start" x="555.5" y="-853.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
 <text text-anchor="start" x="555.5" y="-842.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="555.5" y="-831.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="555.5" y="-820.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
+<text text-anchor="start" x="555.5" y="-831.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node12 -->
 <g id="edge14" class="edge">
 <title>Node7&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M595.55,-1516.36C601.77,-1502.83 607.15,-1488.88 611,-1475 648.47,-1339.99 646.17,-1178.28 638.04,-1068.66"/>
-<polygon fill="none" stroke="midnightblue" points="592.26,-1515.12 591.12,-1525.65 598.58,-1518.13 592.26,-1515.12"/>
+<path fill="none" stroke="midnightblue" d="M595.55,-1527.36C601.77,-1513.83 607.15,-1499.88 611,-1486 648.47,-1350.99 646.17,-1189.28 638.04,-1079.66"/>
+<polygon fill="none" stroke="midnightblue" points="592.26,-1526.12 591.12,-1536.65 598.58,-1529.13 592.26,-1526.12"/>
 </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="454,-1793.5 454,-1971.5 594,-1971.5 594,-1793.5 454,-1793.5"/>
-<text text-anchor="start" x="462" y="-1959.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="524" y="-1948.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="454,-1941.5 594,-1941.5 "/>
-<text text-anchor="middle" x="524" y="-1929.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="454,-1922.5 594,-1922.5 "/>
+<polygon fill="white" stroke="black" points="454,-1804.5 454,-1982.5 594,-1982.5 594,-1804.5 454,-1804.5"/>
+<text text-anchor="start" x="462" y="-1970.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="524" y="-1959.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="454,-1952.5 594,-1952.5 "/>
+<text text-anchor="middle" x="524" y="-1940.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="454,-1933.5 594,-1933.5 "/>
+<text text-anchor="start" x="462" y="-1921.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="462" y="-1910.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="462" y="-1899.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="462" y="-1888.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="462" y="-1877.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="462" y="-1866.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="462" y="-1855.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="462" y="-1844.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="462" y="-1833.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="462" y="-1822.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="462" y="-1811.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="462" y="-1800.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="462" y="-1855.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="462" y="-1844.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="462" y="-1833.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="462" y="-1822.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="462" y="-1811.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="M524,-1793.18C524,-1781.84 524,-1770.05 524,-1758.23"/>
-<polygon fill="none" stroke="#404040" points="524,-1757.91 520,-1751.91 524,-1745.91 528,-1751.91 524,-1757.91"/>
-<text text-anchor="middle" x="543.5" y="-1767" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M524,-1804.18C524,-1792.84 524,-1781.05 524,-1769.23"/>
+<polygon fill="none" stroke="#404040" points="524,-1768.91 520,-1762.91 524,-1756.91 528,-1762.91 524,-1768.91"/>
+<text text-anchor="middle" x="543.5" y="-1778" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node">
 <title>Node9</title>
 <g id="a_node9"><a xlink:href="classtvm_1_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="255,-517.5 255,-794.5 387,-794.5 387,-517.5 255,-517.5"/>
-<text text-anchor="middle" x="321" y="-782.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="255,-775.5 387,-775.5 "/>
-<text text-anchor="middle" x="321" y="-763.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="255,-756.5 387,-756.5 "/>
+<polygon fill="white" stroke="black" points="255,-517.5 255,-805.5 387,-805.5 387,-517.5 255,-517.5"/>
+<text text-anchor="middle" x="321" y="-793.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="255,-786.5 387,-786.5 "/>
+<text text-anchor="middle" x="321" y="-774.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="255,-767.5 387,-767.5 "/>
+<text text-anchor="start" x="263" y="-755.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="263" y="-744.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="263" y="-733.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="263" y="-722.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="263" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="263" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="263" y="-689.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="263" y="-678.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="263" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="263" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="263" y="-645.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="263" y="-634.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="263" y="-722.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="263" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="263" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="263" y="-689.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="263" y="-678.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="263" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="263" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="263" y="-645.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="263" y="-634.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="263" y="-623.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="263" y="-612.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="263" y="-601.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -334,8 +335,8 @@
 <!-- Node9&#45;&gt;Node3 -->
 <g id="edge9" class="edge">
 <title>Node9&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M368.74,-517.31C383.45,-477.99 400.44,-435.4 418,-397 419.11,-394.57 420.28,-392.1 421.48,-389.62"/>
-<polygon fill="none" stroke="#404040" points="421.55,-389.47 420.66,-382.31 426.92,-378.73 427.81,-385.89 421.55,-389.47"/>
+<path fill="none" stroke="#404040" d="M369.37,-517.43C383.88,-477.94 400.59,-435.41 418,-397 419.1,-394.56 420.26,-392.09 421.45,-389.61"/>
+<polygon fill="none" stroke="#404040" points="421.53,-389.46 420.63,-382.3 426.88,-378.71 427.79,-385.87 421.53,-389.46"/>
 <text text-anchor="middle" x="438" y="-445.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 <!-- Node10 -->
@@ -365,13 +366,13 @@
 <!-- Node11&#45;&gt;Node10 -->
 <g id="edge11" class="edge">
 <title>Node11&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M84.33,-1236.91C105.03,-1095.9 170.69,-648.68 192.71,-498.63"/>
-<polygon fill="none" stroke="midnightblue" points="80.85,-1236.51 82.86,-1246.91 87.77,-1237.53 80.85,-1236.51"/>
+<path fill="none" stroke="midnightblue" d="M84.25,-1247.89C104.89,-1105.41 170.86,-650.09 192.82,-498.57"/>
+<polygon fill="none" stroke="midnightblue" points="80.75,-1247.59 82.78,-1257.99 87.68,-1248.6 80.75,-1247.59"/>
 </g>
 <!-- Node12&#45;&gt;Node1 -->
 <g id="edge13" class="edge">
 <title>Node12&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M620.8,-813.36C618.58,-714.21 616,-572.83 616,-449 616,-449 616,-449 616,-183.5 616,-144.25 586.95,-114.62 553.52,-93.52"/>
+<path fill="none" stroke="#404040" d="M620.87,-824.38C618.62,-722.89 616,-576.8 616,-449 616,-449 616,-449 616,-183.5 616,-144.25 586.95,-114.62 553.52,-93.52"/>
 <polygon fill="none" stroke="#404040" points="553.33,-93.4 546.13,-93.75 543.04,-87.24 550.24,-86.89 553.33,-93.4"/>
 <text text-anchor="middle" x="632.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +args</text>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1TensorInfoNode.html b/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1TensorInfoNode.html
index 878eb939d5..60180f9d10 100644
--- a/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1TensorInfoNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1TensorInfoNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::meta_schedule::TensorInfoNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::meta_schedule::TensorInfoNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1meta__schedule_1_1TensorInfoNode__coll__graph.svg" width="764" height="1448"><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_1meta__schedule_1_1TensorInfoNode__coll__graph.svg" width="764" height="1463"><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_1meta__schedule_1_1TensorInfoNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1TensorInfoNode__coll__graph.svg
index 1a2325f0f3..52f9e350e1 100644
--- a/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1TensorInfoNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1TensorInfoNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::meta_schedule::TensorInfoNode Pages: 1 -->
-<svg width="573pt" height="1086pt"
- viewBox="0.00 0.00 573.00 1086.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 1082)">
+<svg width="573pt" height="1097pt"
+ viewBox="0.00 0.00 573.00 1097.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 1093)">
 <title>tvm::meta_schedule::TensorInfoNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1082 569,-1082 569,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1093 569,-1093 569,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -30,201 +30,202 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1meta__schedule_1_1ArgInfoNode.html" target="_top" xlink:title="The argument information.">
-<polygon fill="white" stroke="black" points="48.5,-237.5 48.5,-338.5 221.5,-338.5 221.5,-237.5 48.5,-237.5"/>
-<text text-anchor="start" x="56.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::meta_schedule</text>
-<text text-anchor="middle" x="135" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ArgInfoNode</text>
-<polyline fill="none" stroke="black" points="48.5,-308.5 221.5,-308.5 "/>
-<text text-anchor="start" x="56.5" y="-296.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<polyline fill="none" stroke="black" points="48.5,-289.5 221.5,-289.5 "/>
-<text text-anchor="start" x="56.5" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="56.5" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="56.5" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ArgInfoNode()</text>
-<text text-anchor="start" x="56.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AsJSON()</text>
+<polygon fill="white" stroke="black" points="48.5,-243 48.5,-344 221.5,-344 221.5,-243 48.5,-243"/>
+<text text-anchor="start" x="56.5" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::meta_schedule</text>
+<text text-anchor="middle" x="135" y="-321" font-family="Helvetica,sans-Serif" font-size="10.00">::ArgInfoNode</text>
+<polyline fill="none" stroke="black" points="48.5,-314 221.5,-314 "/>
+<text text-anchor="start" x="56.5" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<polyline fill="none" stroke="black" points="48.5,-295 221.5,-295 "/>
+<text text-anchor="start" x="56.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="56.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="56.5" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ArgInfoNode()</text>
+<text text-anchor="start" x="56.5" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">+ AsJSON()</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="M175.86,-228.98C194.18,-203.84 216.47,-174.41 238,-149 251.42,-133.16 266.75,-116.6 281.04,-101.75"/>
-<polygon fill="none" stroke="midnightblue" points="172.84,-227.18 169.8,-237.33 178.51,-231.29 172.84,-227.18"/>
+<path fill="none" stroke="midnightblue" d="M174,-234.26C192.54,-207.61 215.54,-176.03 238,-149 251.27,-133.03 266.56,-116.44 280.85,-101.59"/>
+<polygon fill="none" stroke="midnightblue" points="170.95,-232.51 168.14,-242.73 176.71,-236.49 170.95,-232.51"/>
 </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,-464.5 0,-851.5 184,-851.5 184,-464.5 0,-464.5"/>
-<text text-anchor="middle" x="92" y="-839.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-832.5 184,-832.5 "/>
-<text text-anchor="start" x="8" y="-820.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-809.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-798.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-787.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-776.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-765.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-754.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-743.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-732.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-721.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-710.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-699.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-688.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-677.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-670.5 184,-670.5 "/>
-<text text-anchor="start" x="8" y="-658.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-475.5 0,-862.5 184,-862.5 184,-475.5 0,-475.5"/>
+<text text-anchor="middle" x="92" y="-850.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-843.5 184,-843.5 "/>
+<text text-anchor="start" x="8" y="-831.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-820.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-809.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-798.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-787.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-776.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-765.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-754.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-743.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-732.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-721.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-710.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-699.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-688.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-681.5 184,-681.5 "/>
+<text text-anchor="start" x="8" y="-669.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-658.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-570.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-559.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-559.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-482.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="M115.69,-454.29C120.72,-411.21 125.59,-369.51 129.18,-338.77"/>
-<polygon fill="none" stroke="midnightblue" points="112.19,-454.04 114.51,-464.38 119.14,-454.85 112.19,-454.04"/>
+<path fill="none" stroke="midnightblue" d="M115.34,-465.26C120.55,-420.02 125.61,-376.04 129.3,-344.05"/>
+<polygon fill="none" stroke="midnightblue" points="111.86,-464.9 114.19,-475.23 118.81,-465.7 111.86,-464.9"/>
 </g>
 <!-- Node3&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M184.28,-691.92C195.02,-685.66 202,-674.36 202,-658 202,-647.01 198.85,-638.3 193.52,-631.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-631.81 186.29,-631 184.28,-624.08 191.45,-624.89 193.46,-631.81"/>
-<text text-anchor="middle" x="228" y="-655.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-702.92C195.02,-696.66 202,-685.36 202,-669 202,-658.01 198.85,-649.3 193.52,-642.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-642.81 186.29,-642 184.28,-635.08 191.45,-635.89 193.46,-642.81"/>
+<text text-anchor="middle" x="228" y="-666.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_1runtime_1_1ShapeTuple.html" target="_top" xlink:title="Reference to shape tuple objects.">
-<polygon fill="white" stroke="black" points="247,-182.5 247,-393.5 415,-393.5 415,-182.5 247,-182.5"/>
-<text text-anchor="middle" x="331" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ShapeTuple</text>
-<polyline fill="none" stroke="black" points="247,-374.5 415,-374.5 "/>
-<text text-anchor="middle" x="331" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="247,-355.5 415,-355.5 "/>
-<text text-anchor="start" x="255" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ShapeTuple()</text>
-<text text-anchor="start" x="255" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ShapeTuple()</text>
-<text text-anchor="start" x="255" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ShapeTuple()</text>
-<text text-anchor="start" x="255" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ShapeTuple()</text>
-<text text-anchor="start" x="255" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ data()</text>
-<text text-anchor="start" x="255" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ size()</text>
-<text text-anchor="start" x="255" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator[]()</text>
-<text text-anchor="start" x="255" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
-<text text-anchor="start" x="255" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ empty()</text>
-<text text-anchor="start" x="255" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ front()</text>
-<text text-anchor="start" x="255" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ back()</text>
-<text text-anchor="start" x="255" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ begin()</text>
-<text text-anchor="start" x="255" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ end()</text>
-<text text-anchor="start" x="255" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="255" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">_OBJECT_REF_METHODS()</text>
+<polygon fill="white" stroke="black" points="247,-188 247,-399 415,-399 415,-188 247,-188"/>
+<text text-anchor="middle" x="331" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ShapeTuple</text>
+<polyline fill="none" stroke="black" points="247,-380 415,-380 "/>
+<text text-anchor="middle" x="331" y="-368" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="247,-361 415,-361 "/>
+<text text-anchor="start" x="255" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00">+ ShapeTuple()</text>
+<text text-anchor="start" x="255" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">+ ShapeTuple()</text>
+<text text-anchor="start" x="255" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">+ ShapeTuple()</text>
+<text text-anchor="start" x="255" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00">+ ShapeTuple()</text>
+<text text-anchor="start" x="255" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00">+ data()</text>
+<text text-anchor="start" x="255" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">+ size()</text>
+<text text-anchor="start" x="255" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator[]()</text>
+<text text-anchor="start" x="255" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
+<text text-anchor="start" x="255" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00">+ empty()</text>
+<text text-anchor="start" x="255" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">+ front()</text>
+<text text-anchor="start" x="255" y="-239" font-family="Helvetica,sans-Serif" font-size="10.00">+ back()</text>
+<text text-anchor="start" x="255" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00">+ begin()</text>
+<text text-anchor="start" x="255" y="-217" font-family="Helvetica,sans-Serif" font-size="10.00">+ end()</text>
+<text text-anchor="start" x="255" y="-206" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="255" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00">_OBJECT_REF_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="M331,-182.21C331,-158.89 331,-134.9 331,-113.96"/>
-<polygon fill="none" stroke="#404040" points="331,-113.68 327,-107.68 331,-101.68 335,-107.68 331,-113.68"/>
+<path fill="none" stroke="#404040" d="M331,-187.71C331,-162.51 331,-136.38 331,-113.86"/>
+<polygon fill="none" stroke="#404040" points="331,-113.75 327,-107.75 331,-101.75 335,-107.75 331,-113.75"/>
 <text text-anchor="middle" x="351.5" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00"> +shape</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="272,-541.5 272,-774.5 406,-774.5 406,-541.5 272,-541.5"/>
-<text text-anchor="middle" x="339" y="-762.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="272,-755.5 406,-755.5 "/>
-<text text-anchor="start" x="280" y="-743.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="272,-736.5 406,-736.5 "/>
+<polygon fill="white" stroke="black" points="272,-552.5 272,-785.5 406,-785.5 406,-552.5 272,-552.5"/>
+<text text-anchor="middle" x="339" y="-773.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="272,-766.5 406,-766.5 "/>
+<text text-anchor="start" x="280" y="-754.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="272,-747.5 406,-747.5 "/>
+<text text-anchor="start" x="280" y="-735.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="280" y="-724.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="280" y="-713.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="280" y="-702.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="280" y="-691.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="280" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="280" y="-669.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="280" y="-658.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="280" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="280" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="280" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="280" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="280" y="-713.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="280" y="-702.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="280" y="-691.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="280" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="280" y="-669.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="280" y="-658.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="280" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="280" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="280" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="280" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="280" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="280" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="280" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="280" y="-570.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="280" y="-559.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="280" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="280" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="280" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="280" y="-570.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="280" y="-559.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="M336.27,-531.24C335.29,-486.41 334.21,-436.44 333.27,-393.58"/>
-<polygon fill="none" stroke="midnightblue" points="332.77,-531.4 336.49,-541.32 339.77,-531.25 332.77,-531.4"/>
+<path fill="none" stroke="midnightblue" d="M336.31,-542.24C335.31,-495.73 334.19,-443.54 333.24,-399.11"/>
+<polygon fill="none" stroke="midnightblue" points="332.81,-542.46 336.52,-552.38 339.81,-542.31 332.81,-542.46"/>
 </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="269,-899.5 269,-1077.5 409,-1077.5 409,-899.5 269,-899.5"/>
-<text text-anchor="start" x="277" y="-1065.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="339" y="-1054.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="269,-1047.5 409,-1047.5 "/>
-<text text-anchor="middle" x="339" y="-1035.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="269,-1028.5 409,-1028.5 "/>
+<polygon fill="white" stroke="black" points="269,-910.5 269,-1088.5 409,-1088.5 409,-910.5 269,-910.5"/>
+<text text-anchor="start" x="277" y="-1076.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="339" y="-1065.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="269,-1058.5 409,-1058.5 "/>
+<text text-anchor="middle" x="339" y="-1046.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="269,-1039.5 409,-1039.5 "/>
+<text text-anchor="start" x="277" y="-1027.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-994.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="277" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="277" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="277" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="277" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="277" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="277" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="277" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="277" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="277" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="277" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="277" y="-917.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="M339,-899.47C339,-864.91 339,-824.57 339,-786.92"/>
-<polygon fill="none" stroke="#404040" points="339,-786.8 335,-780.8 339,-774.8 343,-780.8 339,-786.8"/>
-<text text-anchor="middle" x="358.5" y="-873" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M339,-910.47C339,-875.91 339,-835.57 339,-797.92"/>
+<polygon fill="none" stroke="#404040" points="339,-797.8 335,-791.8 339,-785.8 343,-791.8 339,-797.8"/>
+<text text-anchor="middle" x="358.5" y="-884" 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_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="433,-149.5 433,-426.5 565,-426.5 565,-149.5 433,-149.5"/>
-<text text-anchor="middle" x="499" y="-414.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="433,-407.5 565,-407.5 "/>
-<text text-anchor="middle" x="499" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="433,-388.5 565,-388.5 "/>
+<polygon fill="white" stroke="black" points="433,-149.5 433,-437.5 565,-437.5 565,-149.5 433,-149.5"/>
+<text text-anchor="middle" x="499" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="433,-418.5 565,-418.5 "/>
+<text text-anchor="middle" x="499" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="433,-399.5 565,-399.5 "/>
+<text text-anchor="start" x="441" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="441" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="441" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="441" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="441" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="441" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="441" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="441" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="441" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="441" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="441" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="441" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="441" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="441" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="441" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="441" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="441" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="441" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="441" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="441" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="441" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="441" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="441" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="441" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -241,8 +242,8 @@
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M432.8,-161.57C429.91,-157.28 426.98,-153.07 424,-149 414.36,-135.81 403.04,-122.58 391.68,-110.32"/>
-<polygon fill="none" stroke="#404040" points="391.66,-110.3 384.63,-108.69 383.42,-101.58 390.45,-103.2 391.66,-110.3"/>
+<path fill="none" stroke="#404040" d="M432.95,-162.05C430.02,-157.59 427.03,-153.22 424,-149 414.62,-135.94 403.54,-122.88 392.37,-110.77"/>
+<polygon fill="none" stroke="#404040" points="392.06,-110.44 385.04,-108.82 383.84,-101.71 390.86,-103.33 392.06,-110.44"/>
 <text text-anchor="middle" x="428" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypeImmNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypeImmNode.html
index 635a24b739..501d9e39e1 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypeImmNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypeImmNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::relax::DataTypeImmNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::DataTypeImmNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1DataTypeImmNode__coll__graph.svg" width="1166" height="2462"><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_1DataTypeImmNode__coll__graph.svg" width="1166" height="2476"><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_1DataTypeImmNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypeImmNode__coll__graph.svg
index e4ecd7717b..7b5a69ebe3 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypeImmNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypeImmNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::DataTypeImmNode Pages: 1 -->
-<svg width="874pt" height="1846pt"
- viewBox="0.00 0.00 873.50 1846.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 1842)">
+<svg width="874pt" height="1857pt"
+ viewBox="0.00 0.00 873.50 1857.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 1853)">
 <title>tvm::relax::DataTypeImmNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1842 869.5,-1842 869.5,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1853 869.5,-1853 869.5,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -30,223 +30,224 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1relax_1_1LeafExprNode.html" target="_top" xlink:title="Base type of all (non&#45;function) leaf Exprs.">
-<polygon fill="white" stroke="black" points="422.5,-248.5 422.5,-327.5 595.5,-327.5 595.5,-248.5 422.5,-248.5"/>
-<text text-anchor="middle" x="509" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::LeafExprNode</text>
-<polyline fill="none" stroke="black" points="422.5,-308.5 595.5,-308.5 "/>
-<text text-anchor="start" x="430.5" y="-296.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="430.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="422.5,-278.5 595.5,-278.5 "/>
-<text text-anchor="start" x="430.5" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="430.5" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="422.5,-254 422.5,-333 595.5,-333 595.5,-254 422.5,-254"/>
+<text text-anchor="middle" x="509" y="-321" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::LeafExprNode</text>
+<polyline fill="none" stroke="black" points="422.5,-314 595.5,-314 "/>
+<text text-anchor="start" x="430.5" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="430.5" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="422.5,-284 595.5,-284 "/>
+<text text-anchor="start" x="430.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="430.5" y="-261" 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="M526.39,-238.91C540.88,-198.87 561.42,-142.07 576.06,-101.61"/>
-<polygon fill="none" stroke="midnightblue" points="523.05,-237.86 522.94,-248.46 529.63,-240.24 523.05,-237.86"/>
+<path fill="none" stroke="midnightblue" d="M526.04,-244.28C540.65,-202.94 561.62,-143.61 576.4,-101.81"/>
+<polygon fill="none" stroke="midnightblue" points="522.69,-243.26 522.66,-253.86 529.29,-245.6 522.69,-243.26"/>
 </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="422.5,-464.5 422.5,-576.5 595.5,-576.5 595.5,-464.5 422.5,-464.5"/>
-<text text-anchor="middle" x="509" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExprNode</text>
-<polyline fill="none" stroke="black" points="422.5,-557.5 595.5,-557.5 "/>
-<text text-anchor="start" x="430.5" y="-545.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="430.5" y="-534.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="422.5,-527.5 595.5,-527.5 "/>
-<text text-anchor="start" x="430.5" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ checked_type()</text>
-<text text-anchor="start" x="430.5" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_as()</text>
-<text text-anchor="start" x="430.5" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ virtual_device()</text>
-<text text-anchor="start" x="430.5" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="430.5" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="422.5,-475.5 422.5,-587.5 595.5,-587.5 595.5,-475.5 422.5,-475.5"/>
+<text text-anchor="middle" x="509" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExprNode</text>
+<polyline fill="none" stroke="black" points="422.5,-568.5 595.5,-568.5 "/>
+<text text-anchor="start" x="430.5" y="-556.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="430.5" y="-545.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="422.5,-538.5 595.5,-538.5 "/>
+<text text-anchor="start" x="430.5" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ checked_type()</text>
+<text text-anchor="start" x="430.5" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_as()</text>
+<text text-anchor="start" x="430.5" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ virtual_device()</text>
+<text text-anchor="start" x="430.5" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="430.5" y="-482.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="M509,-454.14C509,-413.26 509,-362.01 509,-327.54"/>
-<polygon fill="none" stroke="midnightblue" points="505.5,-454.29 509,-464.29 512.5,-454.29 505.5,-454.29"/>
+<path fill="none" stroke="midnightblue" d="M509,-465.21C509,-422.72 509,-368.77 509,-333.01"/>
+<polygon fill="none" stroke="midnightblue" points="505.5,-465.47 509,-475.47 512.5,-465.47 505.5,-465.47"/>
 </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="254.5,-614.5 254.5,-737.5 427.5,-737.5 427.5,-614.5 254.5,-614.5"/>
-<text text-anchor="middle" x="341" y="-725.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
-<polyline fill="none" stroke="black" points="254.5,-718.5 427.5,-718.5 "/>
-<text text-anchor="start" x="262.5" y="-706.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="262.5" y="-695.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="262.5" y="-684.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="262.5" y="-673.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="262.5" y="-662.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="262.5" y="-651.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="254.5,-644.5 427.5,-644.5 "/>
-<text text-anchor="start" x="262.5" y="-632.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="262.5" y="-621.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="254.5,-625.5 254.5,-748.5 427.5,-748.5 427.5,-625.5 254.5,-625.5"/>
+<text text-anchor="middle" x="341" y="-736.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
+<polyline fill="none" stroke="black" points="254.5,-729.5 427.5,-729.5 "/>
+<text text-anchor="start" x="262.5" y="-717.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="262.5" y="-706.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="262.5" y="-695.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="262.5" y="-684.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="262.5" y="-673.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="262.5" y="-662.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="254.5,-655.5 427.5,-655.5 "/>
+<text text-anchor="start" x="262.5" y="-643.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="262.5" y="-632.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="M415.09,-607.3C426.27,-597.09 437.69,-586.65 448.54,-576.74"/>
-<polygon fill="none" stroke="midnightblue" points="412.42,-605 407.4,-614.33 417.14,-610.17 412.42,-605"/>
+<path fill="none" stroke="midnightblue" d="M415.09,-618.3C426.27,-608.09 437.69,-597.65 448.54,-587.74"/>
+<polygon fill="none" stroke="midnightblue" points="412.42,-616 407.4,-625.33 417.14,-621.17 412.42,-616"/>
 </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="0,-953.5 0,-1340.5 184,-1340.5 184,-953.5 0,-953.5"/>
-<text text-anchor="middle" x="92" y="-1328.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-1321.5 184,-1321.5 "/>
-<text text-anchor="start" x="8" y="-1309.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-1298.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-1287.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-1276.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-1265.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-1254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-1243.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-1232.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-1221.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-1210.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-1199.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-1188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-1177.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-1166.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-1159.5 184,-1159.5 "/>
-<text text-anchor="start" x="8" y="-1147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-1136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-1125.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-1114.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-1103.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-964.5 0,-1351.5 184,-1351.5 184,-964.5 0,-964.5"/>
+<text text-anchor="middle" x="92" y="-1339.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-1332.5 184,-1332.5 "/>
+<text text-anchor="start" x="8" y="-1320.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-1309.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-1298.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-1287.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-1276.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-1265.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-1254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-1243.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-1232.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-1221.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-1210.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-1199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-1188.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-1177.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-1170.5 184,-1170.5 "/>
+<text text-anchor="start" x="8" y="-1158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-1147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-1136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-1125.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-1114.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-1103.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-1092.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-1081.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-1070.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-1070.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-1059.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-1048.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-1037.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-1026.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-1015.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-1004.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-993.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-982.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-971.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-960.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-1048.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-1037.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-1026.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-1015.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-1004.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-993.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-982.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-971.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="M188.91,-963.47C231.44,-883.36 278.5,-794.72 308.84,-737.57"/>
-<polygon fill="none" stroke="midnightblue" points="185.61,-962.22 184.01,-972.69 191.79,-965.5 185.61,-962.22"/>
+<path fill="none" stroke="midnightblue" d="M188.91,-974.47C231.44,-894.36 278.5,-805.72 308.84,-748.57"/>
+<polygon fill="none" stroke="midnightblue" points="185.61,-973.22 184.01,-983.69 191.79,-976.5 185.61,-973.22"/>
 </g>
 <!-- Node5&#45;&gt;Node5 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M184.28,-1180.92C195.02,-1174.66 202,-1163.36 202,-1147 202,-1136.01 198.85,-1127.3 193.52,-1120.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-1120.81 186.29,-1120 184.28,-1113.08 191.45,-1113.89 193.46,-1120.81"/>
-<text text-anchor="middle" x="228" y="-1144.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-1191.92C195.02,-1185.66 202,-1174.36 202,-1158 202,-1147.01 198.85,-1138.3 193.52,-1131.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-1131.81 186.29,-1131 184.28,-1124.08 191.45,-1124.89 193.46,-1131.81"/>
+<text text-anchor="middle" x="228" y="-1155.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="272,-1102 272,-1192 428,-1192 428,-1102 272,-1102"/>
-<text text-anchor="middle" x="350" y="-1180" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="272,-1173 428,-1173 "/>
-<text text-anchor="middle" x="350" y="-1161" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-1154 428,-1154 "/>
-<text text-anchor="start" x="280" y="-1142" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="280" y="-1131" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="280" y="-1120" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-1109" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="272,-1113 272,-1203 428,-1203 428,-1113 272,-1113"/>
+<text text-anchor="middle" x="350" y="-1191" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="272,-1184 428,-1184 "/>
+<text text-anchor="middle" x="350" y="-1172" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-1165 428,-1165 "/>
+<text text-anchor="start" x="280" y="-1153" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="280" y="-1142" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="280" y="-1131" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-1120" 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="M349.15,-1101.88C347.6,-1021.08 344.29,-848.61 342.4,-750.06"/>
-<polygon fill="none" stroke="#404040" points="342.4,-749.83 338.28,-743.91 342.17,-737.84 346.28,-743.76 342.4,-749.83"/>
-<text text-anchor="middle" x="363.5" y="-843" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M349.15,-1112.88C347.6,-1032.08 344.29,-859.61 342.4,-761.06"/>
+<polygon fill="none" stroke="#404040" points="342.4,-760.83 338.28,-754.91 342.17,-748.84 346.28,-754.76 342.4,-760.83"/>
+<text text-anchor="middle" x="363.5" y="-854" 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="473,-1378.5 473,-1611.5 607,-1611.5 607,-1378.5 473,-1378.5"/>
-<text text-anchor="middle" x="540" y="-1599.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="473,-1592.5 607,-1592.5 "/>
-<text text-anchor="start" x="481" y="-1580.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="473,-1573.5 607,-1573.5 "/>
+<polygon fill="white" stroke="black" points="473,-1389.5 473,-1622.5 607,-1622.5 607,-1389.5 473,-1389.5"/>
+<text text-anchor="middle" x="540" y="-1610.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="473,-1603.5 607,-1603.5 "/>
+<text text-anchor="start" x="481" y="-1591.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="473,-1584.5 607,-1584.5 "/>
+<text text-anchor="start" x="481" y="-1572.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="481" y="-1561.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="481" y="-1550.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="481" y="-1539.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="481" y="-1528.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="481" y="-1517.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="481" y="-1506.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="481" y="-1495.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="481" y="-1484.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="481" y="-1473.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="481" y="-1462.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="481" y="-1451.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="481" y="-1550.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="481" y="-1539.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="481" y="-1528.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="481" y="-1517.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="481" y="-1506.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="481" y="-1495.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="481" y="-1484.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="481" y="-1473.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="481" y="-1462.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="481" y="-1451.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="481" y="-1440.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="481" y="-1429.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="481" y="-1418.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="481" y="-1407.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="481" y="-1396.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="481" y="-1385.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="481" y="-1429.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="481" y="-1418.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="481" y="-1407.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="481" y="-1396.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="M509.12,-1378.31C474.26,-1233.01 425.64,-976.04 452,-756 458.88,-698.6 474.9,-634.95 488.21,-588.46"/>
-<polygon fill="none" stroke="#404040" points="488.27,-588.25 486.11,-581.37 491.62,-576.72 493.79,-583.6 488.27,-588.25"/>
-<text text-anchor="middle" x="495" y="-843" font-family="Helvetica,sans-Serif" font-size="10.00"> +virtual_device_</text>
+<path fill="none" stroke="#404040" d="M509.12,-1389.31C474.26,-1244.01 425.64,-987.04 452,-767 458.88,-709.6 474.9,-645.95 488.21,-599.46"/>
+<polygon fill="none" stroke="#404040" points="488.27,-599.25 486.11,-592.37 491.62,-587.72 493.79,-594.6 488.27,-599.25"/>
+<text text-anchor="middle" x="495" y="-854" 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="M466.94,-1399.48C458.08,-1386.51 449.52,-1373.13 442,-1360 410.28,-1304.65 382.47,-1236.28 365.95,-1192.41"/>
-<polygon fill="none" stroke="midnightblue" points="464.22,-1401.71 472.79,-1407.94 469.98,-1397.73 464.22,-1401.71"/>
+<path fill="none" stroke="midnightblue" d="M466.94,-1410.48C458.08,-1397.51 449.52,-1384.13 442,-1371 410.28,-1315.65 382.47,-1247.28 365.95,-1203.41"/>
+<polygon fill="none" stroke="midnightblue" points="464.22,-1412.71 472.79,-1418.94 469.98,-1408.73 464.22,-1412.71"/>
 </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="547,-811.5 547,-879.5 703,-879.5 703,-811.5 547,-811.5"/>
-<text text-anchor="middle" x="625" y="-867.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<polyline fill="none" stroke="black" points="547,-860.5 703,-860.5 "/>
-<text text-anchor="middle" x="625" y="-848.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="547,-841.5 703,-841.5 "/>
-<text text-anchor="start" x="555" y="-829.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="555" y="-818.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="547,-822.5 547,-890.5 703,-890.5 703,-822.5 547,-822.5"/>
+<text text-anchor="middle" x="625" y="-878.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<polyline fill="none" stroke="black" points="547,-871.5 703,-871.5 "/>
+<text text-anchor="middle" x="625" y="-859.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="547,-852.5 703,-852.5 "/>
+<text text-anchor="start" x="555" y="-840.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="555" y="-829.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="M556.56,-1367.89C576.56,-1215.48 608.99,-968.42 620.65,-879.61"/>
-<polygon fill="none" stroke="midnightblue" points="553.03,-1367.87 555.2,-1378.24 559.97,-1368.78 553.03,-1367.87"/>
+<path fill="none" stroke="midnightblue" d="M556.56,-1378.89C576.56,-1226.48 608.99,-979.42 620.65,-890.61"/>
+<polygon fill="none" stroke="midnightblue" points="553.03,-1378.87 555.2,-1389.24 559.97,-1379.78 553.03,-1378.87"/>
 </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="708.5,-756.5 708.5,-934.5 865.5,-934.5 865.5,-756.5 708.5,-756.5"/>
-<text text-anchor="start" x="716.5" y="-922.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="787" y="-911.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::ObjectRef &gt;</text>
-<polyline fill="none" stroke="black" points="708.5,-904.5 865.5,-904.5 "/>
-<text text-anchor="start" x="716.5" y="-892.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="708.5,-885.5 865.5,-885.5 "/>
+<polygon fill="white" stroke="black" points="708.5,-767.5 708.5,-945.5 865.5,-945.5 865.5,-767.5 708.5,-767.5"/>
+<text text-anchor="start" x="716.5" y="-933.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="787" y="-922.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::ObjectRef &gt;</text>
+<polyline fill="none" stroke="black" points="708.5,-915.5 865.5,-915.5 "/>
+<text text-anchor="start" x="716.5" y="-903.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="708.5,-896.5 865.5,-896.5 "/>
+<text text-anchor="start" x="716.5" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="716.5" y="-873.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="716.5" y="-862.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="716.5" y="-851.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
@@ -254,84 +255,84 @@
 <text text-anchor="start" x="716.5" y="-829.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="716.5" y="-818.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="716.5" y="-807.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="716.5" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="716.5" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="716.5" y="-785.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="716.5" y="-774.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="716.5" y="-763.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
+<text text-anchor="start" x="716.5" y="-774.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="M589.2,-1368.91C592.87,-1359.47 596.5,-1350.09 600,-1341 654.68,-1199.03 716.94,-1033.61 754.05,-934.61"/>
-<polygon fill="none" stroke="midnightblue" points="585.89,-1367.77 585.52,-1378.35 592.41,-1370.3 585.89,-1367.77"/>
+<path fill="none" stroke="midnightblue" d="M589.2,-1379.91C592.87,-1370.47 596.5,-1361.09 600,-1352 654.68,-1210.03 716.94,-1044.61 754.05,-945.61"/>
+<polygon fill="none" stroke="midnightblue" points="585.89,-1378.77 585.52,-1389.35 592.41,-1381.3 585.89,-1378.77"/>
 </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="470,-1659.5 470,-1837.5 610,-1837.5 610,-1659.5 470,-1659.5"/>
-<text text-anchor="start" x="478" y="-1825.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="540" y="-1814.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="470,-1807.5 610,-1807.5 "/>
-<text text-anchor="middle" x="540" y="-1795.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="470,-1788.5 610,-1788.5 "/>
+<polygon fill="white" stroke="black" points="470,-1670.5 470,-1848.5 610,-1848.5 610,-1670.5 470,-1670.5"/>
+<text text-anchor="start" x="478" y="-1836.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="540" y="-1825.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="470,-1818.5 610,-1818.5 "/>
+<text text-anchor="middle" x="540" y="-1806.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="470,-1799.5 610,-1799.5 "/>
+<text text-anchor="start" x="478" y="-1787.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="478" y="-1776.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="478" y="-1765.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="478" y="-1754.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="478" y="-1743.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="478" y="-1732.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="478" y="-1721.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="478" y="-1710.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="478" y="-1699.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="478" y="-1688.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="478" y="-1677.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="478" y="-1666.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="478" y="-1721.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="478" y="-1710.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="478" y="-1699.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="478" y="-1688.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="478" y="-1677.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="M540,-1659.18C540,-1647.84 540,-1636.05 540,-1624.23"/>
-<polygon fill="none" stroke="#404040" points="540,-1623.91 536,-1617.91 540,-1611.91 544,-1617.91 540,-1623.91"/>
-<text text-anchor="middle" x="559.5" y="-1633" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M540,-1670.18C540,-1658.84 540,-1647.05 540,-1635.23"/>
+<polygon fill="none" stroke="#404040" points="540,-1634.91 536,-1628.91 540,-1622.91 544,-1628.91 540,-1634.91"/>
+<text text-anchor="middle" x="559.5" y="-1644" 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="M613.13,-811.45C594.33,-759.09 557.32,-656.03 532.87,-587.96"/>
-<polygon fill="none" stroke="#404040" points="532.81,-587.8 527.02,-583.51 528.76,-576.51 534.55,-580.8 532.81,-587.8"/>
-<text text-anchor="middle" x="629" y="-673.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +checked_type_</text>
+<path fill="none" stroke="#404040" d="M613.13,-822.45C594.33,-770.09 557.32,-667.03 532.87,-598.96"/>
+<polygon fill="none" stroke="#404040" points="532.81,-598.8 527.02,-594.51 528.76,-587.51 534.55,-591.8 532.81,-598.8"/>
+<text text-anchor="middle" x="629" y="-684.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="M758.83,-756.39C740.58,-709.87 713.05,-654.25 675,-614 655.75,-593.64 631,-576.61 606.52,-562.94"/>
-<polygon fill="none" stroke="#404040" points="606.25,-562.79 599.07,-563.46 595.69,-557.09 602.87,-556.42 606.25,-562.79"/>
-<text text-anchor="middle" x="785.5" y="-673.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +struct_info_</text>
+<path fill="none" stroke="#404040" d="M758.83,-767.39C740.58,-720.87 713.05,-665.25 675,-625 655.75,-604.64 631,-587.61 606.52,-573.94"/>
+<polygon fill="none" stroke="#404040" points="606.25,-573.79 599.07,-574.46 595.69,-568.09 602.87,-567.42 606.25,-573.79"/>
+<text text-anchor="middle" x="785.5" y="-684.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_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="614,-149.5 614,-426.5 746,-426.5 746,-149.5 614,-149.5"/>
-<text text-anchor="middle" x="680" y="-414.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="614,-407.5 746,-407.5 "/>
-<text text-anchor="middle" x="680" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="614,-388.5 746,-388.5 "/>
+<polygon fill="white" stroke="black" points="614,-149.5 614,-437.5 746,-437.5 746,-149.5 614,-149.5"/>
+<text text-anchor="middle" x="680" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="614,-418.5 746,-418.5 "/>
+<text text-anchor="middle" x="680" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="614,-399.5 746,-399.5 "/>
+<text text-anchor="start" x="622" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="622" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="622" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="622" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="622" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="622" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="622" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="622" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="622" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="622" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="622" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="622" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="622" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="622" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="622" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="622" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="622" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="622" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="622" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="622" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="622" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="622" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="622" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="622" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -348,8 +349,8 @@
 <!-- Node11&#45;&gt;Node1 -->
 <g id="edge14" class="edge">
 <title>Node11&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M629.6,-149.28C625,-136.71 620.52,-124.47 616.37,-113.14"/>
-<polygon fill="none" stroke="#404040" points="616.31,-112.96 610.49,-108.7 612.18,-101.69 618,-105.95 616.31,-112.96"/>
+<path fill="none" stroke="#404040" d="M628.86,-149.47C624.33,-136.82 619.93,-124.52 615.87,-113.15"/>
+<polygon fill="none" stroke="#404040" points="615.8,-112.97 610.02,-108.67 611.76,-101.67 617.55,-105.98 615.8,-112.97"/>
 <text text-anchor="middle" x="641.5" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00"> +value</text>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypePatternNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypePatternNode.html
index 58672e9caa..74a70e0a7e 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypePatternNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypePatternNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::relax::DataTypePatternNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::DataTypePatternNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1DataTypePatternNode__coll__graph.svg" width="756" height="1419"><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_1DataTypePatternNode__coll__graph.svg" width="756" height="1434"><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_1DataTypePatternNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypePatternNode__coll__graph.svg
index d1d6514d2d..cafad15c78 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypePatternNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataTypePatternNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::DataTypePatternNode Pages: 1 -->
-<svg width="567pt" height="1064pt"
- viewBox="0.00 0.00 567.00 1064.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 1060)">
+<svg width="567pt" height="1075pt"
+ viewBox="0.00 0.00 567.00 1075.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 1071)">
 <title>tvm::relax::DataTypePatternNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1060 563,-1060 563,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1071 563,-1071 563,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -28,199 +28,200 @@
 <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="53.5,-232 53.5,-300 226.5,-300 226.5,-232 53.5,-232"/>
-<text text-anchor="middle" x="140" y="-288" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DFPatternNode</text>
-<polyline fill="none" stroke="black" points="53.5,-281 226.5,-281 "/>
-<text text-anchor="start" x="61.5" y="-269" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<polyline fill="none" stroke="black" points="53.5,-262 226.5,-262 "/>
-<text text-anchor="start" x="61.5" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="61.5" y="-239" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="53.5,-237.5 53.5,-305.5 226.5,-305.5 226.5,-237.5 53.5,-237.5"/>
+<text text-anchor="middle" x="140" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DFPatternNode</text>
+<polyline fill="none" stroke="black" points="53.5,-286.5 226.5,-286.5 "/>
+<text text-anchor="start" x="61.5" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<polyline fill="none" stroke="black" points="53.5,-267.5 226.5,-267.5 "/>
+<text text-anchor="start" x="61.5" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="61.5" y="-244.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="M168.86,-223.5C188.94,-195.45 216.89,-158.01 244,-127 258.12,-110.85 274.64,-94.06 289.47,-79.64"/>
-<polygon fill="none" stroke="midnightblue" points="165.83,-221.72 162.89,-231.89 171.54,-225.78 165.83,-221.72"/>
+<path fill="none" stroke="midnightblue" d="M167.36,-229.05C187.41,-199.64 215.92,-159.73 244,-127 257.97,-110.72 274.46,-93.9 289.3,-79.5"/>
+<polygon fill="none" stroke="midnightblue" points="164.39,-227.19 161.68,-237.44 170.19,-231.12 164.39,-227.19"/>
 </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,-442.5 0,-829.5 184,-829.5 184,-442.5 0,-442.5"/>
-<text text-anchor="middle" x="92" y="-817.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-810.5 184,-810.5 "/>
-<text text-anchor="start" x="8" y="-798.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-787.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-776.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-765.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-754.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-743.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-732.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-721.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-710.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-699.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-688.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-677.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-666.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-655.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-648.5 184,-648.5 "/>
-<text text-anchor="start" x="8" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-453.5 0,-840.5 184,-840.5 184,-453.5 0,-453.5"/>
+<text text-anchor="middle" x="92" y="-828.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-821.5 184,-821.5 "/>
+<text text-anchor="start" x="8" y="-809.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-798.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-787.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-776.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-765.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-754.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-743.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-732.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-721.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-710.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-699.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-688.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-677.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-666.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-659.5 184,-659.5 "/>
+<text text-anchor="start" x="8" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-570.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-559.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-559.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-460.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="M118.42,-432.41C125.13,-380.97 131.59,-331.49 135.66,-300.27"/>
-<polygon fill="none" stroke="midnightblue" points="114.95,-432.01 117.12,-442.38 121.89,-432.91 114.95,-432.01"/>
+<path fill="none" stroke="midnightblue" d="M118.06,-443.21C124.95,-389.63 131.61,-337.82 135.75,-305.6"/>
+<polygon fill="none" stroke="midnightblue" points="114.58,-442.87 116.77,-453.23 121.52,-443.76 114.58,-442.87"/>
 </g>
 <!-- Node3&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M184.28,-669.92C195.02,-663.66 202,-652.36 202,-636 202,-625.01 198.85,-616.3 193.52,-609.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-609.81 186.29,-609 184.28,-602.08 191.45,-602.89 193.46,-609.81"/>
-<text text-anchor="middle" x="228" y="-633.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-680.92C195.02,-674.66 202,-663.36 202,-647 202,-636.01 198.85,-627.3 193.52,-620.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-620.81 186.29,-620 184.28,-613.08 191.45,-613.89 193.46,-620.81"/>
+<text text-anchor="middle" x="228" y="-644.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="253,-155 253,-377 409,-377 409,-155 253,-155"/>
-<text text-anchor="middle" x="331" y="-365" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DFPattern</text>
-<polyline fill="none" stroke="black" points="253,-358 409,-358 "/>
-<text text-anchor="middle" x="331" y="-346" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="253,-339 409,-339 "/>
-<text text-anchor="start" x="261" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator()()</text>
-<text text-anchor="start" x="261" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator()()</text>
-<text text-anchor="start" x="261" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator|()</text>
-<text text-anchor="start" x="261" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&amp;()</text>
-<text text-anchor="start" x="261" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator~()</text>
-<text text-anchor="start" x="261" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasAttr()</text>
-<text text-anchor="start" x="261" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasStructInfo()</text>
-<text text-anchor="start" x="261" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasType()</text>
-<text text-anchor="start" x="261" y="-239" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
-<text text-anchor="start" x="261" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
-<text text-anchor="start" x="261" y="-217" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasShape()</text>
-<text text-anchor="start" x="261" y="-206" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasSameShapeAs()</text>
-<text text-anchor="start" x="261" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00">+ dup()</text>
-<text text-anchor="start" x="261" y="-184" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator PatternSeq()</text>
-<text text-anchor="start" x="261" y="-173" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="261" y="-162" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="253,-160.5 253,-382.5 409,-382.5 409,-160.5 253,-160.5"/>
+<text text-anchor="middle" x="331" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DFPattern</text>
+<polyline fill="none" stroke="black" points="253,-363.5 409,-363.5 "/>
+<text text-anchor="middle" x="331" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="253,-344.5 409,-344.5 "/>
+<text text-anchor="start" x="261" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator()()</text>
+<text text-anchor="start" x="261" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator()()</text>
+<text text-anchor="start" x="261" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator|()</text>
+<text text-anchor="start" x="261" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&amp;()</text>
+<text text-anchor="start" x="261" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator~()</text>
+<text text-anchor="start" x="261" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasAttr()</text>
+<text text-anchor="start" x="261" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasStructInfo()</text>
+<text text-anchor="start" x="261" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasType()</text>
+<text text-anchor="start" x="261" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
+<text text-anchor="start" x="261" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
+<text text-anchor="start" x="261" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasShape()</text>
+<text text-anchor="start" x="261" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasSameShapeAs()</text>
+<text text-anchor="start" x="261" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ dup()</text>
+<text text-anchor="start" x="261" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator PatternSeq()</text>
+<text text-anchor="start" x="261" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="261" y="-167.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="M331,-154.97C331,-132.84 331,-110.61 331,-91.73"/>
-<polygon fill="none" stroke="#404040" points="331,-91.54 327,-85.54 331,-79.54 335,-85.54 331,-91.54"/>
+<path fill="none" stroke="#404040" d="M331,-160.46C331,-136.45 331,-112.17 331,-91.82"/>
+<polygon fill="none" stroke="#404040" points="331,-91.7 327,-85.7 331,-79.7 335,-85.7 331,-91.7"/>
 <text text-anchor="middle" x="354.5" y="-101" 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="272,-519.5 272,-752.5 406,-752.5 406,-519.5 272,-519.5"/>
-<text text-anchor="middle" x="339" y="-740.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="272,-733.5 406,-733.5 "/>
-<text text-anchor="start" x="280" y="-721.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="272,-714.5 406,-714.5 "/>
+<polygon fill="white" stroke="black" points="272,-530.5 272,-763.5 406,-763.5 406,-530.5 272,-530.5"/>
+<text text-anchor="middle" x="339" y="-751.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="272,-744.5 406,-744.5 "/>
+<text text-anchor="start" x="280" y="-732.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="272,-725.5 406,-725.5 "/>
+<text text-anchor="start" x="280" y="-713.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="280" y="-702.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="280" y="-691.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="280" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="280" y="-669.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="280" y="-658.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="280" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="280" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="280" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="280" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="280" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="280" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="280" y="-691.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="280" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="280" y="-669.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="280" y="-658.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="280" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="280" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="280" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="280" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="280" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="280" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="280" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="280" y="-570.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="280" y="-559.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="280" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="280" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="280" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="280" y="-570.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="280" y="-559.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="280" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="280" y="-537.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="M336.26,-509.11C335.33,-466.24 334.3,-418.69 333.39,-377.16"/>
-<polygon fill="none" stroke="midnightblue" points="332.77,-509.4 336.49,-519.32 339.77,-509.25 332.77,-509.4"/>
+<path fill="none" stroke="midnightblue" d="M336.31,-520.36C335.35,-475.78 334.29,-425.98 333.36,-382.78"/>
+<polygon fill="none" stroke="midnightblue" points="332.81,-520.46 336.52,-530.38 339.81,-520.31 332.81,-520.46"/>
 </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="269,-877.5 269,-1055.5 409,-1055.5 409,-877.5 269,-877.5"/>
-<text text-anchor="start" x="277" y="-1043.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="339" y="-1032.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="269,-1025.5 409,-1025.5 "/>
-<text text-anchor="middle" x="339" y="-1013.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="269,-1006.5 409,-1006.5 "/>
+<polygon fill="white" stroke="black" points="269,-888.5 269,-1066.5 409,-1066.5 409,-888.5 269,-888.5"/>
+<text text-anchor="start" x="277" y="-1054.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="339" y="-1043.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="269,-1036.5 409,-1036.5 "/>
+<text text-anchor="middle" x="339" y="-1024.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="269,-1017.5 409,-1017.5 "/>
+<text text-anchor="start" x="277" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-994.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="277" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="277" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="277" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="277" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="277" y="-895.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="277" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="277" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="277" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="277" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="277" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="277" y="-895.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="M339,-877.47C339,-842.91 339,-802.57 339,-764.92"/>
-<polygon fill="none" stroke="#404040" points="339,-764.8 335,-758.8 339,-752.8 343,-758.8 339,-764.8"/>
-<text text-anchor="middle" x="358.5" y="-851" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M339,-888.47C339,-853.91 339,-813.57 339,-775.92"/>
+<polygon fill="none" stroke="#404040" points="339,-775.8 335,-769.8 339,-763.8 343,-769.8 339,-775.8"/>
+<text text-anchor="middle" x="358.5" y="-862" 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_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="427,-127.5 427,-404.5 559,-404.5 559,-127.5 427,-127.5"/>
-<text text-anchor="middle" x="493" y="-392.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="427,-385.5 559,-385.5 "/>
-<text text-anchor="middle" x="493" y="-373.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="427,-366.5 559,-366.5 "/>
+<polygon fill="white" stroke="black" points="427,-127.5 427,-415.5 559,-415.5 559,-127.5 427,-127.5"/>
+<text text-anchor="middle" x="493" y="-403.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="427,-396.5 559,-396.5 "/>
+<text text-anchor="middle" x="493" y="-384.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="427,-377.5 559,-377.5 "/>
+<text text-anchor="start" x="435" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="435" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="435" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="435" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="435" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="435" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="435" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="435" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="435" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="435" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="435" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="435" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="435" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="435" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="435" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="435" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="435" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="435" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="435" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="435" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="435" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="435" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="435" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="435" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -237,8 +238,8 @@
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M426.94,-139.47C424.02,-135.2 421.03,-131.03 418,-127 407.94,-113.61 395.82,-100.31 383.87,-88.31"/>
-<polygon fill="none" stroke="#404040" points="383.79,-88.23 376.7,-86.88 375.22,-79.83 382.31,-81.18 383.79,-88.23"/>
+<path fill="none" stroke="#404040" d="M426.86,-139.58C423.96,-135.28 421.01,-131.07 418,-127 408.05,-113.53 395.97,-100.2 384.02,-88.2"/>
+<polygon fill="none" stroke="#404040" points="383.94,-88.12 376.86,-86.77 375.38,-79.71 382.46,-81.06 383.94,-88.12"/>
 <text text-anchor="middle" x="423" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DynTensorTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DynTensorTypeNode.html
index 36690f9db6..756e68596a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DynTensorTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DynTensorTypeNode.html
@@ -85,7 +85,7 @@ Inheritance diagram for tvm::relax::DynTensorTypeNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::DynTensorTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1DynTensorTypeNode__coll__graph.svg" width="620" height="2082"><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_1DynTensorTypeNode__coll__graph.svg" width="620" height="2096"><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_1DynTensorTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DynTensorTypeNode__coll__graph.svg
index bf4fb1eeb4..80ed51dc8d 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DynTensorTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DynTensorTypeNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::DynTensorTypeNode Pages: 1 -->
-<svg width="465pt" height="1561pt"
- viewBox="0.00 0.00 465.00 1561.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 1557)">
+<svg width="465pt" height="1572pt"
+ viewBox="0.00 0.00 465.00 1572.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 1568)">
 <title>tvm::relax::DynTensorTypeNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1557 461,-1557 461,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1568 461,-1568 461,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -33,213 +33,214 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1BaseTensorTypeNode.html" target="_top" xlink:title="Base of all Tensor types This container can hold TensorType or GenericTensorType.">
-<polygon fill="white" stroke="black" points="133.5,-281.5 133.5,-360.5 306.5,-360.5 306.5,-281.5 133.5,-281.5"/>
-<text text-anchor="middle" x="220" y="-348.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseTensorTypeNode</text>
-<polyline fill="none" stroke="black" points="133.5,-341.5 306.5,-341.5 "/>
-<text text-anchor="start" x="141.5" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="141.5" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="133.5,-311.5 306.5,-311.5 "/>
-<text text-anchor="start" x="141.5" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="141.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="133.5,-287 133.5,-366 306.5,-366 306.5,-287 133.5,-287"/>
+<text text-anchor="middle" x="220" y="-354" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseTensorTypeNode</text>
+<polyline fill="none" stroke="black" points="133.5,-347 306.5,-347 "/>
+<text text-anchor="start" x="141.5" y="-335" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="141.5" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="133.5,-317 306.5,-317 "/>
+<text text-anchor="start" x="141.5" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="141.5" y="-294" 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="M236.31,-271.73C249.46,-232.83 268.08,-177.73 282.62,-134.71"/>
-<polygon fill="none" stroke="midnightblue" points="232.98,-270.66 233.09,-281.25 239.61,-272.9 232.98,-270.66"/>
+<path fill="none" stroke="midnightblue" d="M235.99,-277.16C249.31,-236.89 268.41,-179.13 283.14,-134.58"/>
+<polygon fill="none" stroke="midnightblue" points="232.63,-276.15 232.82,-286.75 239.28,-278.35 232.63,-276.15"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="black" points="133.5,-497.5 133.5,-620.5 306.5,-620.5 306.5,-497.5 133.5,-497.5"/>
-<text text-anchor="middle" x="220" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<polyline fill="none" stroke="black" points="133.5,-601.5 306.5,-601.5 "/>
-<text text-anchor="start" x="141.5" y="-589.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="141.5" y="-578.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="141.5" y="-567.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="141.5" y="-556.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="141.5" y="-545.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="141.5" y="-534.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="133.5,-527.5 306.5,-527.5 "/>
-<text text-anchor="start" x="141.5" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="141.5" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="133.5,-508.5 133.5,-631.5 306.5,-631.5 306.5,-508.5 133.5,-508.5"/>
+<text text-anchor="middle" x="220" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<polyline fill="none" stroke="black" points="133.5,-612.5 306.5,-612.5 "/>
+<text text-anchor="start" x="141.5" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="141.5" y="-589.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="141.5" y="-578.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="141.5" y="-567.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="141.5" y="-556.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="141.5" y="-545.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="133.5,-538.5 306.5,-538.5 "/>
+<text text-anchor="start" x="141.5" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="141.5" y="-515.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="M220,-487.17C220,-445.72 220,-394.97 220,-360.75"/>
-<polygon fill="none" stroke="midnightblue" points="216.5,-487.22 220,-497.22 223.5,-487.22 216.5,-487.22"/>
+<path fill="none" stroke="midnightblue" d="M220,-498.22C220,-455.12 220,-401.71 220,-366.23"/>
+<polygon fill="none" stroke="midnightblue" points="216.5,-498.37 220,-508.37 223.5,-498.37 216.5,-498.37"/>
 </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,-668.5 0,-1055.5 184,-1055.5 184,-668.5 0,-668.5"/>
-<text text-anchor="middle" x="92" y="-1043.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-1036.5 184,-1036.5 "/>
-<text text-anchor="start" x="8" y="-1024.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-1013.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-1002.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-991.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-980.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-936.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-925.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-914.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-903.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-892.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-881.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-874.5 184,-874.5 "/>
-<text text-anchor="start" x="8" y="-862.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-851.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-840.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-829.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-818.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-679.5 0,-1066.5 184,-1066.5 184,-679.5 0,-679.5"/>
+<text text-anchor="middle" x="92" y="-1054.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-1047.5 184,-1047.5 "/>
+<text text-anchor="start" x="8" y="-1035.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-1024.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-1013.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-1002.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-991.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-980.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-936.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-925.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-914.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-903.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-892.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-885.5 184,-885.5 "/>
+<text text-anchor="start" x="8" y="-873.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-862.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-851.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-840.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-829.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-818.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-807.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-785.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-785.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-774.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-763.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-752.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-741.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-730.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-719.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-708.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-697.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-686.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-675.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-763.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-752.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-741.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-730.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-719.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-708.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-697.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-686.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="M178,-658.77C183.76,-645.23 189.25,-632.32 194.25,-620.56"/>
-<polygon fill="none" stroke="midnightblue" points="174.66,-657.67 173.97,-668.24 181.1,-660.41 174.66,-657.67"/>
+<path fill="none" stroke="midnightblue" d="M178,-669.77C183.76,-656.23 189.25,-643.32 194.25,-631.56"/>
+<polygon fill="none" stroke="midnightblue" points="174.66,-668.67 173.97,-679.24 181.1,-671.41 174.66,-668.67"/>
 </g>
 <!-- Node4&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M184.28,-895.92C195.02,-889.66 202,-878.36 202,-862 202,-851.01 198.85,-842.3 193.52,-835.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-835.81 186.29,-835 184.28,-828.08 191.45,-828.89 193.46,-835.81"/>
-<text text-anchor="middle" x="228" y="-859.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-906.92C195.02,-900.66 202,-889.36 202,-873 202,-862.01 198.85,-853.3 193.52,-846.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-846.81 186.29,-846 184.28,-839.08 191.45,-839.89 193.46,-846.81"/>
+<text text-anchor="middle" x="228" y="-870.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="272,-817 272,-907 428,-907 428,-817 272,-817"/>
-<text text-anchor="middle" x="350" y="-895" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="272,-888 428,-888 "/>
-<text text-anchor="middle" x="350" y="-876" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-869 428,-869 "/>
-<text text-anchor="start" x="280" y="-857" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="280" y="-846" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="280" y="-835" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-824" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="272,-828 272,-918 428,-918 428,-828 272,-828"/>
+<text text-anchor="middle" x="350" y="-906" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="272,-899 428,-899 "/>
+<text text-anchor="middle" x="350" y="-887" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-880 428,-880 "/>
+<text text-anchor="start" x="280" y="-868" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="280" y="-857" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="280" y="-846" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-835" 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="M330.96,-816.91C309.97,-768.3 275.88,-689.38 251.02,-631.82"/>
-<polygon fill="none" stroke="#404040" points="250.94,-631.63 244.88,-627.71 246.18,-620.61 252.23,-624.53 250.94,-631.63"/>
-<text text-anchor="middle" x="276.5" y="-642" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M330.96,-827.91C309.97,-779.3 275.88,-700.38 251.02,-642.82"/>
+<polygon fill="none" stroke="#404040" points="250.94,-642.63 244.88,-638.71 246.18,-631.61 252.23,-635.53 250.94,-642.63"/>
+<text text-anchor="middle" x="276.5" y="-653" 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="283,-1093.5 283,-1326.5 417,-1326.5 417,-1093.5 283,-1093.5"/>
-<text text-anchor="middle" x="350" y="-1314.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="283,-1307.5 417,-1307.5 "/>
-<text text-anchor="start" x="291" y="-1295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="283,-1288.5 417,-1288.5 "/>
+<polygon fill="white" stroke="black" points="283,-1104.5 283,-1337.5 417,-1337.5 417,-1104.5 283,-1104.5"/>
+<text text-anchor="middle" x="350" y="-1325.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="283,-1318.5 417,-1318.5 "/>
+<text text-anchor="start" x="291" y="-1306.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="283,-1299.5 417,-1299.5 "/>
+<text text-anchor="start" x="291" y="-1287.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="291" y="-1276.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="291" y="-1265.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="291" y="-1254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="291" y="-1243.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="291" y="-1232.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="291" y="-1221.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="291" y="-1210.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="291" y="-1199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="291" y="-1188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="291" y="-1177.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="291" y="-1166.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="291" y="-1265.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="291" y="-1254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="291" y="-1243.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="291" y="-1232.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="291" y="-1221.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="291" y="-1210.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="291" y="-1199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="291" y="-1188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="291" y="-1177.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="291" y="-1166.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="291" y="-1155.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="291" y="-1144.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="291" y="-1133.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="291" y="-1122.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="291" y="-1111.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="291" y="-1100.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="291" y="-1144.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="291" y="-1133.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="291" y="-1122.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="291" y="-1111.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="M350,-1083.11C350,-1021.57 350,-951.41 350,-907.17"/>
-<polygon fill="none" stroke="midnightblue" points="346.5,-1083.31 350,-1093.31 353.5,-1083.31 346.5,-1083.31"/>
+<path fill="none" stroke="midnightblue" d="M350,-1094.11C350,-1032.57 350,-962.41 350,-918.17"/>
+<polygon fill="none" stroke="midnightblue" points="346.5,-1094.31 350,-1104.31 353.5,-1094.31 346.5,-1094.31"/>
 </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="280,-1374.5 280,-1552.5 420,-1552.5 420,-1374.5 280,-1374.5"/>
-<text text-anchor="start" x="288" y="-1540.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="350" y="-1529.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="280,-1522.5 420,-1522.5 "/>
-<text text-anchor="middle" x="350" y="-1510.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="280,-1503.5 420,-1503.5 "/>
+<polygon fill="white" stroke="black" points="280,-1385.5 280,-1563.5 420,-1563.5 420,-1385.5 280,-1385.5"/>
+<text text-anchor="start" x="288" y="-1551.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="350" y="-1540.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="280,-1533.5 420,-1533.5 "/>
+<text text-anchor="middle" x="350" y="-1521.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="280,-1514.5 420,-1514.5 "/>
+<text text-anchor="start" x="288" y="-1502.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1491.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1480.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1469.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1458.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="288" y="-1447.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1436.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1425.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="288" y="-1414.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="288" y="-1403.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="288" y="-1392.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="288" y="-1381.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="288" y="-1436.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="288" y="-1425.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="288" y="-1414.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="288" y="-1403.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="288" y="-1392.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="M350,-1374.18C350,-1362.84 350,-1351.05 350,-1339.23"/>
-<polygon fill="none" stroke="#404040" points="350,-1338.91 346,-1332.91 350,-1326.91 354,-1332.91 350,-1338.91"/>
-<text text-anchor="middle" x="369.5" y="-1348" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M350,-1385.18C350,-1373.84 350,-1362.05 350,-1350.23"/>
+<polygon fill="none" stroke="#404040" points="350,-1349.91 346,-1343.91 350,-1337.91 354,-1343.91 350,-1349.91"/>
+<text text-anchor="middle" x="369.5" y="-1359" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="325,-182.5 325,-459.5 457,-459.5 457,-182.5 325,-182.5"/>
-<text text-anchor="middle" x="391" y="-447.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="325,-440.5 457,-440.5 "/>
-<text text-anchor="middle" x="391" y="-428.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="325,-421.5 457,-421.5 "/>
+<polygon fill="white" stroke="black" points="325,-182.5 325,-470.5 457,-470.5 457,-182.5 325,-182.5"/>
+<text text-anchor="middle" x="391" y="-458.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="325,-451.5 457,-451.5 "/>
+<text text-anchor="middle" x="391" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="325,-432.5 457,-432.5 "/>
+<text text-anchor="start" x="333" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="333" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="333" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="333" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="333" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="333" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="333" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="333" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="333" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="333" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="333" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="333" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="333" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="333" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="333" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="333" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="333" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="333" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="333" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="333" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="333" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="333" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="333" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="333" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -256,8 +257,8 @@
 <!-- Node8&#45;&gt;Node1 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M343.97,-182.48C339.71,-170.01 335.5,-157.69 331.51,-146.03"/>
-<polygon fill="none" stroke="#404040" points="331.49,-145.95 325.76,-141.57 327.6,-134.6 333.33,-138.98 331.49,-145.95"/>
+<path fill="none" stroke="#404040" d="M343.1,-182.35C338.97,-170.03 334.91,-157.89 331.07,-146.4"/>
+<polygon fill="none" stroke="#404040" points="330.95,-146.05 325.25,-141.63 327.14,-134.67 332.84,-139.09 330.95,-146.05"/>
 <text text-anchor="middle" x="356" y="-156" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1PrimStructInfoNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1PrimStructInfoNode.html
index a25a5a470a..0aa03860f3 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1PrimStructInfoNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1PrimStructInfoNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::relax::PrimStructInfoNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::PrimStructInfoNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1PrimStructInfoNode__coll__graph.svg" width="871" height="2047"><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_1PrimStructInfoNode__coll__graph.svg" width="871" height="2062"><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_1PrimStructInfoNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1PrimStructInfoNode__coll__graph.svg
index cfea5428bb..d5370602c0 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1PrimStructInfoNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1PrimStructInfoNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::PrimStructInfoNode Pages: 1 -->
-<svg width="653pt" height="1535pt"
- viewBox="0.00 0.00 653.00 1535.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 1531)">
+<svg width="653pt" height="1546pt"
+ viewBox="0.00 0.00 653.00 1546.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 1542)">
 <title>tvm::relax::PrimStructInfoNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1531 649,-1531 649,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1542 649,-1542 649,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -30,151 +30,152 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1relax_1_1StructInfoNode.html" target="_top" xlink:title="Base type of all structure information.">
-<polygon fill="white" stroke="black" points="246.5,-226.5 246.5,-349.5 419.5,-349.5 419.5,-226.5 246.5,-226.5"/>
-<text text-anchor="middle" x="333" y="-337.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::StructInfoNode</text>
-<polyline fill="none" stroke="black" points="246.5,-330.5 419.5,-330.5 "/>
-<text text-anchor="start" x="254.5" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="254.5" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="254.5" y="-296.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="254.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="254.5" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="254.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="246.5,-256.5 419.5,-256.5 "/>
-<text text-anchor="start" x="254.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="254.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="246.5,-232 246.5,-355 419.5,-355 419.5,-232 246.5,-232"/>
+<text text-anchor="middle" x="333" y="-343" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::StructInfoNode</text>
+<polyline fill="none" stroke="black" points="246.5,-336 419.5,-336 "/>
+<text text-anchor="start" x="254.5" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="254.5" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="254.5" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="254.5" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="254.5" y="-280" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="254.5" y="-269" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="246.5,-262 419.5,-262 "/>
+<text text-anchor="start" x="254.5" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="254.5" y="-239" 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="M369.53,-217.21C388.98,-180.04 412.45,-135.21 430.03,-101.62"/>
-<polygon fill="none" stroke="midnightblue" points="366.21,-216 364.68,-226.48 372.41,-219.24 366.21,-216"/>
+<path fill="none" stroke="midnightblue" d="M368.71,-222.67C388.52,-183.94 412.69,-136.69 430.57,-101.73"/>
+<polygon fill="none" stroke="midnightblue" points="365.48,-221.31 364.04,-231.81 371.71,-224.5 365.48,-221.31"/>
 </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,-642.5 0,-1029.5 184,-1029.5 184,-642.5 0,-642.5"/>
-<text text-anchor="middle" x="92" y="-1017.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-1010.5 184,-1010.5 "/>
-<text text-anchor="start" x="8" y="-998.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-987.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-976.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-965.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-954.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-943.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-932.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-921.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-910.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-899.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-888.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-877.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-866.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-855.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-848.5 184,-848.5 "/>
-<text text-anchor="start" x="8" y="-836.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-653.5 0,-1040.5 184,-1040.5 184,-653.5 0,-653.5"/>
+<text text-anchor="middle" x="92" y="-1028.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-1021.5 184,-1021.5 "/>
+<text text-anchor="start" x="8" y="-1009.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-998.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-987.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-976.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-965.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-954.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-943.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-932.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-921.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-910.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-899.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-888.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-877.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-866.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-859.5 184,-859.5 "/>
+<text text-anchor="start" x="8" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-836.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-660.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="M181.28,-632.74C225.69,-532.12 276.18,-417.73 306.27,-349.56"/>
-<polygon fill="none" stroke="midnightblue" points="177.97,-631.55 177.14,-642.12 184.38,-634.38 177.97,-631.55"/>
+<path fill="none" stroke="midnightblue" d="M180.16,-644.27C224.92,-541.82 276.12,-424.65 306.45,-355.27"/>
+<polygon fill="none" stroke="midnightblue" points="176.92,-642.93 176.12,-653.5 183.33,-645.74 176.92,-642.93"/>
 </g>
 <!-- Node3&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M184.28,-869.92C195.02,-863.66 202,-852.36 202,-836 202,-825.01 198.85,-816.3 193.52,-809.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-809.81 186.29,-809 184.28,-802.08 191.45,-802.89 193.46,-809.81"/>
-<text text-anchor="middle" x="228" y="-833.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-880.92C195.02,-874.66 202,-863.36 202,-847 202,-836.01 198.85,-827.3 193.52,-820.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-820.81 186.29,-820 184.28,-813.08 191.45,-813.89 193.46,-820.81"/>
+<text text-anchor="middle" x="228" y="-844.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_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="272,-791 272,-881 428,-881 428,-791 272,-791"/>
-<text text-anchor="middle" x="350" y="-869" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="272,-862 428,-862 "/>
-<text text-anchor="middle" x="350" y="-850" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-843 428,-843 "/>
-<text text-anchor="start" x="280" y="-831" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="280" y="-820" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="280" y="-809" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-798" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="272,-802 272,-892 428,-892 428,-802 272,-802"/>
+<text text-anchor="middle" x="350" y="-880" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="272,-873 428,-873 "/>
+<text text-anchor="middle" x="350" y="-861" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-854 428,-854 "/>
+<text text-anchor="start" x="280" y="-842" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="280" y="-831" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="280" y="-820" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-809" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node2 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M348.62,-790.78C345.7,-696.84 338.84,-476.61 335.26,-361.69"/>
-<polygon fill="none" stroke="#404040" points="335.26,-361.55 331.07,-355.68 334.89,-349.56 339.07,-355.43 335.26,-361.55"/>
-<text text-anchor="middle" x="361.5" y="-532" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M348.64,-801.8C345.72,-707.1 338.84,-483.81 335.25,-367.62"/>
+<polygon fill="none" stroke="#404040" points="335.25,-367.36 331.06,-361.48 334.88,-355.36 339.06,-361.24 335.25,-367.36"/>
+<text text-anchor="middle" x="361.5" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</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="336,-1067.5 336,-1300.5 470,-1300.5 470,-1067.5 336,-1067.5"/>
-<text text-anchor="middle" x="403" y="-1288.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="336,-1281.5 470,-1281.5 "/>
-<text text-anchor="start" x="344" y="-1269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="336,-1262.5 470,-1262.5 "/>
+<polygon fill="white" stroke="black" points="336,-1078.5 336,-1311.5 470,-1311.5 470,-1078.5 336,-1078.5"/>
+<text text-anchor="middle" x="403" y="-1299.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="336,-1292.5 470,-1292.5 "/>
+<text text-anchor="start" x="344" y="-1280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="336,-1273.5 470,-1273.5 "/>
+<text text-anchor="start" x="344" y="-1261.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="344" y="-1250.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="344" y="-1239.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="344" y="-1228.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="344" y="-1217.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="344" y="-1206.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="344" y="-1195.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="344" y="-1184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="344" y="-1173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="344" y="-1162.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="344" y="-1151.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="344" y="-1140.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="344" y="-1239.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="344" y="-1228.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="344" y="-1217.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="344" y="-1206.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="344" y="-1195.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="344" y="-1184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="344" y="-1173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="344" y="-1162.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="344" y="-1151.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="344" y="-1140.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="344" y="-1129.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="344" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="344" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="344" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="344" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="344" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="344" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="344" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="344" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="344" y="-1085.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="M383.72,-1057.11C374.29,-995.57 363.54,-925.41 356.77,-881.17"/>
-<polygon fill="none" stroke="midnightblue" points="380.3,-1057.95 385.28,-1067.31 387.22,-1056.89 380.3,-1057.95"/>
+<path fill="none" stroke="midnightblue" d="M383.72,-1068.11C374.29,-1006.57 363.54,-936.41 356.77,-892.17"/>
+<polygon fill="none" stroke="midnightblue" points="380.3,-1068.95 385.28,-1078.31 387.22,-1067.89 380.3,-1068.95"/>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node">
 <title>Node7</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="392,-445.5 392,-623.5 520,-623.5 520,-445.5 392,-445.5"/>
-<text text-anchor="start" x="400" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="456" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::PrimExpr &gt;</text>
-<polyline fill="none" stroke="black" points="392,-593.5 520,-593.5 "/>
-<text text-anchor="start" x="400" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="392,-574.5 520,-574.5 "/>
+<polygon fill="white" stroke="black" points="392,-456.5 392,-634.5 520,-634.5 520,-456.5 392,-456.5"/>
+<text text-anchor="start" x="400" y="-622.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="456" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::PrimExpr &gt;</text>
+<polyline fill="none" stroke="black" points="392,-604.5 520,-604.5 "/>
+<text text-anchor="start" x="400" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="392,-585.5 520,-585.5 "/>
+<text text-anchor="start" x="400" y="-573.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="400" y="-562.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="400" y="-551.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="400" y="-540.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
@@ -182,77 +183,77 @@
 <text text-anchor="start" x="400" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="400" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="400" y="-496.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="400" y="-485.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="400" y="-485.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="400" y="-474.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="400" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="400" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
+<text text-anchor="start" x="400" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</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="M432.82,-1057.28C434.43,-1048.08 435.85,-1038.92 437,-1030 455.25,-888.77 457.84,-723.13 457.39,-623.89"/>
-<polygon fill="none" stroke="midnightblue" points="429.35,-1056.81 431.02,-1067.27 436.24,-1058.05 429.35,-1056.81"/>
+<path fill="none" stroke="midnightblue" d="M432.82,-1068.28C434.43,-1059.08 435.85,-1049.92 437,-1041 455.25,-899.77 457.84,-734.13 457.39,-634.89"/>
+<polygon fill="none" stroke="midnightblue" points="429.35,-1067.81 431.02,-1078.27 436.24,-1069.05 429.35,-1067.81"/>
 </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="333,-1348.5 333,-1526.5 473,-1526.5 473,-1348.5 333,-1348.5"/>
-<text text-anchor="start" x="341" y="-1514.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="403" y="-1503.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="333,-1496.5 473,-1496.5 "/>
-<text text-anchor="middle" x="403" y="-1484.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="333,-1477.5 473,-1477.5 "/>
+<polygon fill="white" stroke="black" points="333,-1359.5 333,-1537.5 473,-1537.5 473,-1359.5 333,-1359.5"/>
+<text text-anchor="start" x="341" y="-1525.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="403" y="-1514.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="333,-1507.5 473,-1507.5 "/>
+<text text-anchor="middle" x="403" y="-1495.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="333,-1488.5 473,-1488.5 "/>
+<text text-anchor="start" x="341" y="-1476.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="341" y="-1465.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="341" y="-1454.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="341" y="-1443.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="341" y="-1432.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="341" y="-1421.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="341" y="-1410.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="341" y="-1399.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="341" y="-1388.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="341" y="-1377.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="341" y="-1366.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="341" y="-1355.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="341" y="-1410.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="341" y="-1399.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="341" y="-1388.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="341" y="-1377.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="341" y="-1366.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="M403,-1348.18C403,-1336.84 403,-1325.05 403,-1313.23"/>
-<polygon fill="none" stroke="#404040" points="403,-1312.91 399,-1306.91 403,-1300.91 407,-1306.91 403,-1312.91"/>
-<text text-anchor="middle" x="422.5" y="-1322" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M403,-1359.18C403,-1347.84 403,-1336.05 403,-1324.23"/>
+<polygon fill="none" stroke="#404040" points="403,-1323.91 399,-1317.91 403,-1311.91 407,-1317.91 403,-1323.91"/>
+<text text-anchor="middle" x="422.5" y="-1333" 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="M456,-445.47C456,-349.35 456,-197.91 456,-113.7"/>
-<polygon fill="none" stroke="#404040" points="456,-113.52 452,-107.52 456,-101.52 460,-107.52 456,-113.52"/>
-<text text-anchor="middle" x="475.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +value</text>
+<path fill="none" stroke="#404040" d="M456,-456.45C456,-357.82 456,-200.48 456,-113.99"/>
+<polygon fill="none" stroke="#404040" points="456,-113.76 452,-107.76 456,-101.76 460,-107.76 456,-113.76"/>
+<text text-anchor="middle" x="475.5" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00"> +value</text>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="513,-149.5 513,-426.5 645,-426.5 645,-149.5 513,-149.5"/>
-<text text-anchor="middle" x="579" y="-414.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="513,-407.5 645,-407.5 "/>
-<text text-anchor="middle" x="579" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="513,-388.5 645,-388.5 "/>
+<polygon fill="white" stroke="black" points="513,-149.5 513,-437.5 645,-437.5 645,-149.5 513,-149.5"/>
+<text text-anchor="middle" x="579" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="513,-418.5 645,-418.5 "/>
+<text text-anchor="middle" x="579" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="513,-399.5 645,-399.5 "/>
+<text text-anchor="start" x="521" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="521" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="521" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="521" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="521" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="521" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="521" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="521" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="521" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="521" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="521" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="521" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="521" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="521" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="521" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="521" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="521" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="521" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="521" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="521" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="521" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="521" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="521" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="521" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -269,8 +270,8 @@
 <!-- Node8&#45;&gt;Node1 -->
 <g id="edge9" class="edge">
 <title>Node8&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M513,-160.9C504.23,-144.16 495.59,-127.64 487.79,-112.74"/>
-<polygon fill="none" stroke="#404040" points="487.56,-112.3 481.24,-108.84 482,-101.67 488.32,-105.13 487.56,-112.3"/>
+<path fill="none" stroke="#404040" d="M513,-163.45C503.96,-145.79 495.06,-128.38 487.07,-112.76"/>
+<polygon fill="none" stroke="#404040" points="486.89,-112.4 480.6,-108.88 481.43,-101.72 487.72,-105.24 486.89,-112.4"/>
 <text text-anchor="middle" x="516" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorStructInfoNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorStructInfoNode.html
index ffd91563a4..89c3ebb2e3 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorStructInfoNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorStructInfoNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::relax::TensorStructInfoNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::TensorStructInfoNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1TensorStructInfoNode__coll__graph.svg" width="962" height="2120"><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_1TensorStructInfoNode__coll__graph.svg" width="962" 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_1relax_1_1TensorStructInfoNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorStructInfoNode__coll__graph.svg
index f46d0333d1..db67a9157f 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorStructInfoNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorStructInfoNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::TensorStructInfoNode Pages: 1 -->
-<svg width="721pt" height="1590pt"
- viewBox="0.00 0.00 721.00 1590.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 1586)">
+<svg width="721pt" height="1601pt"
+ viewBox="0.00 0.00 721.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::relax::TensorStructInfoNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1586 717,-1586 717,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1597 717,-1597 717,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -35,151 +35,152 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1relax_1_1StructInfoNode.html" target="_top" xlink:title="Base type of all structure information.">
-<polygon fill="white" stroke="black" points="226.5,-281.5 226.5,-404.5 399.5,-404.5 399.5,-281.5 226.5,-281.5"/>
-<text text-anchor="middle" x="313" y="-392.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::StructInfoNode</text>
-<polyline fill="none" stroke="black" points="226.5,-385.5 399.5,-385.5 "/>
-<text text-anchor="start" x="234.5" y="-373.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="234.5" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="234.5" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="234.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="234.5" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="234.5" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="226.5,-311.5 399.5,-311.5 "/>
-<text text-anchor="start" x="234.5" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="234.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="226.5,-287 226.5,-410 399.5,-410 399.5,-287 226.5,-287"/>
+<text text-anchor="middle" x="313" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::StructInfoNode</text>
+<polyline fill="none" stroke="black" points="226.5,-391 399.5,-391 "/>
+<text text-anchor="start" x="234.5" y="-379" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="234.5" y="-368" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="234.5" y="-357" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="234.5" y="-346" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="234.5" y="-335" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="234.5" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="226.5,-317 399.5,-317 "/>
+<text text-anchor="start" x="234.5" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="234.5" y="-294" 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="M355.59,-272.57C377.45,-236.93 404.14,-193.41 426.64,-156.71"/>
-<polygon fill="none" stroke="midnightblue" points="352.38,-271.09 350.14,-281.45 358.35,-274.75 352.38,-271.09"/>
+<path fill="none" stroke="midnightblue" d="M354.79,-277.94C377.07,-240.85 404.55,-195.11 427.5,-156.9"/>
+<polygon fill="none" stroke="midnightblue" points="351.68,-276.31 349.53,-286.69 357.68,-279.92 351.68,-276.31"/>
 </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,-697.5 0,-1084.5 184,-1084.5 184,-697.5 0,-697.5"/>
-<text text-anchor="middle" x="92" y="-1072.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-1065.5 184,-1065.5 "/>
-<text text-anchor="start" x="8" y="-1053.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-1042.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-1031.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-1020.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-1009.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-998.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-987.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-976.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-965.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-954.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-943.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-932.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-921.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-910.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-903.5 184,-903.5 "/>
-<text text-anchor="start" x="8" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-880.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-869.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-858.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-708.5 0,-1095.5 184,-1095.5 184,-708.5 0,-708.5"/>
+<text text-anchor="middle" x="92" y="-1083.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-1076.5 184,-1076.5 "/>
+<text text-anchor="start" x="8" y="-1064.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-1053.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-1042.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-1031.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-1020.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-1009.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-998.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-987.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-976.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-965.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-954.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-943.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-932.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-921.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-914.5 184,-914.5 "/>
+<text text-anchor="start" x="8" y="-902.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-880.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-869.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-858.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-836.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-715.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="M173.87,-687.74C214.59,-587.12 260.89,-472.73 288.49,-404.56"/>
-<polygon fill="none" stroke="midnightblue" points="170.58,-686.53 170.07,-697.12 177.07,-689.16 170.58,-686.53"/>
+<path fill="none" stroke="midnightblue" d="M172.96,-698.96C213.99,-596.58 260.87,-479.58 288.65,-410.27"/>
+<polygon fill="none" stroke="midnightblue" points="169.61,-697.91 169.14,-708.5 176.11,-700.52 169.61,-697.91"/>
 </g>
 <!-- Node3&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M184.28,-924.92C195.02,-918.66 202,-907.36 202,-891 202,-880.01 198.85,-871.3 193.52,-864.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-864.81 186.29,-864 184.28,-857.08 191.45,-857.89 193.46,-864.81"/>
-<text text-anchor="middle" x="228" y="-888.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-935.92C195.02,-929.66 202,-918.36 202,-902 202,-891.01 198.85,-882.3 193.52,-875.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-875.81 186.29,-875 184.28,-868.08 191.45,-868.89 193.46,-875.81"/>
+<text text-anchor="middle" x="228" y="-899.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_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="272,-846 272,-936 428,-936 428,-846 272,-846"/>
-<text text-anchor="middle" x="350" y="-924" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="272,-917 428,-917 "/>
-<text text-anchor="middle" x="350" y="-905" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-898 428,-898 "/>
-<text text-anchor="start" x="280" y="-886" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="280" y="-875" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="280" y="-864" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-853" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="272,-857 272,-947 428,-947 428,-857 272,-857"/>
+<text text-anchor="middle" x="350" y="-935" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="272,-928 428,-928 "/>
+<text text-anchor="middle" x="350" y="-916" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-909 428,-909 "/>
+<text text-anchor="start" x="280" y="-897" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="280" y="-886" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="280" y="-875" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-864" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node2 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M343.05,-845.67C336.67,-803.07 327.55,-736.8 323,-679 315.91,-588.9 313.74,-484.8 313.13,-416.87"/>
-<polygon fill="none" stroke="#404040" points="313.13,-416.61 309.08,-410.65 313.04,-404.61 317.08,-410.58 313.13,-416.61"/>
-<text text-anchor="middle" x="340.5" y="-587" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M343.04,-856.67C336.66,-814.07 327.54,-747.8 323,-690 315.77,-597.81 313.64,-491.21 313.08,-422.19"/>
+<polygon fill="none" stroke="#404040" points="313.08,-422.18 309.04,-416.21 312.99,-410.18 317.04,-416.15 313.08,-422.18"/>
+<text text-anchor="middle" x="340.5" y="-598" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</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="389,-1122.5 389,-1355.5 523,-1355.5 523,-1122.5 389,-1122.5"/>
-<text text-anchor="middle" x="456" y="-1343.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="389,-1336.5 523,-1336.5 "/>
-<text text-anchor="start" x="397" y="-1324.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="389,-1317.5 523,-1317.5 "/>
+<polygon fill="white" stroke="black" points="389,-1133.5 389,-1366.5 523,-1366.5 523,-1133.5 389,-1133.5"/>
+<text text-anchor="middle" x="456" y="-1354.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="389,-1347.5 523,-1347.5 "/>
+<text text-anchor="start" x="397" y="-1335.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="389,-1328.5 523,-1328.5 "/>
+<text text-anchor="start" x="397" y="-1316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="397" y="-1305.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="397" y="-1294.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="397" y="-1283.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="397" y="-1272.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="397" y="-1261.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="397" y="-1250.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="397" y="-1239.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="397" y="-1228.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="397" y="-1217.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="397" y="-1206.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="397" y="-1195.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="397" y="-1294.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="397" y="-1283.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="397" y="-1272.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="397" y="-1261.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="397" y="-1250.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="397" y="-1239.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="397" y="-1228.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="397" y="-1217.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="397" y="-1206.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="397" y="-1195.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="397" y="-1184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="397" y="-1173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="397" y="-1162.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="397" y="-1151.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="397" y="-1140.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="397" y="-1129.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="397" y="-1173.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="397" y="-1162.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="397" y="-1151.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="397" y="-1140.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="M417.55,-1112.49C398.67,-1050.86 377.11,-980.5 363.53,-936.17"/>
-<polygon fill="none" stroke="midnightblue" points="414.28,-1113.77 420.56,-1122.31 420.97,-1111.72 414.28,-1113.77"/>
+<path fill="none" stroke="midnightblue" d="M417.55,-1123.49C398.67,-1061.86 377.11,-991.5 363.53,-947.17"/>
+<polygon fill="none" stroke="midnightblue" points="414.28,-1124.77 420.56,-1133.31 420.97,-1122.72 414.28,-1124.77"/>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node">
 <title>Node7</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="367,-500.5 367,-678.5 495,-678.5 495,-500.5 367,-500.5"/>
-<text text-anchor="start" x="375" y="-666.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="431" y="-655.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::RelayExpr &gt;</text>
-<polyline fill="none" stroke="black" points="367,-648.5 495,-648.5 "/>
-<text text-anchor="start" x="375" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="367,-629.5 495,-629.5 "/>
+<polygon fill="white" stroke="black" points="367,-511.5 367,-689.5 495,-689.5 495,-511.5 367,-511.5"/>
+<text text-anchor="start" x="375" y="-677.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="431" y="-666.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::RelayExpr &gt;</text>
+<polyline fill="none" stroke="black" points="367,-659.5 495,-659.5 "/>
+<text text-anchor="start" x="375" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="367,-640.5 495,-640.5 "/>
+<text text-anchor="start" x="375" y="-628.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="375" y="-617.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="375" y="-606.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="375" y="-595.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
@@ -187,29 +188,29 @@
 <text text-anchor="start" x="375" y="-573.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="375" y="-562.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="375" y="-551.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="375" y="-540.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="375" y="-540.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="375" y="-529.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="375" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="375" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
+<text text-anchor="start" x="375" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</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="M452.34,-1112.3C448.97,-1002.63 443.5,-839.25 437,-697 436.73,-690.99 436.42,-684.79 436.11,-678.54"/>
-<polygon fill="none" stroke="midnightblue" points="448.84,-1112.52 452.65,-1122.41 455.84,-1112.31 448.84,-1112.52"/>
+<path fill="none" stroke="midnightblue" d="M452.34,-1123.3C448.97,-1013.63 443.5,-850.25 437,-708 436.73,-701.99 436.42,-695.79 436.11,-689.54"/>
+<polygon fill="none" stroke="midnightblue" points="448.84,-1123.52 452.65,-1133.41 455.84,-1123.31 448.84,-1123.52"/>
 </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="500,-500.5 500,-678.5 628,-678.5 628,-500.5 500,-500.5"/>
-<text text-anchor="start" x="508" y="-666.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="564" y="-655.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::VDevice &gt;</text>
-<polyline fill="none" stroke="black" points="500,-648.5 628,-648.5 "/>
-<text text-anchor="start" x="508" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="500,-629.5 628,-629.5 "/>
+<polygon fill="white" stroke="black" points="500,-511.5 500,-689.5 628,-689.5 628,-511.5 500,-511.5"/>
+<text text-anchor="start" x="508" y="-677.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="564" y="-666.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::VDevice &gt;</text>
+<polyline fill="none" stroke="black" points="500,-659.5 628,-659.5 "/>
+<text text-anchor="start" x="508" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="500,-640.5 628,-640.5 "/>
+<text text-anchor="start" x="508" y="-628.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="508" y="-617.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="508" y="-606.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="508" y="-595.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
@@ -217,77 +218,77 @@
 <text text-anchor="start" x="508" y="-573.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="508" y="-562.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="508" y="-551.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="508" y="-540.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="508" y="-540.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="508" y="-529.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="508" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="508" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
+<text text-anchor="start" x="508" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node9 -->
 <g id="edge11" class="edge">
 <title>Node5&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M477.01,-1112.03C498.27,-984.55 530.6,-790.74 549.28,-678.77"/>
-<polygon fill="none" stroke="midnightblue" points="473.5,-1111.8 475.31,-1122.24 480.41,-1112.95 473.5,-1111.8"/>
+<path fill="none" stroke="midnightblue" d="M477.01,-1123.03C498.27,-995.55 530.6,-801.74 549.28,-689.77"/>
+<polygon fill="none" stroke="midnightblue" points="473.5,-1122.8 475.31,-1133.24 480.41,-1123.95 473.5,-1122.8"/>
 </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="386,-1403.5 386,-1581.5 526,-1581.5 526,-1403.5 386,-1403.5"/>
-<text text-anchor="start" x="394" y="-1569.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="456" y="-1558.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="386,-1551.5 526,-1551.5 "/>
-<text text-anchor="middle" x="456" y="-1539.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="386,-1532.5 526,-1532.5 "/>
+<polygon fill="white" stroke="black" points="386,-1414.5 386,-1592.5 526,-1592.5 526,-1414.5 386,-1414.5"/>
+<text text-anchor="start" x="394" y="-1580.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="456" y="-1569.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="386,-1562.5 526,-1562.5 "/>
+<text text-anchor="middle" x="456" y="-1550.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="386,-1543.5 526,-1543.5 "/>
+<text text-anchor="start" x="394" y="-1531.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="394" y="-1520.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="394" y="-1509.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="394" y="-1498.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="394" y="-1487.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="394" y="-1476.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="394" y="-1465.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="394" y="-1454.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="394" y="-1443.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="394" y="-1432.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="394" y="-1421.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="394" y="-1410.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="394" y="-1465.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="394" y="-1454.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="394" y="-1443.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="394" y="-1432.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="394" y="-1421.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="M456,-1403.18C456,-1391.84 456,-1380.05 456,-1368.23"/>
-<polygon fill="none" stroke="#404040" points="456,-1367.91 452,-1361.91 456,-1355.91 460,-1361.91 456,-1367.91"/>
-<text text-anchor="middle" x="475.5" y="-1377" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M456,-1414.18C456,-1402.84 456,-1391.05 456,-1379.23"/>
+<polygon fill="none" stroke="#404040" points="456,-1378.91 452,-1372.91 456,-1366.91 460,-1372.91 456,-1378.91"/>
+<text text-anchor="middle" x="475.5" y="-1388" 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="M431.83,-500.39C433.4,-422.27 437.81,-305.19 450,-204 451.39,-192.44 453.23,-180.35 455.28,-168.44"/>
-<polygon fill="none" stroke="#404040" points="455.28,-168.42 452.39,-161.81 457.38,-156.6 460.27,-163.21 455.28,-168.42"/>
-<text text-anchor="middle" x="470.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +shape</text>
+<path fill="none" stroke="#404040" d="M431.65,-511.23C433.09,-430.88 437.41,-309.11 450,-204 451.38,-192.44 453.22,-180.35 455.26,-168.43"/>
+<polygon fill="none" stroke="#404040" points="455.27,-168.42 452.38,-161.81 457.37,-156.6 460.25,-163.21 455.27,-168.42"/>
+<text text-anchor="middle" x="470.5" y="-346" font-family="Helvetica,sans-Serif" font-size="10.00"> +shape</text>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="581,-204.5 581,-481.5 713,-481.5 713,-204.5 581,-204.5"/>
-<text text-anchor="middle" x="647" y="-469.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="581,-462.5 713,-462.5 "/>
-<text text-anchor="middle" x="647" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="581,-443.5 713,-443.5 "/>
+<polygon fill="white" stroke="black" points="581,-204.5 581,-492.5 713,-492.5 713,-204.5 581,-204.5"/>
+<text text-anchor="middle" x="647" y="-480.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="581,-473.5 713,-473.5 "/>
+<text text-anchor="middle" x="647" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="581,-454.5 713,-454.5 "/>
+<text text-anchor="start" x="589" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="589" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="589" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="589" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="589" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="589" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="589" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="589" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="589" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="589" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="589" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="589" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="589" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="589" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="589" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="589" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="589" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="589" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="589" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="589" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="589" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="589" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="589" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="589" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -304,16 +305,16 @@
 <!-- Node8&#45;&gt;Node1 -->
 <g id="edge9" class="edge">
 <title>Node8&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M580.97,-225.82C576.33,-218.38 571.65,-211.05 567,-204 558.85,-191.65 549.92,-178.88 540.93,-166.44"/>
-<polygon fill="none" stroke="#404040" points="540.78,-166.24 534.01,-163.74 533.71,-156.54 540.48,-159.03 540.78,-166.24"/>
+<path fill="none" stroke="#404040" d="M580.92,-226.24C576.32,-218.65 571.65,-211.18 567,-204 559.01,-191.67 550.21,-178.96 541.31,-166.58"/>
+<polygon fill="none" stroke="#404040" points="541.22,-166.45 534.45,-163.94 534.17,-156.74 540.93,-159.24 541.22,-166.45"/>
 <text text-anchor="middle" x="573" y="-178" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 <!-- Node9&#45;&gt;Node1 -->
 <g id="edge10" class="edge">
 <title>Node9&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M527.23,-500.46C525.28,-494.27 523.51,-488.08 522,-482 492.04,-361.34 506.3,-327.38 491,-204 489.59,-192.59 488.03,-180.61 486.46,-168.76"/>
-<polygon fill="none" stroke="#404040" points="486.41,-168.39 481.65,-162.98 484.82,-156.5 489.58,-161.92 486.41,-168.39"/>
-<text text-anchor="middle" x="547" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +vdevice</text>
+<path fill="none" stroke="#404040" d="M527.2,-511.47C525.26,-505.28 523.5,-499.08 522,-493 491.14,-367.56 506.63,-332.23 491,-204 489.62,-192.67 488.09,-180.77 486.54,-169.01"/>
+<polygon fill="none" stroke="#404040" points="486.5,-168.72 481.74,-163.3 484.91,-156.83 489.67,-162.24 486.5,-168.72"/>
+<text text-anchor="middle" x="547" y="-346" font-family="Helvetica,sans-Serif" font-size="10.00"> +vdevice</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relay_1_1DataTypePatternNode.html b/docs/reference/api/doxygen/classtvm_1_1relay_1_1DataTypePatternNode.html
index e43826da9d..e5b86bbf36 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relay_1_1DataTypePatternNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relay_1_1DataTypePatternNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::relay::DataTypePatternNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relay::DataTypePatternNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relay_1_1DataTypePatternNode__coll__graph.svg" width="756" height="1419"><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_1DataTypePatternNode__coll__graph.svg" width="756" height="1434"><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_1DataTypePatternNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relay_1_1DataTypePatternNode__coll__graph.svg
index dd4e239d86..a84adfbe91 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relay_1_1DataTypePatternNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relay_1_1DataTypePatternNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relay::DataTypePatternNode Pages: 1 -->
-<svg width="567pt" height="1064pt"
- viewBox="0.00 0.00 567.00 1064.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 1060)">
+<svg width="567pt" height="1075pt"
+ viewBox="0.00 0.00 567.00 1075.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 1071)">
 <title>tvm::relay::DataTypePatternNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1060 563,-1060 563,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1071 563,-1071 563,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -28,197 +28,198 @@
 <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="53.5,-232 53.5,-300 226.5,-300 226.5,-232 53.5,-232"/>
-<text text-anchor="middle" x="140" y="-288" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::DFPatternNode</text>
-<polyline fill="none" stroke="black" points="53.5,-281 226.5,-281 "/>
-<text text-anchor="start" x="61.5" y="-269" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<polyline fill="none" stroke="black" points="53.5,-262 226.5,-262 "/>
-<text text-anchor="start" x="61.5" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="61.5" y="-239" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="53.5,-237.5 53.5,-305.5 226.5,-305.5 226.5,-237.5 53.5,-237.5"/>
+<text text-anchor="middle" x="140" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::DFPatternNode</text>
+<polyline fill="none" stroke="black" points="53.5,-286.5 226.5,-286.5 "/>
+<text text-anchor="start" x="61.5" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<polyline fill="none" stroke="black" points="53.5,-267.5 226.5,-267.5 "/>
+<text text-anchor="start" x="61.5" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="61.5" y="-244.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="M168.86,-223.5C188.94,-195.45 216.89,-158.01 244,-127 258.12,-110.85 274.64,-94.06 289.47,-79.64"/>
-<polygon fill="none" stroke="midnightblue" points="165.83,-221.72 162.89,-231.89 171.54,-225.78 165.83,-221.72"/>
+<path fill="none" stroke="midnightblue" d="M167.36,-229.05C187.41,-199.64 215.92,-159.73 244,-127 257.97,-110.72 274.46,-93.9 289.3,-79.5"/>
+<polygon fill="none" stroke="midnightblue" points="164.39,-227.19 161.68,-237.44 170.19,-231.12 164.39,-227.19"/>
 </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,-442.5 0,-829.5 184,-829.5 184,-442.5 0,-442.5"/>
-<text text-anchor="middle" x="92" y="-817.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-810.5 184,-810.5 "/>
-<text text-anchor="start" x="8" y="-798.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-787.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-776.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-765.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-754.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-743.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-732.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-721.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-710.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-699.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-688.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-677.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-666.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-655.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-648.5 184,-648.5 "/>
-<text text-anchor="start" x="8" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-453.5 0,-840.5 184,-840.5 184,-453.5 0,-453.5"/>
+<text text-anchor="middle" x="92" y="-828.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-821.5 184,-821.5 "/>
+<text text-anchor="start" x="8" y="-809.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-798.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-787.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-776.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-765.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-754.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-743.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-732.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-721.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-710.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-699.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-688.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-677.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-666.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-659.5 184,-659.5 "/>
+<text text-anchor="start" x="8" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-570.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-559.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-559.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-460.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="M118.42,-432.41C125.13,-380.97 131.59,-331.49 135.66,-300.27"/>
-<polygon fill="none" stroke="midnightblue" points="114.95,-432.01 117.12,-442.38 121.89,-432.91 114.95,-432.01"/>
+<path fill="none" stroke="midnightblue" d="M118.06,-443.21C124.95,-389.63 131.61,-337.82 135.75,-305.6"/>
+<polygon fill="none" stroke="midnightblue" points="114.58,-442.87 116.77,-453.23 121.52,-443.76 114.58,-442.87"/>
 </g>
 <!-- Node3&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M184.28,-669.92C195.02,-663.66 202,-652.36 202,-636 202,-625.01 198.85,-616.3 193.52,-609.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-609.81 186.29,-609 184.28,-602.08 191.45,-602.89 193.46,-609.81"/>
-<text text-anchor="middle" x="228" y="-633.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-680.92C195.02,-674.66 202,-663.36 202,-647 202,-636.01 198.85,-627.3 193.52,-620.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-620.81 186.29,-620 184.28,-613.08 191.45,-613.89 193.46,-620.81"/>
+<text text-anchor="middle" x="228" y="-644.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="253,-166 253,-366 409,-366 409,-166 253,-166"/>
-<text text-anchor="middle" x="331" y="-354" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::DFPattern</text>
-<polyline fill="none" stroke="black" points="253,-347 409,-347 "/>
-<text text-anchor="middle" x="331" y="-335" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="253,-328 409,-328 "/>
-<text text-anchor="start" x="261" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator()()</text>
-<text text-anchor="start" x="261" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator+()</text>
-<text text-anchor="start" x="261" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;()</text>
-<text text-anchor="start" x="261" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator*()</text>
-<text text-anchor="start" x="261" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator/()</text>
-<text text-anchor="start" x="261" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator||()</text>
-<text text-anchor="start" x="261" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="261" y="-239" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasAttr()</text>
-<text text-anchor="start" x="261" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasType()</text>
-<text text-anchor="start" x="261" y="-217" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
-<text text-anchor="start" x="261" y="-206" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
-<text text-anchor="start" x="261" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasShape()</text>
-<text text-anchor="start" x="261" y="-184" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="261" y="-173" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="253,-171.5 253,-371.5 409,-371.5 409,-171.5 253,-171.5"/>
+<text text-anchor="middle" x="331" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::DFPattern</text>
+<polyline fill="none" stroke="black" points="253,-352.5 409,-352.5 "/>
+<text text-anchor="middle" x="331" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="253,-333.5 409,-333.5 "/>
+<text text-anchor="start" x="261" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator()()</text>
+<text text-anchor="start" x="261" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator+()</text>
+<text text-anchor="start" x="261" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;()</text>
+<text text-anchor="start" x="261" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator*()</text>
+<text text-anchor="start" x="261" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator/()</text>
+<text text-anchor="start" x="261" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator||()</text>
+<text text-anchor="start" x="261" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="261" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasAttr()</text>
+<text text-anchor="start" x="261" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasType()</text>
+<text text-anchor="start" x="261" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
+<text text-anchor="start" x="261" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
+<text text-anchor="start" x="261" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasShape()</text>
+<text text-anchor="start" x="261" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="261" y="-178.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="M331,-165.77C331,-140.12 331,-113.56 331,-91.58"/>
-<polygon fill="none" stroke="#404040" points="331,-91.54 327,-85.54 331,-79.54 335,-85.54 331,-91.54"/>
+<path fill="none" stroke="#404040" d="M331,-171.17C331,-143.76 331,-115.14 331,-91.75"/>
+<polygon fill="none" stroke="#404040" points="331,-91.68 327,-85.68 331,-79.68 335,-85.68 331,-91.68"/>
 <text text-anchor="middle" x="354.5" y="-101" 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="272,-519.5 272,-752.5 406,-752.5 406,-519.5 272,-519.5"/>
-<text text-anchor="middle" x="339" y="-740.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="272,-733.5 406,-733.5 "/>
-<text text-anchor="start" x="280" y="-721.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="272,-714.5 406,-714.5 "/>
+<polygon fill="white" stroke="black" points="272,-530.5 272,-763.5 406,-763.5 406,-530.5 272,-530.5"/>
+<text text-anchor="middle" x="339" y="-751.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="272,-744.5 406,-744.5 "/>
+<text text-anchor="start" x="280" y="-732.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="272,-725.5 406,-725.5 "/>
+<text text-anchor="start" x="280" y="-713.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="280" y="-702.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="280" y="-691.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="280" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="280" y="-669.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="280" y="-658.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="280" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="280" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="280" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="280" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="280" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="280" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="280" y="-691.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="280" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="280" y="-669.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="280" y="-658.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="280" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="280" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="280" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="280" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="280" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="280" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="280" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="280" y="-570.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="280" y="-559.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="280" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="280" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="280" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="280" y="-570.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="280" y="-559.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="280" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="280" y="-537.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="M336.26,-509.13C335.25,-462.39 334.11,-410.08 333.15,-366.07"/>
-<polygon fill="none" stroke="midnightblue" points="332.77,-509.4 336.49,-519.32 339.77,-509.25 332.77,-509.4"/>
+<path fill="none" stroke="midnightblue" d="M336.3,-520.14C335.27,-471.68 334.1,-417.09 333.12,-371.52"/>
+<polygon fill="none" stroke="midnightblue" points="332.81,-520.46 336.52,-530.38 339.81,-520.31 332.81,-520.46"/>
 </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="269,-877.5 269,-1055.5 409,-1055.5 409,-877.5 269,-877.5"/>
-<text text-anchor="start" x="277" y="-1043.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="339" y="-1032.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="269,-1025.5 409,-1025.5 "/>
-<text text-anchor="middle" x="339" y="-1013.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="269,-1006.5 409,-1006.5 "/>
+<polygon fill="white" stroke="black" points="269,-888.5 269,-1066.5 409,-1066.5 409,-888.5 269,-888.5"/>
+<text text-anchor="start" x="277" y="-1054.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="339" y="-1043.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="269,-1036.5 409,-1036.5 "/>
+<text text-anchor="middle" x="339" y="-1024.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="269,-1017.5 409,-1017.5 "/>
+<text text-anchor="start" x="277" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-994.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="277" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="277" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="277" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="277" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="277" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="277" y="-895.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="277" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="277" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="277" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="277" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="277" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="277" y="-895.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="M339,-877.47C339,-842.91 339,-802.57 339,-764.92"/>
-<polygon fill="none" stroke="#404040" points="339,-764.8 335,-758.8 339,-752.8 343,-758.8 339,-764.8"/>
-<text text-anchor="middle" x="358.5" y="-851" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M339,-888.47C339,-853.91 339,-813.57 339,-775.92"/>
+<polygon fill="none" stroke="#404040" points="339,-775.8 335,-769.8 339,-763.8 343,-769.8 339,-775.8"/>
+<text text-anchor="middle" x="358.5" y="-862" 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_1runtime_1_1DataType.html" target="_top" xlink:title="Runtime primitive data type.">
-<polygon fill="white" stroke="black" points="427,-127.5 427,-404.5 559,-404.5 559,-127.5 427,-127.5"/>
-<text text-anchor="middle" x="493" y="-392.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
-<polyline fill="none" stroke="black" points="427,-385.5 559,-385.5 "/>
-<text text-anchor="middle" x="493" y="-373.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="427,-366.5 559,-366.5 "/>
+<polygon fill="white" stroke="black" points="427,-127.5 427,-415.5 559,-415.5 559,-127.5 427,-127.5"/>
+<text text-anchor="middle" x="493" y="-403.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DataType</text>
+<polyline fill="none" stroke="black" points="427,-396.5 559,-396.5 "/>
+<text text-anchor="middle" x="493" y="-384.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="427,-377.5 559,-377.5 "/>
+<text text-anchor="start" x="435" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="435" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
 <text text-anchor="start" x="435" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="435" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataType()</text>
-<text text-anchor="start" x="435" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
-<text text-anchor="start" x="435" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
-<text text-anchor="start" x="435" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
-<text text-anchor="start" x="435" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
-<text text-anchor="start" x="435" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
-<text text-anchor="start" x="435" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
-<text text-anchor="start" x="435" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_bool()</text>
-<text text-anchor="start" x="435" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
+<text text-anchor="start" x="435" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ code()</text>
+<text text-anchor="start" x="435" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bits()</text>
+<text text-anchor="start" x="435" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ bytes()</text>
+<text text-anchor="start" x="435" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lanes()</text>
+<text text-anchor="start" x="435" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vscale_factor()</text>
+<text text-anchor="start" x="435" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get_lanes_or_vscale</text>
+<text text-anchor="start" x="435" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">_factor()</text>
+<text text-anchor="start" x="435" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_scalar()</text>
+<text text-anchor="start" x="435" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 21 more...</text>
 <text text-anchor="start" x="435" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Int()</text>
 <text text-anchor="start" x="435" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ UInt()</text>
 <text text-anchor="start" x="435" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Float()</text>
@@ -235,8 +236,8 @@
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M426.94,-139.47C424.02,-135.2 421.03,-131.03 418,-127 407.94,-113.61 395.82,-100.31 383.87,-88.31"/>
-<polygon fill="none" stroke="#404040" points="383.79,-88.23 376.7,-86.88 375.22,-79.83 382.31,-81.18 383.79,-88.23"/>
+<path fill="none" stroke="#404040" d="M426.86,-139.58C423.96,-135.28 421.01,-131.07 418,-127 408.05,-113.53 395.97,-100.2 384.02,-88.2"/>
+<polygon fill="none" stroke="#404040" points="383.94,-88.12 376.86,-86.77 375.38,-79.71 382.46,-81.06 383.94,-88.12"/>
 <text text-anchor="middle" x="423" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00"> +dtype</text>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1runtime_1_1DataType-members.html b/docs/reference/api/doxygen/classtvm_1_1runtime_1_1DataType-members.html
index 8b37780000..29e5566c62 100644
--- a/docs/reference/api/doxygen/classtvm_1_1runtime_1_1DataType-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1runtime_1_1DataType-members.html
@@ -74,7 +74,7 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ab3cdf19d47ac42c52194edcb2da9622c">BFloat</a>(int bits, int lanes=1)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#acb927f3f6ae5116e8f439159fafbc04e">bits</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a43941f847c40049ef292dc2873483e0d">Bool</a>(int lanes=1)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a847b0dfac51f051678f4df417b2b54ab">Bool</a>(int lanes=1, bool is_scalable=false)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c195fd818d2eb645f9aa0ab826ba09c">bytes</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a71feb294f412836c3d7e012133a3f339">code</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a6db427a47b8d503b10cd2aee6a39d3a9">DataType</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -82,45 +82,46 @@ $(function() {
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a7c8b2990aabb75e5668e59f43f59e3b7">DataType</a>(int code, int bits, int lanes, bool is_scalable=false)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a2fe08e37ac1a1c09b10251313582990d">element_of</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a237a714a6a16e14aa01fa4ac52426551">Float</a>(int bits, int lanes=1)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#aebad9f7235dd20af649fb5c2113797b8">Handle</a>(int bits=64, int lanes=1)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ab45f13dd70d982d9f977c79b6f7fac98">Int</a>(int bits, int lanes=1)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#acfe8fe9c3873fdec74c9a7b03161766f">is_bfloat16</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a4c97717c5e85a305b9cded0dc4fb5d97">is_bool</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#aa8d27a9667acd6089c7b91abe288f0fa">is_fixed_length_vector</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#afe559720046f6e10d188f5df80d4a0fc">is_float</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a83095169a6537b1ccd3098e3aab86530">is_float16</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ace6c372fb51a9a6aca9d19e211f0994f">is_float8</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a052732be4d88e9d67dc2cbe83ba6a310">is_handle</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a4f3c849cf79c0812a50fdbb9ad175648">is_int</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a715b2503496a41c66892a45bb9128f5f">is_scalable_or_fixed_length_vector</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a31432153cb9052aaf76e9aaf1f4dffdb">is_scalable_vector</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#ac77666e79fb85e816c78a5fb47e41865">is_scalar</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a0de5803abe309ca66c23adb15c565afb">is_uint</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#ae6d224687a4a655ae387d55f72430c8f">is_vector_bool</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#af630b65babe38dc86eaee56f29c5429e">is_void</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da49fcc75a28c5a539665c55001897f286">kBFloat</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da92916e0b7138b26e222f4b85618bd5b4">kCustomBegin</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da6ea7f4408e5a06d2e1bc3757a3c2bd0f">kE4M3Float</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7daaaeeb523a1904d272c9e28ae00cc50e3">kE5M2Float</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da6622631a910a54272097f7f4b6373e9d">kFloat</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da2a59b355bef5ebc40bd78833666197cb">kHandle</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7daba80c33310f753ce7578ba71f8b19450">kInt</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da2c35d4ea9e95ede0b5a1909a87cbc9f2">kUInt</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a7a67295643b82bbe37cf36e6f69e8323">lanes</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3e9a5d2ccb035e181a75d7b3cde9bb72">NVFloat8E4M3</a>(int lanes=1)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a697e883986ad3084581dd42c9bbf693a">NVFloat8E5M2</a>(int lanes=1)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a0fc533410505b4d0ecc7ceaa731a5ad2">operator DLDataType</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a6d6ab7decc5088571f58fd7ab48006ac">operator!=</a>(const DataType &amp;other) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3453c3a99d0bb6fcebf5a3629c8d37bb">operator=</a>(const DataType &amp;rhs)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a806810d87352f5c2bac1ad4e8d086a01">operator==</a>(const DataType &amp;other) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a04f0e069017af3f0da47bc0c1fd80916">ShapeIndex</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7d">TypeCode</a> enum name</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ad1cf4571ee1a22c188c66ee2e6e6c042">UInt</a>(int bits, int lanes=1)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ab8dc0832aff8fd7421884c0fe20a3bfd">Void</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a9d44c87d51b6e01d3f86d50926c1e254">vscale_factor</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a5c4bad19b3ffd663af52bd0b91003af4">with_bits</a>(int bits) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a98623590042dd19a08958f2469369552">with_lanes</a>(int lanes) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#aa82fecd3831818a97f48967988c0c506">with_scalable_vscale_factor</a>(int vscale_factor) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#ae450c104dd0e201784c8cfc3482f6046">get_lanes_or_vscale_factor</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#aebad9f7235dd20af649fb5c2113797b8">Handle</a>(int bits=64, int lanes=1)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ab45f13dd70d982d9f977c79b6f7fac98">Int</a>(int bits, int lanes=1)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#acfe8fe9c3873fdec74c9a7b03161766f">is_bfloat16</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a4c97717c5e85a305b9cded0dc4fb5d97">is_bool</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#aa8d27a9667acd6089c7b91abe288f0fa">is_fixed_length_vector</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#afe559720046f6e10d188f5df80d4a0fc">is_float</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a83095169a6537b1ccd3098e3aab86530">is_float16</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#ace6c372fb51a9a6aca9d19e211f0994f">is_float8</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a052732be4d88e9d67dc2cbe83ba6a310">is_handle</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a4f3c849cf79c0812a50fdbb9ad175648">is_int</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a715b2503496a41c66892a45bb9128f5f">is_scalable_or_fixed_length_vector</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a31432153cb9052aaf76e9aaf1f4dffdb">is_scalable_vector</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ac77666e79fb85e816c78a5fb47e41865">is_scalar</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a0de5803abe309ca66c23adb15c565afb">is_uint</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ae6d224687a4a655ae387d55f72430c8f">is_vector_bool</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#af630b65babe38dc86eaee56f29c5429e">is_void</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da49fcc75a28c5a539665c55001897f286">kBFloat</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da92916e0b7138b26e222f4b85618bd5b4">kCustomBegin</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da6ea7f4408e5a06d2e1bc3757a3c2bd0f">kE4M3Float</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7daaaeeb523a1904d272c9e28ae00cc50e3">kE5M2Float</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da6622631a910a54272097f7f4b6373e9d">kFloat</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da2a59b355bef5ebc40bd78833666197cb">kHandle</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7daba80c33310f753ce7578ba71f8b19450">kInt</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da2c35d4ea9e95ede0b5a1909a87cbc9f2">kUInt</a> enum value</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a7a67295643b82bbe37cf36e6f69e8323">lanes</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a3e9a5d2ccb035e181a75d7b3cde9bb72">NVFloat8E4M3</a>(int lanes=1)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a697e883986ad3084581dd42c9bbf693a">NVFloat8E5M2</a>(int lanes=1)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a0fc533410505b4d0ecc7ceaa731a5ad2">operator DLDataType</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a6d6ab7decc5088571f58fd7ab48006ac">operator!=</a>(const DataType &amp;other) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a3453c3a99d0bb6fcebf5a3629c8d37bb">operator=</a>(const DataType &amp;rhs)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a806810d87352f5c2bac1ad4e8d086a01">operator==</a>(const DataType &amp;other) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a04f0e069017af3f0da47bc0c1fd80916">ShapeIndex</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7d">TypeCode</a> enum name</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#aef2fa30c095f37b20a301665bed80826">UInt</a>(int bits, int lanes=1, bool is_scalable=false)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ab8dc0832aff8fd7421884c0fe20a3bfd">Void</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a9d44c87d51b6e01d3f86d50926c1e254">vscale_factor</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a5c4bad19b3ffd663af52bd0b91003af4">with_bits</a>(int bits) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</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_1DataType.html#a98623590042dd19a08958f2469369552">with_lanes</a>(int lanes) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#aa82fecd3831818a97f48967988c0c506">with_scalable_vscale_factor</a>(int vscale_factor) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1runtime_1_1DataType.html b/docs/reference/api/doxygen/classtvm_1_1runtime_1_1DataType.html
index bdc57ff51f..427a939a07 100644
--- a/docs/reference/api/doxygen/classtvm_1_1runtime_1_1DataType.html
+++ b/docs/reference/api/doxygen/classtvm_1_1runtime_1_1DataType.html
@@ -82,7 +82,7 @@ $(function() {
 <div class="dynheader">
 Collaboration diagram for tvm::runtime::DataType:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1runtime_1_1DataType__coll__graph.svg" width="187" height="382"><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_1runtime_1_1DataType__coll__graph.svg" width="187" height="396"><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">
@@ -124,6 +124,8 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a7a67295643b82bbe37cf36e6f69e8323"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9d44c87d51b6e01d3f86d50926c1e254"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a9d44c87d51b6e01d3f86d50926c1e254">vscale_factor</a> () const</td></tr>
 <tr class="separator:a9d44c87d51b6e01d3f86d50926c1e254"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae450c104dd0e201784c8cfc3482f6046"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ae450c104dd0e201784c8cfc3482f6046">get_lanes_or_vscale_factor</a> ()</td></tr>
+<tr class="separator:ae450c104dd0e201784c8cfc3482f6046"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac77666e79fb85e816c78a5fb47e41865"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ac77666e79fb85e816c78a5fb47e41865">is_scalar</a> () const</td></tr>
 <tr class="separator:ac77666e79fb85e816c78a5fb47e41865"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4c97717c5e85a305b9cded0dc4fb5d97"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a4c97717c5e85a305b9cded0dc4fb5d97">is_bool</a> () const</td></tr>
@@ -182,9 +184,9 @@ Static Public Member Functions</h2></td></tr>
 <tr class="memitem:ab45f13dd70d982d9f977c79b6f7fac98"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtvm_1_1runtime_1_1DataType.html">DataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ab45f13dd70d982d9f977c79b6f7fac98">Int</a> (int <a class="el" href="classtvm_1_1runtime_1_1DataType.html#acb927f3f6ae5116e8f439159fafbc04e">bits</a>, int <a class="el" href="classtvm_1_1runtime_1_1Data [...]
 <tr class="memdesc:ab45f13dd70d982d9f977c79b6f7fac98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct an int type.  <a href="classtvm_1_1runtime_1_1DataType.html#ab45f13dd70d982d9f977c79b6f7fac98">More...</a><br /></td></tr>
 <tr class="separator:ab45f13dd70d982d9f977c79b6f7fac98"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad1cf4571ee1a22c188c66ee2e6e6c042"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtvm_1_1runtime_1_1DataType.html">DataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#ad1cf4571ee1a22c188c66ee2e6e6c042">UInt</a> (int <a class="el" href="classtvm_1_1runtime_1_1DataType.html#acb927f3f6ae5116e8f439159fafbc04e">bits</a>, int <a class="el" href="classtvm_1_1runtime_1_1Dat [...]
-<tr class="memdesc:ad1cf4571ee1a22c188c66ee2e6e6c042"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct an uint type.  <a href="classtvm_1_1runtime_1_1DataType.html#ad1cf4571ee1a22c188c66ee2e6e6c042">More...</a><br /></td></tr>
-<tr class="separator:ad1cf4571ee1a22c188c66ee2e6e6c042"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aef2fa30c095f37b20a301665bed80826"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtvm_1_1runtime_1_1DataType.html">DataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#aef2fa30c095f37b20a301665bed80826">UInt</a> (int <a class="el" href="classtvm_1_1runtime_1_1DataType.html#acb927f3f6ae5116e8f439159fafbc04e">bits</a>, int <a class="el" href="classtvm_1_1runtime_1_1Dat [...]
+<tr class="memdesc:aef2fa30c095f37b20a301665bed80826"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct an uint type.  <a href="classtvm_1_1runtime_1_1DataType.html#aef2fa30c095f37b20a301665bed80826">More...</a><br /></td></tr>
+<tr class="separator:aef2fa30c095f37b20a301665bed80826"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a237a714a6a16e14aa01fa4ac52426551"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtvm_1_1runtime_1_1DataType.html">DataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a237a714a6a16e14aa01fa4ac52426551">Float</a> (int <a class="el" href="classtvm_1_1runtime_1_1DataType.html#acb927f3f6ae5116e8f439159fafbc04e">bits</a>, int <a class="el" href="classtvm_1_1runtime_1_1Da [...]
 <tr class="memdesc:a237a714a6a16e14aa01fa4ac52426551"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct an float type.  <a href="classtvm_1_1runtime_1_1DataType.html#a237a714a6a16e14aa01fa4ac52426551">More...</a><br /></td></tr>
 <tr class="separator:a237a714a6a16e14aa01fa4ac52426551"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -197,9 +199,9 @@ Static Public Member Functions</h2></td></tr>
 <tr class="memitem:a697e883986ad3084581dd42c9bbf693a"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtvm_1_1runtime_1_1DataType.html">DataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a697e883986ad3084581dd42c9bbf693a">NVFloat8E5M2</a> (int <a class="el" href="classtvm_1_1runtime_1_1DataType.html#a7a67295643b82bbe37cf36e6f69e8323">lanes</a>=1)</td></tr>
 <tr class="memdesc:a697e883986ad3084581dd42c9bbf693a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct NV float8 e5m2 datatype.  <a href="classtvm_1_1runtime_1_1DataType.html#a697e883986ad3084581dd42c9bbf693a">More...</a><br /></td></tr>
 <tr class="separator:a697e883986ad3084581dd42c9bbf693a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a43941f847c40049ef292dc2873483e0d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtvm_1_1runtime_1_1DataType.html">DataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a43941f847c40049ef292dc2873483e0d">Bool</a> (int <a class="el" href="classtvm_1_1runtime_1_1DataType.html#a7a67295643b82bbe37cf36e6f69e8323">lanes</a>=1)</td></tr>
-<tr class="memdesc:a43941f847c40049ef292dc2873483e0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a bool type.  <a href="classtvm_1_1runtime_1_1DataType.html#a43941f847c40049ef292dc2873483e0d">More...</a><br /></td></tr>
-<tr class="separator:a43941f847c40049ef292dc2873483e0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a847b0dfac51f051678f4df417b2b54ab"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtvm_1_1runtime_1_1DataType.html">DataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#a847b0dfac51f051678f4df417b2b54ab">Bool</a> (int <a class="el" href="classtvm_1_1runtime_1_1DataType.html#a7a67295643b82bbe37cf36e6f69e8323">lanes</a>=1, bool is_scalable=false)</td></tr>
+<tr class="memdesc:a847b0dfac51f051678f4df417b2b54ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a bool type.  <a href="classtvm_1_1runtime_1_1DataType.html#a847b0dfac51f051678f4df417b2b54ab">More...</a><br /></td></tr>
+<tr class="separator:a847b0dfac51f051678f4df417b2b54ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aebad9f7235dd20af649fb5c2113797b8"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtvm_1_1runtime_1_1DataType.html">DataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1DataType.html#aebad9f7235dd20af649fb5c2113797b8">Handle</a> (int <a class="el" href="classtvm_1_1runtime_1_1DataType.html#acb927f3f6ae5116e8f439159fafbc04e">bits</a>=64, int <a class="el" href="classtvm_1_1runtime_1 [...]
 <tr class="memdesc:aebad9f7235dd20af649fb5c2113797b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a handle type.  <a href="classtvm_1_1runtime_1_1DataType.html#aebad9f7235dd20af649fb5c2113797b8">More...</a><br /></td></tr>
 <tr class="separator:aebad9f7235dd20af649fb5c2113797b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -435,8 +437,8 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a id="a43941f847c40049ef292dc2873483e0d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a43941f847c40049ef292dc2873483e0d">&#9670;&nbsp;</a></span>Bool()</h2>
+<a id="a847b0dfac51f051678f4df417b2b54ab"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a847b0dfac51f051678f4df417b2b54ab">&#9670;&nbsp;</a></span>Bool()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -448,8 +450,18 @@ Static Public Member Functions</h2></td></tr>
           <td class="memname">static <a class="el" href="classtvm_1_1runtime_1_1DataType.html">DataType</a> tvm::runtime::DataType::Bool </td>
           <td>(</td>
           <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>lanes</em> = <code>1</code></td><td>)</td>
+          <td class="paramname"><em>lanes</em> = <code>1</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>is_scalable</em> = <code>false</code>&#160;</td>
+        </tr>
+        <tr>
           <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
   </td>
@@ -462,7 +474,8 @@ Static Public Member Functions</h2></td></tr>
 <p>Construct a bool type. </p>
 <dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
-    <tr><td class="paramname">lanes</td><td>The number of lanes </td></tr>
+    <tr><td class="paramname">lanes</td><td>The number of lanes. </td></tr>
+    <tr><td class="paramname">is_scalable</td><td>Whether the data type is scalable. </td></tr>
   </table>
   </dd>
 </dl>
@@ -594,6 +607,32 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>The constructed data type. </dd></dl>
 
+</div>
+</div>
+<a id="ae450c104dd0e201784c8cfc3482f6046"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae450c104dd0e201784c8cfc3482f6046">&#9670;&nbsp;</a></span>get_lanes_or_vscale_factor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int tvm::runtime::DataType::get_lanes_or_vscale_factor </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>get vscale factor or lanes depending on scalability of the vector. </dd></dl>
+
 </div>
 </div>
 <a id="aebad9f7235dd20af649fb5c2113797b8"></a>
@@ -1302,8 +1341,8 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a id="ad1cf4571ee1a22c188c66ee2e6e6c042"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ad1cf4571ee1a22c188c66ee2e6e6c042">&#9670;&nbsp;</a></span>UInt()</h2>
+<a id="aef2fa30c095f37b20a301665bed80826"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aef2fa30c095f37b20a301665bed80826">&#9670;&nbsp;</a></span>UInt()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -1321,7 +1360,13 @@ Static Public Member Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>lanes</em> = <code>1</code>&#160;</td>
+          <td class="paramname"><em>lanes</em> = <code>1</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
... 66459 lines suppressed ...