You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by lm...@apache.org on 2021/06/10 09:15:04 UTC

[tvm-site] branch asf-site updated: Docs build at Thu Jun 10 02:13:37 PDT 2021

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

lmzheng 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 079bb3a  Docs build at Thu Jun 10 02:13:37 PDT 2021
079bb3a is described below

commit 079bb3a9f910c6b4365b1cf13f67909996beb83c
Author: Lianmin Zheng <li...@gmail.com>
AuthorDate: Thu Jun 10 02:13:39 2021 -0700

    Docs build at Thu Jun 10 02:13:37 PDT 2021
---
 .../tvmc_command_line_driver.py                    |    2 +-
 .../autotvm_matmul_x86.ipynb}                      |    4 +-
 .../tune_conv2d_cuda.ipynb                         |    2 +-
 .../tune_conv2d_cuda.py                            |    2 +-
 .../tensor_expr_get_started.py                     |   33 +-
 .../4c010cd30d80efae3f2dfe5743a098a5/install.ipynb |    2 +-
 .../tensor_expr_get_started.ipynb                  |   12 +-
 .../autotvm_relay_x86.ipynb}                       |    4 +-
 .../95f64205f29091c5f31071f9072f3236/install.py    |    4 +-
 .../introduction.py                                |   94 +-
 .../tune_network_arm.ipynb                         |    2 +-
 .../tune_relay_arm.py                              |    6 +-
 .../deploy_classification.ipynb                    |    2 +-
 .../auto_scheduler_matmul_x86.py}                  |    2 +-
 .../tvmc_command_line_driver.ipynb                 |    2 +-
 .../introduction.ipynb                             |    4 +-
 .../autotvm_relay_x86.py}                          |    5 +-
 .../deploy_classification.py                       |    2 +-
 .../auto_scheduler_matmul_x86.ipynb}               |    2 +-
 .../tune_relay_arm.ipynb                           |    2 +-
 .../autotvm_matmul_x86.py}                         |   17 +-
 .../tune_network_arm.py                            |    2 +-
 ...> sphx_glr_auto_scheduler_matmul_x86_thumb.png} |  Bin
 ...b.png => sphx_glr_autotvm_matmul_x86_thumb.png} |  Bin
 ...mb.png => sphx_glr_autotvm_relay_x86_thumb.png} |  Bin
 docs/_sources/api/python/graph_executor.rst.txt    |    2 +-
 docs/_sources/deploy/bnns.rst.txt                  |    3 +-
 .../dev/device_target_interactions.rst.txt         |    2 +-
 docs/_sources/dev/index.rst.txt                    |   12 +-
 docs/_sources/index.rst.txt                        |    4 +-
 .../auto_scheduler/sg_execution_times.rst.txt      |   16 +-
 .../auto_scheduler/tune_conv2d_layer_cuda.rst.txt  |  895 +++-
 .../auto_scheduler/tune_network_arm.rst.txt        |    2 +-
 .../auto_scheduler/tune_network_cuda.rst.txt       |    2 +-
 .../auto_scheduler/tune_network_mali.rst.txt       |    2 +-
 .../auto_scheduler/tune_network_x86.rst.txt        |    2 +-
 .../auto_scheduler/tune_sparse_x86.rst.txt         |   68 +-
 .../tutorials/autotvm/sg_execution_times.rst.txt   |   12 +-
 .../tutorials/autotvm/tune_conv2d_cuda.rst.txt     |   44 +-
 .../tutorials/autotvm/tune_relay_arm.rst.txt       |    6 +-
 .../tutorials/dev/bring_your_own_datatypes.rst.txt |    2 +-
 .../tutorials/dev/sg_execution_times.rst.txt       |    8 +-
 .../frontend/deploy_model_on_android.rst.txt       |    2 +-
 .../deploy_object_detection_pytorch.rst.txt        |    2 +-
 .../tutorials/frontend/deploy_prequantized.rst.txt |    2 +-
 .../frontend/deploy_prequantized_tflite.rst.txt    |    4 +-
 .../tutorials/frontend/deploy_ssd_gluoncv.rst.txt  |    2 +-
 docs/_sources/tutorials/frontend/from_onnx.rst.txt |    2 +-
 .../tutorials/frontend/from_tensorflow.rst.txt     |    4 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |   40 +-
 ...6.rst.txt => auto_scheduler_matmul_x86.rst.txt} |   18 +-
 ...m_matmul.rst.txt => autotvm_matmul_x86.rst.txt} |   27 +-
 ...th_python.rst.txt => autotvm_relay_x86.rst.txt} |   75 +-
 .../get_started/cross_compilation_and_rpc.rst.txt  |    2 +-
 .../_sources/tutorials/get_started/install.rst.txt |    4 +-
 .../tutorials/get_started/introduction.rst.txt     |   94 +-
 .../get_started/relay_quick_start.rst.txt          |    2 +-
 .../get_started/sg_execution_times.rst.txt         |   18 +-
 .../get_started/tensor_expr_get_started.rst.txt    |   81 +-
 .../get_started/tvmc_command_line_driver.rst.txt   |    2 +-
 docs/_sources/tutorials/index.rst.txt              |   80 +-
 .../tutorials/language/schedule_primitives.rst.txt |    8 +-
 .../tutorials/language/sg_execution_times.rst.txt  |   16 +-
 docs/_sources/tutorials/language/tensorize.rst.txt |   12 +-
 .../tutorials/language/tuple_inputs.rst.txt        |   34 +-
 .../tutorials/micro/sg_execution_times.rst.txt     |    6 +-
 .../tutorials/optimize/opt_conv_cuda.rst.txt       |    2 +-
 .../tutorials/optimize/opt_conv_tensorcore.rst.txt |    6 +-
 docs/_sources/tutorials/optimize/opt_gemm.rst.txt  |   20 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |    8 +-
 docs/_sources/tutorials/topi/intro_topi.rst.txt    |    2 +-
 .../tutorials/topi/sg_execution_times.rst.txt      |    4 +-
 .../tutorials/autotvm/sg_execution_times.rst.txt   |    6 +-
 .../vta/tutorials/autotvm/tune_relay_vta.rst.txt   |    2 +-
 .../frontend/deploy_classification.rst.txt         |    6 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |    4 +-
 .../_sources/vta/tutorials/matrix_multiply.rst.txt |    4 +-
 .../vta/tutorials/optimize/convolution_opt.rst.txt |    8 +-
 .../tutorials/optimize/matrix_multiply_opt.rst.txt |    4 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |    6 +-
 .../vta/tutorials/sg_execution_times.rst.txt       |    6 +-
 docs/api/doxygen/algorithm_8h.html                 |    2 +-
 docs/api/doxygen/algorithm_8h__incl.svg            | 1822 +++----
 docs/api/doxygen/analyzer_8h.html                  |    2 +-
 docs/api/doxygen/analyzer_8h__dep__incl.svg        |  648 +--
 docs/api/doxygen/analyzer_8h__incl.svg             | 1568 +++---
 docs/api/doxygen/analyzer_8h_source.html           |    8 +-
 docs/api/doxygen/annotated.html                    |   41 +-
 docs/api/doxygen/annotation_8h.html                |    2 +-
 docs/api/doxygen/annotation_8h__incl.svg           | 1302 ++---
 docs/api/doxygen/array_8h_source.html              |   10 +-
 docs/api/doxygen/array__utils_8h__dep__incl.svg    |   44 +-
 docs/api/doxygen/array__utils_8h__incl.svg         |  516 +-
 .../api/doxygen/attr__registry__map_8h_source.html |    2 +-
 docs/api/doxygen/auto__schedule_8h.html            |    2 +-
 docs/api/doxygen/auto__schedule_8h__incl.svg       | 1827 +++----
 docs/api/doxygen/auto__schedule_8h_source.html     |    6 +-
 docs/api/doxygen/auto__scheduler_2feature_8h.html  |    2 +-
 .../doxygen/auto__scheduler_2feature_8h__incl.svg  | 1852 ++++---
 docs/api/doxygen/autodiff_8h.html                  |    2 +-
 docs/api/doxygen/autodiff_8h__incl.svg             | 1538 +++---
 docs/api/doxygen/bias__add_8h__incl.svg            |  736 +--
 docs/api/doxygen/bitserial_8h.html                 |    2 +-
 docs/api/doxygen/bitserial_8h__incl.svg            | 1682 +++----
 docs/api/doxygen/block__scope_8h.html              |    2 +-
 docs/api/doxygen/block__scope_8h__dep__incl.svg    |   20 +-
 docs/api/doxygen/block__scope_8h__incl.svg         | 1506 +++---
 docs/api/doxygen/block__scope_8h_source.html       |   16 +-
 docs/api/doxygen/bound_8h.html                     |    2 +-
 docs/api/doxygen/bound_8h__dep__incl.svg           |  624 +--
 docs/api/doxygen/bound_8h__incl.svg                | 1592 +++---
 docs/api/doxygen/broadcast_8h__dep__incl.svg       |   88 +-
 docs/api/doxygen/broadcast_8h__incl.svg            |  768 +--
 docs/api/doxygen/buffer_8h.html                    |    2 +-
 docs/api/doxygen/buffer_8h__dep__incl.svg          |  636 +--
 docs/api/doxygen/buffer_8h__incl.svg               | 1290 ++---
 docs/api/doxygen/buffer_8h_source.html             |    8 +-
 docs/api/doxygen/builtin_8h.html                   |    2 +-
 docs/api/doxygen/builtin_8h__dep__incl.svg         |   88 +-
 docs/api/doxygen/builtin_8h__incl.svg              | 1730 +++----
 docs/api/doxygen/c__runtime__api_8h__dep__incl.svg |   44 +-
 docs/api/doxygen/classes.html                      |  365 +-
 .../classtvm_1_1runtime_1_1NDArray-members.html    |    6 +-
 .../doxygen/classtvm_1_1runtime_1_1NDArray.html    |   34 +-
 ...1_1runtime_1_1NDArray_1_1Container-members.html |    4 +-
 ...lasstvm_1_1runtime_1_1NDArray_1_1Container.html |   18 +-
 ...untime_1_1NDArray_1_1ContainerBase-members.html |    2 +-
 ...tvm_1_1runtime_1_1NDArray_1_1ContainerBase.html |   14 +-
 ...me_1_1NDArray_1_1ContainerBase__coll__graph.svg |  124 +-
 ...untime_1_1NDArray_1_1Container__coll__graph.svg |  160 +-
 .../api/doxygen/classtvm_1_1runtime_1_1Object.html |    2 +-
 .../doxygen/classtvm_1_1runtime_1_1ObjectRef.html  |    2 +-
 ...asstvm_1_1runtime_1_1ObjectRef__coll__graph.svg |   12 +-
 .../classtvm_1_1runtime_1_1Object__coll__graph.svg |    8 +-
 .../classtvm_1_1runtime_1_1ShapeTuple-members.html |  114 +
 ...html => classtvm_1_1runtime_1_1ShapeTuple.html} |  453 +-
 ...sstvm_1_1runtime_1_1ShapeTupleObj-members.html} |   48 +-
 ...l => classtvm_1_1runtime_1_1ShapeTupleObj.html} |  287 +-
 ...ntime_1_1ShapeTupleObj_1_1FromStd-members.html} |   55 +-
 ...vm_1_1runtime_1_1ShapeTupleObj_1_1FromStd.html} |  374 +-
 ...me_1_1ShapeTupleObj_1_1FromStd__coll__graph.svg |  102 +
 ...1_1ShapeTupleObj_1_1FromStd__inherit__graph.svg |   96 +
 ...vm_1_1runtime_1_1ShapeTupleObj__coll__graph.svg |   82 +
 ...1_1runtime_1_1ShapeTupleObj__inherit__graph.svg |   96 +
 ...sstvm_1_1runtime_1_1ShapeTuple__coll__graph.svg |  102 +
 ...vm_1_1runtime_1_1ShapeTuple__inherit__graph.svg |   72 +
 ...asstvm_1_1transform_1_1PassContext-members.html |   31 +-
 .../classtvm_1_1transform_1_1PassContext.html      |   35 +-
 ...vm_1_1transform_1_1PassContext__coll__graph.svg |  111 +-
 ...1_1transform_1_1PassContext__inherit__graph.svg |   83 +-
 docs/api/doxygen/closure_8h_source.html            |    8 +-
 docs/api/doxygen/codegen_8h.html                   |    2 +-
 docs/api/doxygen/codegen_8h__incl.svg              | 1628 +++---
 docs/api/doxygen/codegen_8h_source.html            |    4 +-
 docs/api/doxygen/compute__dag_8h__dep__incl.svg    |   76 +-
 docs/api/doxygen/compute__dag_8h__incl.svg         |  532 +-
 docs/api/doxygen/compute__dag_8h_source.html       |    8 +-
 docs/api/doxygen/constant__utils_8h.html           |    2 +-
 docs/api/doxygen/constant__utils_8h__dep__incl.svg |  164 +-
 docs/api/doxygen/constant__utils_8h__incl.svg      | 1942 ++++----
 docs/api/doxygen/cost__model_8h.html               |    2 +-
 docs/api/doxygen/cost__model_8h__incl.svg          | 1564 +++---
 docs/api/doxygen/cost__model_8h_source.html        |   16 +-
 docs/api/doxygen/cublas_8h__dep__incl.svg          |   20 +-
 docs/api/doxygen/cublas_8h__incl.svg               |  544 +--
 docs/api/doxygen/cuda_2dense_8h.html               |    2 +-
 docs/api/doxygen/cuda_2dense_8h__dep__incl.svg     |   12 +-
 docs/api/doxygen/cuda_2dense_8h__incl.svg          | 2101 ++++----
 docs/api/doxygen/cuda_2dense_8h_source.html        |    4 +-
 docs/api/doxygen/cuda_2injective_8h.html           |    2 +-
 docs/api/doxygen/cuda_2injective_8h__dep__incl.svg |   12 +-
 docs/api/doxygen/cuda_2injective_8h__incl.svg      | 2032 ++++----
 docs/api/doxygen/cuda_2injective_8h_source.html    |    2 +-
 docs/api/doxygen/cuda_2normalization_8h.html       |    2 +-
 docs/api/doxygen/cuda_2normalization_8h__incl.svg  | 2066 ++++----
 .../api/doxygen/cuda_2normalization_8h_source.html |    2 +-
 docs/api/doxygen/cuda_2pooling_8h.html             |    2 +-
 docs/api/doxygen/cuda_2pooling_8h__dep__incl.svg   |   12 +-
 docs/api/doxygen/cuda_2pooling_8h__incl.svg        | 1986 ++++----
 docs/api/doxygen/cuda_2pooling_8h_source.html      |    2 +-
 docs/api/doxygen/cuda_2reduction_8h.html           |    2 +-
 docs/api/doxygen/cuda_2reduction_8h__dep__incl.svg |   12 +-
 docs/api/doxygen/cuda_2reduction_8h__incl.svg      | 2032 ++++----
 docs/api/doxygen/cuda_2reduction_8h_source.html    |    2 +-
 docs/api/doxygen/cuda_2softmax_8h.html             |    2 +-
 docs/api/doxygen/cuda_2softmax_8h__dep__incl.svg   |   12 +-
 docs/api/doxygen/cuda_2softmax_8h__incl.svg        | 2032 ++++----
 docs/api/doxygen/cuda_2softmax_8h_source.html      |    2 +-
 docs/api/doxygen/data__layout_8h.html              |    2 +-
 docs/api/doxygen/data__layout_8h__dep__incl.svg    |  108 +-
 docs/api/doxygen/data__layout_8h__incl.svg         | 1544 +++---
 docs/api/doxygen/data__layout_8h_source.html       |    8 +-
 docs/api/doxygen/dataflow__matcher_8h.html         |    2 +-
 docs/api/doxygen/dataflow__matcher_8h__incl.svg    | 2080 ++++----
 docs/api/doxygen/dataflow__matcher_8h_source.html  |    8 +-
 docs/api/doxygen/dataflow__pattern_8h.html         |    2 +-
 .../doxygen/dataflow__pattern_8h__dep__incl.svg    |   24 +-
 docs/api/doxygen/dataflow__pattern_8h__incl.svg    | 1860 +++----
 docs/api/doxygen/dataflow__pattern_8h_source.html  |   10 +-
 .../api/doxygen/dataflow__pattern__functor_8h.html |    2 +-
 .../dataflow__pattern__functor_8h__dep__incl.svg   |   12 +-
 .../dataflow__pattern__functor_8h__incl.svg        | 2082 ++++----
 .../dataflow__pattern__functor_8h_source.html      |    8 +-
 docs/api/doxygen/debug_8h.html                     |    2 +-
 docs/api/doxygen/debug_8h__incl.svg                | 1354 ++---
 .../doxygen/detail_2broadcast_8h__dep__incl.svg    |  100 +-
 docs/api/doxygen/detail_2broadcast_8h__incl.svg    |  660 +--
 docs/api/doxygen/detail_2broadcast_8h_source.html  |    2 +-
 docs/api/doxygen/detail_2extern_8h__dep__incl.svg  |   40 +-
 docs/api/doxygen/detail_2extern_8h__incl.svg       |  628 +--
 docs/api/doxygen/device__api_8h.html               |    2 +-
 docs/api/doxygen/device__api_8h__dep__incl.svg     |   12 +-
 docs/api/doxygen/device__api_8h__incl.svg          |  994 ++--
 docs/api/doxygen/device__api_8h_source.html        |    2 +-
 docs/api/doxygen/device__copy_8h.html              |    2 +-
 docs/api/doxygen/device__copy_8h__incl.svg         | 1302 ++---
 docs/api/doxygen/diagnostic_8h.html                |    2 +-
 docs/api/doxygen/diagnostic_8h__dep__incl.svg      |  620 +--
 docs/api/doxygen/diagnostic_8h__incl.svg           | 1440 +++---
 docs/api/doxygen/diagnostic_8h_source.html         |   10 +-
 docs/api/doxygen/dilate_8h__incl.svg               |  540 +-
 docs/api/doxygen/dir_000007_000008.html            |    2 +-
 .../dir_404558507ed35459f0d7a6d81d8c508d_dep.svg   |    4 +-
 .../dir_5603323dd0cfe2b74c32570eba23c68c.html      |    3 +
 docs/api/doxygen/driver__api_8h__incl.svg          | 1534 +++---
 docs/api/doxygen/einsum_8h__incl.svg               |  732 +--
 docs/api/doxygen/elemwise_8h__dep__incl.svg        |   36 +-
 docs/api/doxygen/elemwise_8h__incl.svg             |  452 +-
 docs/api/doxygen/elemwise_8h_source.html           |    2 +-
 docs/api/doxygen/env__func_8h.html                 |    2 +-
 docs/api/doxygen/env__func_8h__dep__incl.svg       |  564 +--
 docs/api/doxygen/env__func_8h__incl.svg            |  908 ++--
 docs/api/doxygen/env__func_8h_source.html          |   10 +-
 docs/api/doxygen/error_8h.html                     |    2 +-
 docs/api/doxygen/error_8h__dep__incl.svg           |  228 +-
 docs/api/doxygen/error_8h__incl.svg                | 1492 +++---
 docs/api/doxygen/error_8h_source.html              |    8 +-
 docs/api/doxygen/executable_8h.html                |    2 +-
 docs/api/doxygen/executable_8h__dep__incl.svg      |   12 +-
 docs/api/doxygen/executable_8h__incl.svg           |  790 +--
 docs/api/doxygen/executable_8h_source.html         |    4 +-
 docs/api/doxygen/files.html                        |    3 +-
 docs/api/doxygen/flatten_8h__incl.svg              |  664 +--
 docs/api/doxygen/functions.html                    |    2 +
 docs/api/doxygen/functions_a.html                  |    1 +
 docs/api/doxygen/functions_b.html                  |    2 +
 docs/api/doxygen/functions_c.html                  |    6 +-
 docs/api/doxygen/functions_d.html                  |    2 +
 docs/api/doxygen/functions_e.html                  |    6 +-
 docs/api/doxygen/functions_eval.html               |    3 +
 docs/api/doxygen/functions_f.html                  |    4 +-
 docs/api/doxygen/functions_func_a.html             |    7 +-
 docs/api/doxygen/functions_func_b.html             |    6 +-
 docs/api/doxygen/functions_func_c.html             |    2 +-
 docs/api/doxygen/functions_func_d.html             |    7 +-
 docs/api/doxygen/functions_func_e.html             |    8 +-
 docs/api/doxygen/functions_func_f.html             |    4 +-
 docs/api/doxygen/functions_func_l.html             |    3 +
 docs/api/doxygen/functions_func_o.html             |   13 +-
 docs/api/doxygen/functions_func_s.html             |   20 +-
 docs/api/doxygen/functions_func_t.html             |    8 +-
 docs/api/doxygen/functions_i.html                  |   15 +-
 docs/api/doxygen/functions_k.html                  |    3 +
 docs/api/doxygen/functions_l.html                  |    3 +
 docs/api/doxygen/functions_o.html                  |   11 +-
 docs/api/doxygen/functions_r.html                  |    2 +-
 docs/api/doxygen/functions_rela.html               |    4 +
 docs/api/doxygen/functions_s.html                  |   21 +-
 docs/api/doxygen/functions_t.html                  |    8 +-
 docs/api/doxygen/functions_type.html               |    5 +
 docs/api/doxygen/functions_u.html                  |    2 +-
 docs/api/doxygen/functions_v.html                  |   10 +-
 docs/api/doxygen/functions_vars.html               |    2 +
 docs/api/doxygen/functions_vars_d.html             |    1 +
 docs/api/doxygen/functions_vars_s.html             |    3 +-
 docs/api/doxygen/functor_8h_source.html            |    6 +-
 docs/api/doxygen/fuse_8h__dep__incl.svg            |  156 +-
 docs/api/doxygen/fuse_8h__incl.svg                 |  516 +-
 docs/api/doxygen/generic_2default_8h.html          |    2 +-
 docs/api/doxygen/generic_2default_8h__incl.svg     | 2032 ++++----
 docs/api/doxygen/generic_2extern_8h.html           |    2 +-
 docs/api/doxygen/generic_2extern_8h__dep__incl.svg |   24 +-
 docs/api/doxygen/generic_2extern_8h__incl.svg      | 2016 ++++----
 docs/api/doxygen/generic_2injective_8h.html        |    2 +-
 .../doxygen/generic_2injective_8h__dep__incl.svg   |   32 +-
 docs/api/doxygen/generic_2injective_8h__incl.svg   | 2032 ++++----
 docs/api/doxygen/generic_2injective_8h_source.html |    2 +-
 docs/api/doxygen/generic__func_8h.html             |    2 +-
 docs/api/doxygen/generic__func_8h__dep__incl.svg   |  212 +-
 docs/api/doxygen/generic__func_8h__incl.svg        | 1994 ++++----
 docs/api/doxygen/generic__func_8h_source.html      |   18 +-
 docs/api/doxygen/hierarchy.html                    |  343 +-
 docs/api/doxygen/image_8h.html                     |    2 +-
 docs/api/doxygen/image_8h__incl.svg                | 1682 +++----
 docs/api/doxygen/inherit_graph_10.svg              |   16 +-
 docs/api/doxygen/inherit_graph_106.svg             | 3179 ++++++------
 docs/api/doxygen/inherit_graph_156.svg             |   16 +-
 docs/api/doxygen/inherit_graph_157.svg             |   16 +-
 docs/api/doxygen/inherit_graph_38.svg              |   16 +-
 docs/api/doxygen/inherit_graph_42.svg              |    8 +-
 docs/api/doxygen/inherit_graph_98.svg              | 5159 ++++++++++----------
 docs/api/doxygen/inherits.html                     |    4 +-
 docs/api/doxygen/instrument_8h.html                |    2 +-
 docs/api/doxygen/instrument_8h__dep__incl.svg      |  212 +-
 docs/api/doxygen/instrument_8h__incl.svg           |  946 ++--
 docs/api/doxygen/instrument_8h_source.html         |   10 +-
 docs/api/doxygen/int__set_8h.html                  |    2 +-
 docs/api/doxygen/int__set_8h__dep__incl.svg        |  652 +--
 docs/api/doxygen/int__set_8h__incl.svg             | 1506 +++---
 docs/api/doxygen/int__set_8h_source.html           |    6 +-
 docs/api/doxygen/int__solver_8h__incl.svg          |  540 +-
 docs/api/doxygen/int__solver_8h_source.html        |    6 +-
 docs/api/doxygen/interpreter_8h.html               |    2 +-
 docs/api/doxygen/interpreter_8h__incl.svg          | 1710 +++----
 docs/api/doxygen/interpreter_8h_source.html        |    6 +-
 docs/api/doxygen/ir_2adt_8h.html                   |    2 +-
 docs/api/doxygen/ir_2adt_8h__dep__incl.svg         |  560 +--
 docs/api/doxygen/ir_2adt_8h__incl.svg              | 1306 ++---
 docs/api/doxygen/ir_2adt_8h_source.html            |    2 +-
 docs/api/doxygen/ir_2attrs_8h.html                 |    2 +-
 docs/api/doxygen/ir_2attrs_8h__dep__incl.svg       |  596 +--
 docs/api/doxygen/ir_2attrs_8h__incl.svg            | 1282 ++---
 docs/api/doxygen/ir_2attrs_8h_source.html          |   34 +-
 docs/api/doxygen/ir_2expr_8h.html                  |    2 +-
 docs/api/doxygen/ir_2expr_8h__dep__incl.svg        |  620 +--
 docs/api/doxygen/ir_2expr_8h__incl.svg             | 1206 ++---
 docs/api/doxygen/ir_2expr_8h_source.html           |   20 +-
 docs/api/doxygen/ir_2function_8h.html              |    2 +-
 docs/api/doxygen/ir_2function_8h__dep__incl.svg    |  616 +--
 docs/api/doxygen/ir_2function_8h__incl.svg         | 1356 ++---
 docs/api/doxygen/ir_2function_8h_source.html       |    8 +-
 docs/api/doxygen/ir_2module_8h.html                |    2 +-
 docs/api/doxygen/ir_2module_8h__dep__incl.svg      |  560 +--
 docs/api/doxygen/ir_2module_8h__incl.svg           | 1464 +++---
 docs/api/doxygen/ir_2module_8h_source.html         |   10 +-
 docs/api/doxygen/ir_2op_8h.html                    |    4 +-
 docs/api/doxygen/ir_2op_8h__dep__incl.svg          |  572 +--
 docs/api/doxygen/ir_2op_8h__incl.svg               | 1596 +++---
 docs/api/doxygen/ir_2op_8h_source.html             |   10 +-
 docs/api/doxygen/ir_2transform_8h.html             |    6 +-
 docs/api/doxygen/ir_2transform_8h__dep__incl.svg   |  204 +-
 docs/api/doxygen/ir_2transform_8h__incl.svg        | 1586 +++---
 docs/api/doxygen/ir_2transform_8h_source.html      |   44 +-
 docs/api/doxygen/ir_2type_8h.html                  |    2 +-
 docs/api/doxygen/ir_2type_8h__dep__incl.svg        |  744 +--
 docs/api/doxygen/ir_2type_8h__incl.svg             | 1088 +++--
 docs/api/doxygen/ir_2type_8h_source.html           |   10 +-
 docs/api/doxygen/iter__affine__map_8h.html         |    2 +-
 docs/api/doxygen/iter__affine__map_8h__incl.svg    | 1564 +++---
 docs/api/doxygen/iter__affine__map_8h_source.html  |   10 +-
 .../api/doxygen/local__response__norm_8h__incl.svg |  520 +-
 docs/api/doxygen/loop__state_8h.html               |    2 +-
 docs/api/doxygen/loop__state_8h__dep__incl.svg     |   88 +-
 docs/api/doxygen/loop__state_8h__incl.svg          | 1760 +++----
 docs/api/doxygen/loop__state_8h_source.html        |   10 +-
 docs/api/doxygen/map_8h.html                       |    2 +-
 docs/api/doxygen/map_8h__dep__incl.svg             | 1313 ++---
 docs/api/doxygen/map_8h_source.html                |   12 +-
 docs/api/doxygen/mapping_8h__incl.svg              |  520 +-
 docs/api/doxygen/measure_8h.html                   |    2 +-
 docs/api/doxygen/measure_8h__dep__incl.svg         |   48 +-
 docs/api/doxygen/measure_8h__incl.svg              | 1554 +++---
 docs/api/doxygen/measure_8h_source.html            |   14 +-
 docs/api/doxygen/measure__record_8h.html           |    2 +-
 docs/api/doxygen/measure__record_8h__incl.svg      | 1574 +++---
 docs/api/doxygen/measure__record_8h_source.html    |    6 +-
 docs/api/doxygen/memory__manager_8h.html           |    2 +-
 docs/api/doxygen/memory__manager_8h__incl.svg      |  730 ++-
 docs/api/doxygen/memory__manager_8h_source.html    |   10 +-
 docs/api/doxygen/namespacetvm_1_1runtime.html      |    6 +
 docs/api/doxygen/ndarray_8h.html                   |    4 +-
 docs/api/doxygen/ndarray_8h__incl.svg              |  668 ++-
 docs/api/doxygen/ndarray_8h_source.html            |   62 +-
 docs/api/doxygen/nn_2bnn_8h__incl.svg              |  684 +--
 docs/api/doxygen/nn_2dense_8h__dep__incl.svg       |   24 +-
 docs/api/doxygen/nn_2dense_8h__incl.svg            |  520 +-
 docs/api/doxygen/nn_2dense_8h_source.html          |    2 +-
 docs/api/doxygen/nn_2pooling_8h__incl.svg          |  824 ++--
 docs/api/doxygen/nn_2softmax_8h__incl.svg          |  796 +--
 docs/api/doxygen/node_8h.html                      |    2 +-
 docs/api/doxygen/node_8h__dep__incl.svg            |  692 +--
 docs/api/doxygen/node_8h__incl.svg                 | 1022 ++--
 docs/api/doxygen/node_8h_source.html               |    2 +-
 docs/api/doxygen/object_8h.html                    |   10 +-
 docs/api/doxygen/object_8h__dep__incl.svg          |  108 +-
 docs/api/doxygen/object_8h_source.html             |  143 +-
 docs/api/doxygen/op__strategy_8h.html              |    2 +-
 docs/api/doxygen/op__strategy_8h__incl.svg         | 2248 ++++-----
 docs/api/doxygen/op__strategy_8h_source.html       |    8 +-
 docs/api/doxygen/operation_8h__dep__incl.svg       |  604 +--
 docs/api/doxygen/operation_8h__incl.svg            |  560 +--
 docs/api/doxygen/operation_8h_source.html          |    8 +-
 docs/api/doxygen/optional_8h_source.html           |    6 +-
 docs/api/doxygen/packed__func_8h.html              |   11 +-
 docs/api/doxygen/packed__func_8h__dep__incl.svg    |  528 +-
 docs/api/doxygen/packed__func_8h__incl.svg         |  896 ++--
 docs/api/doxygen/packed__func_8h_source.html       |  253 +-
 docs/api/doxygen/pad__utils_8h__dep__incl.svg      |   12 +-
 docs/api/doxygen/pad__utils_8h__incl.svg           |  556 +--
 docs/api/doxygen/parser_8h.html                    |    2 +-
 docs/api/doxygen/parser_8h__incl.svg               |  996 ++--
 docs/api/doxygen/pattern_8h.html                   |    2 +-
 docs/api/doxygen/pattern_8h__incl.svg              | 1486 +++---
 docs/api/doxygen/pattern__functor_8h.html          |    2 +-
 docs/api/doxygen/pattern__functor_8h__incl.svg     | 1948 ++++----
 docs/api/doxygen/pattern__functor_8h_source.html   |    8 +-
 docs/api/doxygen/profiling_8h.html                 |    2 +-
 docs/api/doxygen/profiling_8h__incl.svg            | 1142 ++---
 docs/api/doxygen/profiling_8h_source.html          |   10 +-
 docs/api/doxygen/random_8h.html                    |    2 +-
 docs/api/doxygen/random_8h__incl.svg               | 1292 ++---
 docs/api/doxygen/ravel__unravel_8h__dep__incl.svg  |   80 +-
 docs/api/doxygen/ravel__unravel_8h__incl.svg       |  516 +-
 docs/api/doxygen/reduce_8h.html                    |    2 +-
 docs/api/doxygen/reduce_8h__incl.svg               | 1302 ++---
 docs/api/doxygen/reduction_8h__dep__incl.svg       |   28 +-
 docs/api/doxygen/reduction_8h__incl.svg            |  840 ++--
 docs/api/doxygen/reduction_8h_source.html          |    2 +-
 docs/api/doxygen/reflection_8h.html                |    6 +-
 docs/api/doxygen/reflection_8h__dep__incl.svg      |  700 +--
 docs/api/doxygen/reflection_8h__incl.svg           |  910 ++--
 docs/api/doxygen/reflection_8h_source.html         |   10 +-
 docs/api/doxygen/registry_8h.html                  |    2 +-
 docs/api/doxygen/registry_8h__dep__incl.svg        |  600 +--
 docs/api/doxygen/registry_8h__incl.svg             |  928 ++--
 docs/api/doxygen/registry_8h_source.html           |    6 +-
 docs/api/doxygen/relay_2adt_8h.html                |    2 +-
 docs/api/doxygen/relay_2adt_8h__dep__incl.svg      |   36 +-
 docs/api/doxygen/relay_2adt_8h__incl.svg           | 1988 ++++----
 docs/api/doxygen/relay_2adt_8h_source.html         |   12 +-
 docs/api/doxygen/relay_2analysis_8h.html           |    2 +-
 docs/api/doxygen/relay_2analysis_8h__incl.svg      | 1928 ++++----
 docs/api/doxygen/relay_2attrs_2memory_8h.html      |    2 +-
 docs/api/doxygen/relay_2attrs_2memory_8h__incl.svg | 1834 +++----
 docs/api/doxygen/relay_2attrs_2nn_8h.html          |    2 +-
 docs/api/doxygen/relay_2attrs_2nn_8h__incl.svg     | 1680 +++----
 docs/api/doxygen/relay_2attrs_2transform_8h.html   |    2 +-
 .../relay_2attrs_2transform_8h__dep__incl.svg      |   20 +-
 .../doxygen/relay_2attrs_2transform_8h__incl.svg   | 1822 +++----
 .../doxygen/relay_2attrs_2transform_8h_source.html |    2 +-
 docs/api/doxygen/relay_2attrs_2vm_8h.html          |    2 +-
 docs/api/doxygen/relay_2attrs_2vm_8h__incl.svg     | 1290 ++---
 docs/api/doxygen/relay_2base_8h.html               |    2 +-
 docs/api/doxygen/relay_2base_8h__dep__incl.svg     |  296 +-
 docs/api/doxygen/relay_2base_8h__incl.svg          | 1482 +++---
 docs/api/doxygen/relay_2base_8h_source.html        |   12 +-
 docs/api/doxygen/relay_2expr_8h.html               |    2 +-
 docs/api/doxygen/relay_2expr_8h__dep__incl.svg     |  212 +-
 docs/api/doxygen/relay_2expr_8h__incl.svg          | 1804 +++----
 docs/api/doxygen/relay_2expr_8h_source.html        |    6 +-
 docs/api/doxygen/relay_2expr__functor_8h.html      |    2 +-
 docs/api/doxygen/relay_2expr__functor_8h__incl.svg | 1918 ++++----
 .../doxygen/relay_2expr__functor_8h_source.html    |   10 +-
 docs/api/doxygen/relay_2feature_8h.html            |    2 +-
 docs/api/doxygen/relay_2feature_8h__incl.svg       | 1808 +++----
 docs/api/doxygen/relay_2function_8h.html           |    2 +-
 docs/api/doxygen/relay_2function_8h__dep__incl.svg |   36 +-
 docs/api/doxygen/relay_2function_8h__incl.svg      | 1900 +++----
 docs/api/doxygen/relay_2function_8h_source.html    |    4 +-
 docs/api/doxygen/relay_2op_8h.html                 |    2 +-
 docs/api/doxygen/relay_2op_8h__dep__incl.svg       |   36 +-
 docs/api/doxygen/relay_2op_8h__incl.svg            | 1850 +++----
 docs/api/doxygen/relay_2op__attr__types_8h.html    |    2 +-
 .../relay_2op__attr__types_8h__dep__incl.svg       |   28 +-
 .../doxygen/relay_2op__attr__types_8h__incl.svg    | 2196 ++++-----
 .../doxygen/relay_2op__attr__types_8h_source.html  |    2 +-
 docs/api/doxygen/relay_2qnn_2attrs_8h.html         |    2 +-
 docs/api/doxygen/relay_2qnn_2attrs_8h__incl.svg    | 1302 ++---
 .../api/doxygen/relay_2qnn_2transform_8h__incl.svg |  664 +--
 .../doxygen/relay_2qnn_2transform_8h_source.html   |    2 +-
 .../api/doxygen/relay_2transform_8h__dep__incl.svg |   12 +-
 docs/api/doxygen/relay_2transform_8h__incl.svg     |  692 +--
 docs/api/doxygen/relay_2transform_8h_source.html   |   16 +-
 docs/api/doxygen/relay_2type_8h.html               |    2 +-
 docs/api/doxygen/relay_2type_8h__dep__incl.svg     |  240 +-
 docs/api/doxygen/relay_2type_8h__incl.svg          | 1800 +++----
 docs/api/doxygen/reorg_8h__incl.svg                |  876 ++--
 docs/api/doxygen/repr__printer_8h_source.html      |    4 +-
 docs/api/doxygen/rocblas_8h__dep__incl.svg         |   12 +-
 docs/api/doxygen/rocblas_8h__incl.svg              |  544 +--
 docs/api/doxygen/rocm_2dense_8h.html               |    2 +-
 docs/api/doxygen/rocm_2dense_8h__incl.svg          | 2217 +++++----
 docs/api/doxygen/rocm_2dense_8h_source.html        |    2 +-
 docs/api/doxygen/rocm_2injective_8h.html           |    2 +-
 docs/api/doxygen/rocm_2injective_8h__incl.svg      | 2024 ++++----
 docs/api/doxygen/rocm_2normalization_8h.html       |    2 +-
 docs/api/doxygen/rocm_2normalization_8h__incl.svg  | 1952 ++++----
 docs/api/doxygen/rocm_2pooling_8h.html             |    2 +-
 docs/api/doxygen/rocm_2pooling_8h__incl.svg        | 1994 ++++----
 docs/api/doxygen/rocm_2reduction_8h.html           |    2 +-
 docs/api/doxygen/rocm_2reduction_8h__incl.svg      | 2024 ++++----
 docs/api/doxygen/rocm_2softmax_8h.html             |    2 +-
 docs/api/doxygen/rocm_2softmax_8h__incl.svg        | 2024 ++++----
 .../doxygen/runtime_2container_2adt_8h_source.html |    8 +-
 docs/api/doxygen/runtime_2container_2base_8h.html  |    2 +-
 .../runtime_2container_2base_8h__dep__incl.svg     | 1056 ++--
 .../runtime_2container_2base_8h_source.html        |   12 +-
 docs/api/doxygen/runtime_2memory_8h.html           |    2 +-
 docs/api/doxygen/runtime_2memory_8h__dep__incl.svg | 1170 ++---
 docs/api/doxygen/runtime_2memory_8h_source.html    |    6 +-
 docs/api/doxygen/runtime_2module_8h.html           |    2 +-
 docs/api/doxygen/runtime_2module_8h__dep__incl.svg |  528 +-
 docs/api/doxygen/runtime_2module_8h__incl.svg      |  822 ++--
 docs/api/doxygen/runtime_2module_8h_source.html    |   14 +-
 docs/api/doxygen/runtime_2vm_2vm_8h.html           |    2 +-
 docs/api/doxygen/runtime_2vm_2vm_8h__incl.svg      | 1250 ++---
 docs/api/doxygen/runtime_2vm_2vm_8h_source.html    |   10 +-
 docs/api/doxygen/schedule__pass_8h.html            |    2 +-
 docs/api/doxygen/schedule__pass_8h__dep__incl.svg  |  144 +-
 docs/api/doxygen/schedule__pass_8h__incl.svg       | 1868 +++----
 docs/api/doxygen/search/all_0.js                   |    4 +-
 docs/api/doxygen/search/all_1.js                   |    2 +-
 docs/api/doxygen/search/all_12.js                  |    2 +-
 docs/api/doxygen/search/all_13.js                  |   19 +-
 docs/api/doxygen/search/all_14.js                  |    6 +-
 docs/api/doxygen/search/all_15.js                  |    2 +-
 docs/api/doxygen/search/all_16.js                  |    2 +-
 docs/api/doxygen/search/all_2.js                   |    4 +-
 docs/api/doxygen/search/all_3.js                   |    6 +-
 docs/api/doxygen/search/all_4.js                   |    2 +-
 docs/api/doxygen/search/all_5.js                   |    4 +-
 docs/api/doxygen/search/all_6.js                   |    4 +-
 docs/api/doxygen/search/all_8.js                   |    2 +-
 docs/api/doxygen/search/all_9.js                   |    5 +-
 docs/api/doxygen/search/all_b.js                   |    1 +
 docs/api/doxygen/search/all_c.js                   |    1 +
 docs/api/doxygen/search/all_d.js                   |    2 +-
 docs/api/doxygen/search/all_f.js                   |    4 +-
 docs/api/doxygen/search/classes_10.js              |    8 +-
 docs/api/doxygen/search/classes_11.js              |    2 +-
 docs/api/doxygen/search/classes_5.js               |    2 +-
 docs/api/doxygen/search/classes_7.js               |    2 +-
 docs/api/doxygen/search/classes_8.js               |    2 +-
 docs/api/doxygen/search/enumvalues_5.js            |    1 +
 docs/api/doxygen/search/files_e.js                 |    1 +
 docs/api/doxygen/search/functions_1.js             |    2 +-
 docs/api/doxygen/search/functions_12.js            |    2 +-
 docs/api/doxygen/search/functions_13.js            |    5 +-
 docs/api/doxygen/search/functions_14.js            |    4 +-
 docs/api/doxygen/search/functions_2.js             |    4 +-
 docs/api/doxygen/search/functions_3.js             |    4 +-
 docs/api/doxygen/search/functions_4.js             |    2 +-
 docs/api/doxygen/search/functions_5.js             |    4 +-
 docs/api/doxygen/search/functions_6.js             |    4 +-
 docs/api/doxygen/search/functions_c.js             |    1 +
 docs/api/doxygen/search/functions_d.js             |    2 +-
 docs/api/doxygen/search/functions_f.js             |    2 +-
 docs/api/doxygen/search/related_9.js               |    1 +
 docs/api/doxygen/search/typedefs_7.js              |    1 +
 docs/api/doxygen/search/variables_0.js             |    4 +-
 docs/api/doxygen/search/variables_11.js            |    4 +-
 docs/api/doxygen/search/variables_4.js             |    2 +-
 docs/api/doxygen/search__policy_8h.html            |    2 +-
 docs/api/doxygen/search__policy_8h__dep__incl.svg  |   12 +-
 docs/api/doxygen/search__policy_8h__incl.svg       | 1756 ++++---
 docs/api/doxygen/search__policy_8h_source.html     |    8 +-
 docs/api/doxygen/search__task_8h.html              |    2 +-
 docs/api/doxygen/search__task_8h__dep__incl.svg    |   60 +-
 docs/api/doxygen/search__task_8h__incl.svg         | 1610 +++---
 docs/api/doxygen/search__task_8h_source.html       |    8 +-
 docs/api/doxygen/serializer_8h.html                |    2 +-
 docs/api/doxygen/serializer_8h__incl.svg           |  660 ++-
 .../doxygen/{span_8h.html => shape__tuple_8h.html} |   40 +-
 docs/api/doxygen/shape__tuple_8h__dep__incl.svg    | 1123 +++++
 docs/api/doxygen/shape__tuple_8h__incl.svg         |  273 ++
 docs/api/doxygen/shape__tuple_8h_source.html       |  110 +
 docs/api/doxygen/source__map_8h.html               |    2 +-
 docs/api/doxygen/source__map_8h__dep__incl.svg     |  560 +--
 docs/api/doxygen/source__map_8h__incl.svg          | 1164 ++---
 docs/api/doxygen/source__map_8h_source.html        |    6 +-
 docs/api/doxygen/span_8h.html                      |    2 +-
 docs/api/doxygen/span_8h__dep__incl.svg            |  740 +--
 docs/api/doxygen/span_8h__incl.svg                 | 1050 ++--
 docs/api/doxygen/span_8h_source.html               |    6 +-
 docs/api/doxygen/state_8h.html                     |    2 +-
 docs/api/doxygen/state_8h__dep__incl.svg           |   12 +-
 docs/api/doxygen/state_8h__incl.svg                | 2073 ++++----
 docs/api/doxygen/state_8h_source.html              |    8 +-
 docs/api/doxygen/stmt_8h.html                      |    2 +-
 docs/api/doxygen/stmt_8h__dep__incl.svg            |  648 +--
 docs/api/doxygen/stmt_8h__incl.svg                 | 1486 +++---
 docs/api/doxygen/stmt_8h_source.html               |   16 +-
 docs/api/doxygen/stmt__functor_8h.html             |    2 +-
 docs/api/doxygen/stmt__functor_8h__incl.svg        | 1570 +++---
 docs/api/doxygen/stmt__functor_8h_source.html      |   12 +-
 docs/api/doxygen/strided__slice_8h__dep__incl.svg  |   68 +-
 docs/api/doxygen/strided__slice_8h__incl.svg       |  548 +--
 docs/api/doxygen/string_8h_source.html             |   16 +-
 .../structtvm_1_1runtime_1_1TypeIndex-members.html |    5 +-
 .../doxygen/structtvm_1_1runtime_1_1TypeIndex.html |    7 +-
 docs/api/doxygen/structural__equal_8h_source.html  |    4 +-
 docs/api/doxygen/structural__hash_8h_source.html   |    4 +-
 docs/api/doxygen/tag_8h.html                       |    4 +-
 docs/api/doxygen/tag_8h__incl.svg                  | 1370 +++---
 docs/api/doxygen/tag_8h_source.html                |    6 +-
 docs/api/doxygen/target_8h.html                    |    2 +-
 docs/api/doxygen/target_8h__dep__incl.svg          |  328 +-
 docs/api/doxygen/target_8h__incl.svg               | 1566 +++---
 docs/api/doxygen/target_8h_source.html             |    6 +-
 docs/api/doxygen/target__info_8h.html              |    2 +-
 docs/api/doxygen/target__info_8h__incl.svg         | 1222 ++---
 docs/api/doxygen/target__info_8h_source.html       |    6 +-
 docs/api/doxygen/target__kind_8h.html              |    4 +-
 docs/api/doxygen/target__kind_8h__dep__incl.svg    |  336 +-
 docs/api/doxygen/target__kind_8h__incl.svg         |  970 ++--
 docs/api/doxygen/target__kind_8h_source.html       |   14 +-
 docs/api/doxygen/te_2schedule_8h__dep__incl.svg    |  636 +--
 docs/api/doxygen/te_2schedule_8h__incl.svg         |  496 +-
 docs/api/doxygen/te_2schedule_8h_source.html       |   14 +-
 docs/api/doxygen/tensor_8h.html                    |    2 +-
 docs/api/doxygen/tensor_8h__dep__incl.svg          |  624 +--
 docs/api/doxygen/tensor_8h__incl.svg               | 1622 +++---
 docs/api/doxygen/tensor_8h_source.html             |   16 +-
 docs/api/doxygen/tensor__intrin_8h__dep__incl.svg  |  624 +--
 docs/api/doxygen/tensor__intrin_8h__incl.svg       |  488 +-
 docs/api/doxygen/tensor__intrin_8h_source.html     |    6 +-
 docs/api/doxygen/tensor__type_8h__dep__incl.svg    |  248 +-
 docs/api/doxygen/tensor__type_8h__incl.svg         | 1218 ++---
 docs/api/doxygen/tensor__type_8h_source.html       |    4 +-
 docs/api/doxygen/tensor__utils_8h__dep__incl.svg   |   76 +-
 docs/api/doxygen/tensor__utils_8h__incl.svg        |  516 +-
 docs/api/doxygen/tir_2analysis_8h.html             |    2 +-
 docs/api/doxygen/tir_2analysis_8h__dep__incl.svg   |  172 +-
 docs/api/doxygen/tir_2analysis_8h__incl.svg        | 1732 +++----
 docs/api/doxygen/tir_2analysis_8h_source.html      |    4 +-
 docs/api/doxygen/tir_2expr_8h.html                 |    2 +-
 docs/api/doxygen/tir_2expr_8h__dep__incl.svg       |  604 +--
 docs/api/doxygen/tir_2expr_8h__incl.svg            | 1454 +++---
 docs/api/doxygen/tir_2expr_8h_source.html          |   12 +-
 docs/api/doxygen/tir_2expr__functor_8h.html        |    2 +-
 .../doxygen/tir_2expr__functor_8h__dep__incl.svg   |   12 +-
 docs/api/doxygen/tir_2expr__functor_8h__incl.svg   | 1468 +++---
 docs/api/doxygen/tir_2expr__functor_8h_source.html |    6 +-
 docs/api/doxygen/tir_2function_8h.html             |    2 +-
 docs/api/doxygen/tir_2function_8h__dep__incl.svg   |  352 +-
 docs/api/doxygen/tir_2function_8h__incl.svg        | 1639 +++----
 docs/api/doxygen/tir_2function_8h_source.html      |    8 +-
 docs/api/doxygen/tir_2op_8h.html                   |    2 +-
 docs/api/doxygen/tir_2op_8h__dep__incl.svg         |  644 +--
 docs/api/doxygen/tir_2op_8h__incl.svg              | 1842 +++----
 docs/api/doxygen/tir_2op_8h_source.html            |    4 +-
 docs/api/doxygen/tir_2op__attr__types_8h.html      |    2 +-
 .../doxygen/tir_2op__attr__types_8h__dep__incl.svg |  180 +-
 docs/api/doxygen/tir_2op__attr__types_8h__incl.svg | 1230 ++---
 .../doxygen/tir_2op__attr__types_8h_source.html    |    2 +-
 docs/api/doxygen/tir_2schedule_2schedule_8h.html   |    2 +-
 .../doxygen/tir_2schedule_2schedule_8h__incl.svg   | 2329 +++++----
 .../doxygen/tir_2schedule_2schedule_8h_source.html |   14 +-
 docs/api/doxygen/tir_2transform_8h.html            |    2 +-
 docs/api/doxygen/tir_2transform_8h__incl.svg       | 1790 ++++---
 docs/api/doxygen/topi_2nn_8h__dep__incl.svg        |   12 +-
 docs/api/doxygen/topi_2nn_8h__incl.svg             |  752 +--
 docs/api/doxygen/topi_2transform_8h__dep__incl.svg |   60 +-
 docs/api/doxygen/topi_2transform_8h__incl.svg      |  792 +--
 docs/api/doxygen/topi_2transform_8h_source.html    |    4 +-
 docs/api/doxygen/transform__step_8h.html           |    2 +-
 docs/api/doxygen/transform__step_8h__dep__incl.svg |   96 +-
 docs/api/doxygen/transform__step_8h__incl.svg      | 1813 ++++---
 docs/api/doxygen/transform__step_8h_source.html    |   10 +-
 docs/api/doxygen/type__functor_8h.html             |    2 +-
 docs/api/doxygen/type__functor_8h__incl.svg        | 1868 +++----
 docs/api/doxygen/type__functor_8h_source.html      |    8 +-
 docs/api/doxygen/type__relation_8h.html            |    2 +-
 docs/api/doxygen/type__relation_8h__dep__incl.svg  |  580 +--
 docs/api/doxygen/type__relation_8h__incl.svg       | 1550 +++---
 docs/api/doxygen/type__relation_8h_source.html     |    8 +-
 docs/api/doxygen/utils_8h.html                     |    2 +-
 docs/api/doxygen/utils_8h__incl.svg                | 1220 ++---
 docs/api/doxygen/utils_8h_source.html              |    4 +-
 docs/api/doxygen/var_8h.html                       |    2 +-
 docs/api/doxygen/var_8h__dep__incl.svg             |  612 +--
 docs/api/doxygen/var_8h__incl.svg                  | 1230 ++---
 docs/api/doxygen/var_8h_source.html                |   12 +-
 docs/api/doxygen/vision_8h.html                    |    2 +-
 docs/api/doxygen/vision_8h__incl.svg               | 1682 +++----
 docs/api/doxygen/x86_2bnn_8h.html                  |    2 +-
 docs/api/doxygen/x86_2bnn_8h__incl.svg             | 1968 ++++----
 docs/api/doxygen/x86_2bnn_8h_source.html           |    2 +-
 docs/api/doxygen/x86_2default_8h.html              |    2 +-
 docs/api/doxygen/x86_2default_8h__incl.svg         | 2032 ++++----
 docs/api/doxygen/x86_2injective_8h.html            |    2 +-
 docs/api/doxygen/x86_2injective_8h__incl.svg       | 1968 ++++----
 docs/api/links.html                                |    4 +-
 docs/api/python/auto_scheduler.html                |    8 +-
 docs/api/python/autotvm.html                       |    4 +-
 docs/api/python/contrib.html                       |    4 +-
 docs/api/python/driver.html                        |    4 +-
 docs/api/python/error.html                         |    4 +-
 docs/api/python/graph_executor.html                |   10 +-
 docs/api/python/index.html                         |    4 +-
 docs/api/python/ir.html                            |   13 +-
 docs/api/python/micro.html                         |    4 +-
 docs/api/python/ndarray.html                       |    4 +-
 docs/api/python/relay/analysis.html                |    4 +-
 docs/api/python/relay/backend.html                 |    4 +-
 docs/api/python/relay/dataflow_pattern.html        |    4 +-
 docs/api/python/relay/frontend.html                |    4 +-
 docs/api/python/relay/image.html                   |    4 +-
 docs/api/python/relay/index.html                   |  120 +-
 docs/api/python/relay/nn.html                      |   16 +-
 docs/api/python/relay/testing.html                 |    4 +-
 docs/api/python/relay/transform.html               |  107 +-
 docs/api/python/relay/vision.html                  |    4 +-
 docs/api/python/rpc.html                           |    4 +-
 docs/api/python/runtime.html                       |    4 +-
 docs/api/python/target.html                        |    4 +-
 docs/api/python/te.html                            |    4 +-
 docs/api/python/tir.html                           |    4 +-
 docs/api/python/topi.html                          |   42 +-
 docs/api/python/vta/index.html                     |    4 +-
 docs/api/typedoc/classes/bytestreamreader.html     |   12 +-
 docs/api/typedoc/classes/cachedcallstack.html      |   34 +-
 docs/api/typedoc/classes/dldatatype.html           |   12 +-
 docs/api/typedoc/classes/dldevice.html             |   10 +-
 docs/api/typedoc/classes/environment.html          |   12 +-
 docs/api/typedoc/classes/ffilibrary.html           |   20 +-
 docs/api/typedoc/classes/graphexecutor.html        |   16 +-
 docs/api/typedoc/classes/instance.html             |   40 +-
 docs/api/typedoc/classes/memory.html               |   34 +-
 docs/api/typedoc/classes/module.html               |   10 +-
 docs/api/typedoc/classes/ndarray.html              |   22 +-
 docs/api/typedoc/classes/packedfunccell.html       |    6 +-
 docs/api/typedoc/classes/rpcserver.html            |   14 +-
 docs/api/typedoc/classes/scalar.html               |    6 +-
 docs/api/typedoc/classes/webgpucontext.html        |   12 +-
 docs/api/typedoc/enums/argtypecode.html            |   30 +-
 docs/api/typedoc/enums/aynccallbackcode.html       |    4 +-
 docs/api/typedoc/enums/dldatatypecode.html         |    8 +-
 docs/api/typedoc/enums/rpcserverstate.html         |   12 +-
 docs/api/typedoc/enums/sizeof.html                 |   18 +-
 docs/api/typedoc/index.html                        |  112 +-
 docs/api/typedoc/interfaces/disposable.html        |    2 +-
 docs/api/typedoc/interfaces/functioninfo.html      |    6 +-
 docs/api/typedoc/interfaces/libraryprovider.html   |    4 +-
 docs/contribute/code_guide.html                    |    4 +-
 docs/contribute/code_review.html                   |    4 +-
 docs/contribute/committer_guide.html               |    4 +-
 docs/contribute/community.html                     |    4 +-
 docs/contribute/document.html                      |    4 +-
 docs/contribute/error_handling.html                |    4 +-
 docs/contribute/git_howto.html                     |    4 +-
 docs/contribute/index.html                         |    4 +-
 docs/contribute/pull_request.html                  |    4 +-
 docs/contribute/release_process.html               |    4 +-
 docs/deploy/android.html                           |    4 +-
 docs/deploy/arm_compute_lib.html                   |    4 +-
 docs/deploy/bnns.html                              |   43 +-
 docs/deploy/cpp_deploy.html                        |    4 +-
 docs/deploy/hls.html                               |    4 +-
 docs/deploy/index.html                             |    4 +-
 docs/deploy/integrate.html                         |    4 +-
 docs/deploy/tensorrt.html                          |    4 +-
 docs/deploy/vitis_ai.html                          |    4 +-
 docs/dev/benchmark.html                            |    4 +-
 docs/dev/codebase_walkthrough.html                 |   10 +-
 docs/dev/convert_layout.html                       |    4 +-
 docs/dev/debugger.html                             |    5 +-
 docs/dev/device_target_interactions.html           |   70 +-
 docs/dev/frontend/tensorflow.html                  |    4 +-
 docs/dev/how_to.html                               |    4 +-
 docs/dev/hybrid_script.html                        |    4 +-
 docs/dev/index.html                                |   53 +-
 docs/dev/inferbound.html                           |    4 +-
 docs/dev/introduction_to_module_serialization.html |    9 +-
 docs/dev/microtvm_design.html                      |    8 +-
 docs/dev/pass_infra.html                           |    8 +-
 docs/dev/relay_add_op.html                         |    4 +-
 docs/dev/relay_add_pass.html                       |    4 +-
 docs/dev/relay_bring_your_own_codegen.html         |    4 +-
 docs/dev/relay_intro.html                          |    4 +-
 docs/dev/relay_op_strategy.html                    |    4 +-
 docs/dev/runtime.html                              |    5 +-
 docs/dev/runtimes/vulkan.html                      |    5 +-
 docs/dev/security.html                             |    4 +-
 docs/dev/virtual_machine.html                      |    5 +-
 docs/errors.html                                   |   12 +-
 docs/faq.html                                      |   30 +-
 docs/genindex.html                                 |    8 +-
 docs/index.html                                    |    4 +-
 docs/install/docker.html                           |    4 +-
 docs/install/from_source.html                      |    4 +-
 docs/install/index.html                            |    4 +-
 docs/install/nnpack.html                           |    4 +-
 docs/langref/hybrid_script.html                    |    4 +-
 docs/langref/index.html                            |    4 +-
 docs/langref/relay_adt.html                        |    4 +-
 docs/langref/relay_expr.html                       |    4 +-
 docs/langref/relay_op.html                         |    4 +-
 docs/langref/relay_pattern.html                    |    4 +-
 docs/langref/relay_type.html                       |    4 +-
 docs/microtvm/index.html                           |   28 +-
 docs/objects.inv                                   |  Bin 21613 -> 21643 bytes
 docs/py-modindex.html                              |    4 +-
 docs/search.html                                   |    4 +-
 docs/searchindex.js                                |    2 +-
 .../auto_scheduler/sg_execution_times.html         |   18 +-
 .../auto_scheduler/tune_conv2d_layer_cuda.html     |  895 +++-
 .../tutorials/auto_scheduler/tune_network_arm.html |    6 +-
 .../auto_scheduler/tune_network_cuda.html          |    6 +-
 .../auto_scheduler/tune_network_mali.html          |   82 +-
 .../tutorials/auto_scheduler/tune_network_x86.html |    6 +-
 docs/tutorials/auto_scheduler/tune_sparse_x86.html |   72 +-
 docs/tutorials/autotvm/sg_execution_times.html     |   16 +-
 docs/tutorials/autotvm/tune_conv2d_cuda.html       |   48 +-
 docs/tutorials/autotvm/tune_relay_arm.html         |   10 +-
 docs/tutorials/autotvm/tune_relay_cuda.html        |    4 +-
 docs/tutorials/autotvm/tune_relay_mobile_gpu.html  |    4 +-
 docs/tutorials/autotvm/tune_relay_x86.html         |    4 +-
 docs/tutorials/dev/bring_your_own_datatypes.html   |    6 +-
 docs/tutorials/dev/low_level_custom_pass.html      |    4 +-
 docs/tutorials/dev/sg_execution_times.html         |   12 +-
 docs/tutorials/dev/use_pass_infra.html             |    4 +-
 docs/tutorials/frontend/build_gcn.html             |    4 +-
 .../frontend/deploy_model_on_android.html          |    6 +-
 docs/tutorials/frontend/deploy_model_on_rasp.html  |    4 +-
 .../frontend/deploy_object_detection_pytorch.html  |    6 +-
 docs/tutorials/frontend/deploy_prequantized.html   |    6 +-
 .../frontend/deploy_prequantized_tflite.html       |    8 +-
 docs/tutorials/frontend/deploy_quantized.html      |    4 +-
 docs/tutorials/frontend/deploy_sparse.html         |    4 +-
 docs/tutorials/frontend/deploy_ssd_gluoncv.html    |    6 +-
 docs/tutorials/frontend/from_caffe2.html           |    4 +-
 docs/tutorials/frontend/from_coreml.html           |    4 +-
 docs/tutorials/frontend/from_darknet.html          |    4 +-
 docs/tutorials/frontend/from_keras.html            |    4 +-
 docs/tutorials/frontend/from_mxnet.html            |    4 +-
 docs/tutorials/frontend/from_onnx.html             |    6 +-
 docs/tutorials/frontend/from_pytorch.html          |    8 +-
 docs/tutorials/frontend/from_tensorflow.html       |    8 +-
 docs/tutorials/frontend/from_tflite.html           |    4 +-
 docs/tutorials/frontend/sg_execution_times.html    |   44 +-
 docs/tutorials/frontend/using_external_lib.html    |    4 +-
 ...mul_x86.html => auto_scheduler_matmul_x86.html} |   42 +-
 ...autotvm_matmul.html => autotvm_matmul_x86.html} |   49 +-
 ...ing_with_python.html => autotvm_relay_x86.html} |   99 +-
 .../get_started/cross_compilation_and_rpc.html     |   18 +-
 docs/tutorials/get_started/install.html            |   22 +-
 docs/tutorials/get_started/introduction.html       |   98 +-
 docs/tutorials/get_started/relay_quick_start.html  |  136 +-
 docs/tutorials/get_started/sg_execution_times.html |   22 +-
 .../get_started/tensor_expr_get_started.html       |   98 +-
 .../get_started/tvmc_command_line_driver.html      |   18 +-
 docs/tutorials/index.html                          |   90 +-
 docs/tutorials/language/extern_op.html             |    6 +-
 docs/tutorials/language/intrin_math.html           |   10 +-
 docs/tutorials/language/reduction.html             |   24 +-
 docs/tutorials/language/scan.html                  |    6 +-
 docs/tutorials/language/schedule_primitives.html   |   18 +-
 docs/tutorials/language/sg_execution_times.html    |   20 +-
 docs/tutorials/language/tedd.html                  |   10 +-
 docs/tutorials/language/tensorize.html             |   18 +-
 docs/tutorials/language/tuple_inputs.html          |   40 +-
 docs/tutorials/micro/micro_reference_vm.html       |    4 +-
 docs/tutorials/micro/micro_tflite.html             |    4 +-
 docs/tutorials/micro/sg_execution_times.html       |   10 +-
 docs/tutorials/optimize/opt_conv_cuda.html         |    6 +-
 docs/tutorials/optimize/opt_conv_tensorcore.html   |   10 +-
 docs/tutorials/optimize/opt_gemm.html              |   28 +-
 docs/tutorials/optimize/sg_execution_times.html    |   12 +-
 docs/tutorials/topi/intro_topi.html                |    6 +-
 docs/tutorials/topi/sg_execution_times.html        |    8 +-
 docs/vta/dev/config.html                           |    4 +-
 docs/vta/dev/hardware.html                         |    4 +-
 docs/vta/dev/index.html                            |    4 +-
 docs/vta/index.html                                |    8 +-
 docs/vta/install.html                              |    4 +-
 docs/vta/tutorials/autotvm/sg_execution_times.html |   10 +-
 docs/vta/tutorials/autotvm/tune_alu_vta.html       |    4 +-
 docs/vta/tutorials/autotvm/tune_relay_vta.html     |  194 +-
 .../tutorials/frontend/deploy_classification.html  |   22 +-
 .../vta/tutorials/frontend/sg_execution_times.html |    8 +-
 docs/vta/tutorials/index.html                      |    4 +-
 docs/vta/tutorials/matrix_multiply.html            |    8 +-
 docs/vta/tutorials/optimize/convolution_opt.html   |   12 +-
 .../tutorials/optimize/matrix_multiply_opt.html    |    8 +-
 .../vta/tutorials/optimize/sg_execution_times.html |   10 +-
 docs/vta/tutorials/sg_execution_times.html         |   10 +-
 docs/vta/tutorials/vta_get_started.html            |    4 +-
 878 files changed, 132084 insertions(+), 126683 deletions(-)

diff --git a/docs/_downloads/18fb1ab3ed0a0c9f304520f2beaf4fd6/tvmc_command_line_driver.py b/docs/_downloads/18fb1ab3ed0a0c9f304520f2beaf4fd6/tvmc_command_line_driver.py
index fffbfbf..d9174da 100644
--- a/docs/_downloads/18fb1ab3ed0a0c9f304520f2beaf4fd6/tvmc_command_line_driver.py
+++ b/docs/_downloads/18fb1ab3ed0a0c9f304520f2beaf4fd6/tvmc_command_line_driver.py
@@ -494,5 +494,5 @@ capabilities, and set the stage for understanding how TVM works.
 # --help``.
 #
 # In the next tutorial, `Compiling and Optimizing a Model with the Python
-# AutoScheduler <auto_tuning_with_pyton>`_, we will cover the same compilation
+# Interface <auto_tuning_with_pyton>`_, we will cover the same compilation
 # and optimization steps using the Python interface.
diff --git a/docs/_downloads/5605e45978c6b29c0434162ad6899d08/autotvm_matmul.ipynb b/docs/_downloads/1c56ea64f39bea4084f04ec0959030ed/autotvm_matmul_x86.ipynb
similarity index 91%
rename from docs/_downloads/5605e45978c6b29c0434162ad6899d08/autotvm_matmul.ipynb
rename to docs/_downloads/1c56ea64f39bea4084f04ec0959030ed/autotvm_matmul_x86.ipynb
index 4db0d8e..049b3d7 100644
--- a/docs/_downloads/5605e45978c6b29c0434162ad6899d08/autotvm_matmul.ipynb
+++ b/docs/_downloads/1c56ea64f39bea4084f04ec0959030ed/autotvm_matmul_x86.ipynb
@@ -15,7 +15,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "\nOptimizing Operators with Templates and AutoTVM\n===============================================\n**Authors**:\n`Lianmin Zheng <https://github.com/merrymercy>`_,\n`Chris Hoge <https://github.com/hogepodge>`_\n\nIn this tutorial, we will now show how the TVM Template Extension (TE) language\ncan be used to write scheduling templates that can be searched by AutoTVM to\nfind optimal configurations of scheduling variables. This process is called\nAuto-Tuning, and builds on TE to h [...]
+        "\n\nOptimizing Operators with Schedule Templates and AutoTVM\n========================================================\n**Authors**:\n`Lianmin Zheng <https://github.com/merrymercy>`_,\n`Chris Hoge <https://github.com/hogepodge>`_\n\nIn this tutorial, we show how the TVM Tensor Expression (TE) language\ncan be used to write schedule templates that can be searched by AutoTVM to\nfind the optimal schedule. This process is called Auto-Tuning, which helps\nautomate the process of opt [...]
       ]
     },
     {
@@ -194,7 +194,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Final Notes and Summary\n-----------------------\nIn this tutorial, we have shown how to build operator templates that allow\nTVM to search a parameter space and choose optimized schedule configurations.\nTo gain a deeper understanding of how this works, we recommend expanding on\nthis example by adding new search parameters to the schedule based on\nschedule operations demonstated in the `Getting Started With Tensor\nExpressions <tensor_expr_get_started>_` tutorial In the upcom [...]
+        "Final Notes and Summary\n-----------------------\nIn this tutorial, we have shown how to build operator templates that allow\nTVM to search a parameter space and choose optimized schedule configurations.\nTo gain a deeper understanding of how this works, we recommend expanding on\nthis example by adding new search parameters to the schedule based on\nschedule operations demonstated in the `Getting Started With Tensor\nExpressions <tensor_expr_get_started>_` tutorial. In the upco [...]
       ]
     }
   ],
diff --git a/docs/_downloads/2354a24ad8bc07194943c49f2fb48874/tune_conv2d_cuda.ipynb b/docs/_downloads/2354a24ad8bc07194943c49f2fb48874/tune_conv2d_cuda.ipynb
index e8d0fee..f5a049b 100644
--- a/docs/_downloads/2354a24ad8bc07194943c49f2fb48874/tune_conv2d_cuda.ipynb
+++ b/docs/_downloads/2354a24ad8bc07194943c49f2fb48874/tune_conv2d_cuda.ipynb
@@ -40,7 +40,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Step 1:  Define the search space\n--------------------------------\nThere are plenty of useful schedule primitives in tvm. You can also find\nsome tutorials that describe them in more details, such as\n(1). `opt-conv-gpu`\n(2). `Optimizing DepthwiseConv on NVIDIA GPU <https://tvm.apache.org/2017/08/22/Optimize-Deep-Learning-GPU-Operators-with-TVM-A-Depthwise-Convolution-Example>`_\n\nHowever, their implementations are manually tuned for some special input\nshapes. In this sectio [...]
+        "Step 1:  Define the search space\n--------------------------------\nThere are plenty of useful schedule primitives in tvm. You can also find\nsome tutorials that describe them in more details, such as\n(1). `opt-conv-gpu`\n(2). `Optimizing DepthwiseConv on NVIDIA GPU <https://tvm.apache.org/2017/08/22/Optimize-Deep-Learning-GPU-Operators-with-TVM-A-Depthwise-Convolution-Example>`_\n\nHowever, their implementations are manually tuned for some special input\nshapes. In this sectio [...]
       ]
     },
     {
diff --git a/docs/_downloads/2c8ef0390ad4c53ca85671fa36c33b26/tune_conv2d_cuda.py b/docs/_downloads/2c8ef0390ad4c53ca85671fa36c33b26/tune_conv2d_cuda.py
index 4e80a74..ef92156 100644
--- a/docs/_downloads/2c8ef0390ad4c53ca85671fa36c33b26/tune_conv2d_cuda.py
+++ b/docs/_downloads/2c8ef0390ad4c53ca85671fa36c33b26/tune_conv2d_cuda.py
@@ -77,7 +77,7 @@ from tvm import autotvm
 # to tune other operators such as depthwise convolution and gemm.
 # In order to fully understand this template, you should be familiar with
 # the schedule primitives and auto tuning API. You can refer to the above
-# tutorials and :doc:`autotvm tutorial <tune_simple_template>`
+# tutorials and :ref:`autotvm tutorial <tutorial-autotvm-matmul-x86>`
 #
 # It is worth noting that the search space for a conv2d operator
 # can be very large (at the level of 10^9 for some input shapes)
diff --git a/docs/_downloads/37c76200603adf82ebeffc23bdef8d31/tensor_expr_get_started.py b/docs/_downloads/37c76200603adf82ebeffc23bdef8d31/tensor_expr_get_started.py
index ee13d9e..8fbdb75 100644
--- a/docs/_downloads/37c76200603adf82ebeffc23bdef8d31/tensor_expr_get_started.py
+++ b/docs/_downloads/37c76200603adf82ebeffc23bdef8d31/tensor_expr_get_started.py
@@ -17,22 +17,19 @@
 """
 .. _tutorial-tensor-expr-get-started:
 
-Working with Operators Using Tensor Expressions
-===============================================
+Working with Operators Using Tensor Expression
+==============================================
 **Author**: `Tianqi Chen <https://tqchen.github.io>`_
 
 In this tutorial we will turn our attention to how TVM works with Tensor
-Expressions (TE) to create a space to search for performant configurations. TE
+Expression (TE) to define tensor computations and apply loop optimizations. TE
 describes tensor computations in a pure functional language (that is each
 expression has no side effects). When viewed in context of the TVM as a whole,
 Relay describes a computation as a set of operators, and each of these
 operators can be represented as a TE expression where each TE expression takes
-input tensors and produces an output tensor. It's important to note that the
-tensor isn't necessarily a fully materialized array, rather it is a
-representation of a computation. If you want to produce a computation from a
-TE, you will need to use the scheduling features of TVM.
+input tensors and produces an output tensor.
 
-This is an introductory tutorial to the Tensor expression language in TVM. TVM
+This is an introductory tutorial to the Tensor Expression language in TVM. TVM
 uses a domain specific tensor expression for efficient kernel construction. We
 will demonstrate the basic workflow with two examples of using the tensor expression
 language. The first example introduces TE and scheduling with vector
@@ -47,8 +44,8 @@ features of TVM.
 # ---------------------------------------------------------------
 #
 # Let's look at an example in Python in which we will implement a TE for
-# vector addition, followed by a schedule targeted towards a CPU. We begin by initializing a TVM
-# environment.
+# vector addition, followed by a schedule targeted towards a CPU.
+# We begin by initializing a TVM environment.
 
 import tvm
 import tvm.testing
@@ -59,7 +56,8 @@ import numpy as np
 # and specify it. If you're using llvm, you can get this information from the
 # command ``llc --version`` to get the CPU type, and you can check
 # ``/proc/cpuinfo`` for additional extensions that your processor might
-# support. For example, ``tgt = "llvm -mcpu=`skylake`
+# support. For example, you can use "llvm -mcpu=skylake-avx512" for CPUs with
+# AVX-512 instructions.
 
 tgt = tvm.target.Target(target="llvm", host="llvm")
 
@@ -69,7 +67,7 @@ tgt = tvm.target.Target(target="llvm", host="llvm")
 # We describe a vector addition computation. TVM adopts tensor semantics, with
 # each intermediate result represented as a multi-dimensional array. The user
 # needs to describe the computation rule that generates the tensors. We first
-# define a symbolic variable n to represent the shape. We then define two
+# define a symbolic variable ``n`` to represent the shape. We then define two
 # placeholder Tensors, ``A`` and ``B``, with given shape ``(n,)``. We then
 # describe the result tensor ``C``, with a ``compute`` operation. The
 # ``compute`` defines a computation, with the output conforming to the
@@ -79,7 +77,6 @@ tgt = tvm.target.Target(target="llvm", host="llvm")
 # tensors. Remember, no actual computation happens during this phase, as we
 # are only declaring how the computation should be done.
 
-
 n = te.var("n")
 A = te.placeholder((n,), name="A")
 B = te.placeholder((n,), name="B")
@@ -88,10 +85,10 @@ C = te.compute(A.shape, lambda i: A[i] + B[i], name="C")
 ################################################################################
 # .. note:: Lambda Functions
 #
-# The second argument to the ``te.compute`` method is the function that
-# performs the computation. In this example, we're using an anonymous function,
-# also known as a ``lambda`` function, to define the computation, in this case
-# addition on the ``i``th element of ``A`` and ``B``.
+#   The second argument to the ``te.compute`` method is the function that
+#   performs the computation. In this example, we're using an anonymous function,
+#   also known as a ``lambda`` function, to define the computation, in this case
+#   addition on the ``i``th element of ``A`` and ``B``.
 
 ################################################################################
 # Create a Default Schedule for the Computation
@@ -322,8 +319,6 @@ if run_cuda:
 
     bx, tx = s[C].split(C.op.axis[0], factor=64)
 
-    xXXXXXXXx
-
     ################################################################################
     # Finally we must bind the iteration axis bx and tx to threads in the GPU
     # compute grid. The naive schedule is not valid for GPUs, and these are
diff --git a/docs/_downloads/4c010cd30d80efae3f2dfe5743a098a5/install.ipynb b/docs/_downloads/4c010cd30d80efae3f2dfe5743a098a5/install.ipynb
index c388946..f54e469 100644
--- a/docs/_downloads/4c010cd30d80efae3f2dfe5743a098a5/install.ipynb
+++ b/docs/_downloads/4c010cd30d80efae3f2dfe5743a098a5/install.ipynb
@@ -15,7 +15,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "\nInstalling TVM\n==============\n**Authors**:\n`Jocelyn Shiue <https://github.com/>`_,\n`Chris Hoge <https://github.com/hogepodge>`_\n\nDepending on your needs and your working environment, there are a few different\nmethods for installing TVM. These include:\n    * Installing from source \n    * Installing from third-party binary package.\n\n"
+        "\nInstalling TVM\n==============\n**Authors**:\n`Jocelyn Shiue <https://github.com/>`_,\n`Chris Hoge <https://github.com/hogepodge>`_\n\nDepending on your needs and your working environment, there are a few different\nmethods for installing TVM. These include:\n* Installing from source\n* Installing from third-party binary package.\n\n"
       ]
     },
     {
diff --git a/docs/_downloads/70a0767409e81bb5aaa9ce4e7a151dec/tensor_expr_get_started.ipynb b/docs/_downloads/70a0767409e81bb5aaa9ce4e7a151dec/tensor_expr_get_started.ipynb
index d840260..0c845d6 100644
--- a/docs/_downloads/70a0767409e81bb5aaa9ce4e7a151dec/tensor_expr_get_started.ipynb
+++ b/docs/_downloads/70a0767409e81bb5aaa9ce4e7a151dec/tensor_expr_get_started.ipynb
@@ -15,14 +15,14 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "\n\nWorking with Operators Using Tensor Expressions\n===============================================\n**Author**: `Tianqi Chen <https://tqchen.github.io>`_\n\nIn this tutorial we will turn our attention to how TVM works with Tensor\nExpressions (TE) to create a space to search for performant configurations. TE\ndescribes tensor computations in a pure functional language (that is each\nexpression has no side effects). When viewed in context of the TVM as a whole,\nRelay describes [...]
+        "\n\nWorking with Operators Using Tensor Expression\n==============================================\n**Author**: `Tianqi Chen <https://tqchen.github.io>`_\n\nIn this tutorial we will turn our attention to how TVM works with Tensor\nExpression (TE) to define tensor computations and apply loop optimizations. TE\ndescribes tensor computations in a pure functional language (that is each\nexpression has no side effects). When viewed in context of the TVM as a whole,\nRelay describes a [...]
       ]
     },
     {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Example 1: Writing and Scheduling Vector Addition in TE for CPU\n---------------------------------------------------------------\n\nLet's look at an example in Python in which we will implement a TE for\nvector addition, followed by a schedule targeted towards a CPU. We begin by initializing a TVM\nenvironment.\n\n"
+        "Example 1: Writing and Scheduling Vector Addition in TE for CPU\n---------------------------------------------------------------\n\nLet's look at an example in Python in which we will implement a TE for\nvector addition, followed by a schedule targeted towards a CPU.\nWe begin by initializing a TVM environment.\n\n"
       ]
     },
     {
@@ -33,14 +33,14 @@
       },
       "outputs": [],
       "source": [
-        "import tvm\nimport tvm.testing\nfrom tvm import te\nimport numpy as np\n\n# You will get better performance if you can identify the CPU you are targeting\n# and specify it. If you're using llvm, you can get this information from the\n# command ``llc --version`` to get the CPU type, and you can check\n# ``/proc/cpuinfo`` for additional extensions that your processor might\n# support. For example, ``tgt = \"llvm -mcpu=`skylake`\n\ntgt = tvm.target.Target(target=\"llvm\", host=\"llvm\")"
+        "import tvm\nimport tvm.testing\nfrom tvm import te\nimport numpy as np\n\n# You will get better performance if you can identify the CPU you are targeting\n# and specify it. If you're using llvm, you can get this information from the\n# command ``llc --version`` to get the CPU type, and you can check\n# ``/proc/cpuinfo`` for additional extensions that your processor might\n# support. For example, you can use \"llvm -mcpu=skylake-avx512\" for CPUs with\n# AVX-512 instructions.\n\n [...]
       ]
     },
     {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Describing the Vector Computation\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nWe describe a vector addition computation. TVM adopts tensor semantics, with\neach intermediate result represented as a multi-dimensional array. The user\nneeds to describe the computation rule that generates the tensors. We first\ndefine a symbolic variable n to represent the shape. We then define two\nplaceholder Tensors, ``A`` and ``B``, with given shape ``(n,)``. We then\ndescribe the result tensor ``C``,  [...]
+        "Describing the Vector Computation\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nWe describe a vector addition computation. TVM adopts tensor semantics, with\neach intermediate result represented as a multi-dimensional array. The user\nneeds to describe the computation rule that generates the tensors. We first\ndefine a symbolic variable ``n`` to represent the shape. We then define two\nplaceholder Tensors, ``A`` and ``B``, with given shape ``(n,)``. We then\ndescribe the result tensor ``C [...]
       ]
     },
     {
@@ -58,7 +58,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "<div class=\"alert alert-info\"><h4>Note</h4><p>Lambda Functions</p></div>\n\nThe second argument to the ``te.compute`` method is the function that\nperforms the computation. In this example, we're using an anonymous function,\nalso known as a ``lambda`` function, to define the computation, in this case\naddition on the ``i``th element of ``A`` and ``B``.\n\n"
+        "<div class=\"alert alert-info\"><h4>Note</h4><p>Lambda Functions\n\n  The second argument to the ``te.compute`` method is the function that\n  performs the computation. In this example, we're using an anonymous function,\n  also known as a ``lambda`` function, to define the computation, in this case\n  addition on the ``i``th element of ``A`` and ``B``.</p></div>\n\n"
       ]
     },
     {
@@ -252,7 +252,7 @@
       },
       "outputs": [],
       "source": [
-        "# If you want to run this code, change ``run_cuda = True``\n# Note that by default this example is not run in the docs CI.\n\nrun_cuda = False\nif run_cuda:\n    # Change this target to the correct backend for you gpu. For example: cuda (NVIDIA GPUs),\n    # rocm (Radeon GPUS), OpenCL (opencl).\n    tgt_gpu = tvm.target.Target(target=\"cuda\", host=\"llvm\")\n\n    # Recreate the schedule\n    n = te.var(\"n\")\n    A = te.placeholder((n,), name=\"A\")\n    B = te.placeholder((n [...]
+        "# If you want to run this code, change ``run_cuda = True``\n# Note that by default this example is not run in the docs CI.\n\nrun_cuda = False\nif run_cuda:\n    # Change this target to the correct backend for you gpu. For example: cuda (NVIDIA GPUs),\n    # rocm (Radeon GPUS), OpenCL (opencl).\n    tgt_gpu = tvm.target.Target(target=\"cuda\", host=\"llvm\")\n\n    # Recreate the schedule\n    n = te.var(\"n\")\n    A = te.placeholder((n,), name=\"A\")\n    B = te.placeholder((n [...]
       ]
     },
     {
diff --git a/docs/_downloads/ba83c0c088bfea1dc14806773e24bee8/auto_tuning_with_python.ipynb b/docs/_downloads/7ba56b899e0cc8ebdb274901ddb3d351/autotvm_relay_x86.ipynb
similarity index 88%
rename from docs/_downloads/ba83c0c088bfea1dc14806773e24bee8/auto_tuning_with_python.ipynb
rename to docs/_downloads/7ba56b899e0cc8ebdb274901ddb3d351/autotvm_relay_x86.ipynb
index 03f36b2..951ff8d 100644
--- a/docs/_downloads/ba83c0c088bfea1dc14806773e24bee8/auto_tuning_with_python.ipynb
+++ b/docs/_downloads/7ba56b899e0cc8ebdb274901ddb3d351/autotvm_relay_x86.ipynb
@@ -15,7 +15,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "\nCompiling and Optimizing a Model with the Python AutoScheduler\n==============================================================\n**Author**:\n`Chris Hoge <https://github.com/hogepodge>`_\n\nIn the `TVMC Tutorial <tvmc_command_line_driver>`_, we covered how to compile, run, and tune a\npre-trained vision model, ResNet-50-v2 using the command line interface for\nTVM, TVMC. TVM is more that just a command-line tool though, it is an\noptimizing framework with APIs available for a n [...]
+        "\nCompiling and Optimizing a Model with the Python Interface (AutoTVM)\n====================================================================\n**Author**:\n`Chris Hoge <https://github.com/hogepodge>`_\n\nIn the `TVMC Tutorial <tvmc_command_line_driver>`_, we covered how to compile, run, and tune a\npre-trained vision model, ResNet-50-v2 using the command line interface for\nTVM, TVMC. TVM is more that just a command-line tool though, it is an\noptimizing framework with APIs avail [...]
       ]
     },
     {
@@ -184,7 +184,7 @@
       },
       "outputs": [],
       "source": [
-        "import tvm.auto_scheduler as auto_scheduler\nfrom tvm.autotvm.tuner import XGBTuner\nfrom tvm import autotvm\n\n# Set up some basic parameters for the runner. The runner takes compiled code\n# that is generated with a specific set of parameters and measures the\n# performance of it. ``number`` specifies the number of different\n# configurations that we will test, while ``repeat`` specifies how many\n# measurements we will take of each configuration. ``min_repeat_ms`` is a value\ [...]
+        "import tvm.auto_scheduler as auto_scheduler\nfrom tvm.autotvm.tuner import XGBTuner\nfrom tvm import autotvm\n\n# Set up some basic parameters for the runner. The runner takes compiled code\n# that is generated with a specific set of parameters and measures the\n# performance of it. ``number`` specifies the number of different\n# configurations that we will test, while ``repeat`` specifies how many\n# measurements we will take of each configuration. ``min_repeat_ms`` is a value\ [...]
       ]
     },
     {
diff --git a/docs/_downloads/95f64205f29091c5f31071f9072f3236/install.py b/docs/_downloads/95f64205f29091c5f31071f9072f3236/install.py
index 6d1db4d..efc951a 100644
--- a/docs/_downloads/95f64205f29091c5f31071f9072f3236/install.py
+++ b/docs/_downloads/95f64205f29091c5f31071f9072f3236/install.py
@@ -23,8 +23,8 @@ Installing TVM
 
 Depending on your needs and your working environment, there are a few different
 methods for installing TVM. These include:
-    * Installing from source 
-    * Installing from third-party binary package.
+* Installing from source
+* Installing from third-party binary package.
 """
 
 ################################################################################
diff --git a/docs/_downloads/9c47ef19ddae24b555c61973e482829d/introduction.py b/docs/_downloads/9c47ef19ddae24b555c61973e482829d/introduction.py
index 0ee79d3..0746c39 100644
--- a/docs/_downloads/9c47ef19ddae24b555c61973e482829d/introduction.py
+++ b/docs/_downloads/9c47ef19ddae24b555c61973e482829d/introduction.py
@@ -19,7 +19,8 @@ Introduction
 ============
 **Authors**:
 `Jocelyn Shiue <https://github.com/>`_,
-`Chris Hoge <https://github.com/hogepodge>`_
+`Chris Hoge <https://github.com/hogepodge>`_,
+`Lianmin Zheng <https://github.com/merrymercy>`_
 
 Apache TVM is an open source machine learning compiler framework for CPUs,
 GPUs, and machine learning accelerators. It aims to enable machine learning
@@ -35,11 +36,11 @@ Contents
 
 #. :doc:`Introduction <introduction>`
 #. :doc:`Installing TVM <install>`
-#. :doc:`Compiling and Optimizing a Model with TVMC <tvmc_command_line_driver>`
-#. :doc:`Compiling and Optimizing a Model with the Python AutoScheduler <auto_tuning_with_python>`
-#. :doc:`Working with Operators Using Tensor Expressions <tensor_expr_get_started>`
-#. :doc:`Optimizing Operators with Templates and AutoTVM <autotvm_matmul>`
-#. :doc:`Optimizing Operators with AutoScheduling <tune_matmul_x86>`
+#. :doc:`Compiling and Optimizing a Model with the Command Line Interface <tvmc_command_line_driver>`
+#. :doc:`Compiling and Optimizing a Model with the Python Interface <autotvm_relay_x86>`
+#. :doc:`Working with Operators Using Tensor Expression <tensor_expr_get_started>`
+#. :doc:`Optimizing Operators with Templates and AutoTVM <autotvm_matmul_x86>`
+#. :doc:`Optimizing Operators with Template-free AutoScheduler <auto_scheduler_matmul_x86>`
 #. :doc:`Cross Compilation and Remote Procedure Calls (RPC) <cross_compilation_and_rpc>`
 #. :doc:`Compiling Deep Learning Models for GPUs <relay_quick_start>`
 """
@@ -51,18 +52,18 @@ Contents
 # The diagram below illustrates the steps a machine model takes as it is
 # transformed with the TVM optimizing compiler framework.
 #
-# .. image:: https://raw.githubusercontent.com/hogepodge/web-data/c339ebbbae41f3762873147c1e920a53a08963dd/images/getting_started/overview.png
+# .. image:: https://raw.githubusercontent.com/apache/tvm-site/main/images/tutorial/overview.png
 #   :width: 100%
 #   :alt: A High Level View of TVM
 #
 # 1. Import the model from a framework like *Tensorflow*, *Pytorch*, or *Onnx*.
 #    The importer layer is where TVM can ingest models from other frameworks, like
-#    ONNX, Tensorflow, or PyTorch. The level of support that TVM offers for each
+#    Tensorflow, PyTorch, or ONNX. The level of support that TVM offers for each
 #    frontend varies as we are constantly improving the open source project. If
 #    you're having issues importing your model into TVM, you may want to try
 #    converting it to ONNX.
 #
-# 2. Translate to *Relay*, TVM's high level model language.
+# 2. Translate to *Relay*, TVM's high-level model language.
 #    A model that has been imported into TVM is represented in Relay. Relay is a
 #    functional language and intermediate representation (IR) for neural networks.
 #    It has support for:
@@ -72,46 +73,47 @@ Contents
 #      differentiable language
 #    - Ability to allow the user to mix the two programming styles
 #
-#    Relay applies several high-level optimization to the model, after which
-#    is runs the Relay Fusion Pass. To aid in the process of converting to
-#    Relay, TVM includes a Tensor Operator Inventory (TOPI) that has pre-defined
-#    templates of common computations.
+#    Relay applies graph-level optimization passes to optimize the model.
 #
 # 3. Lower to *Tensor Expression* (TE) representation. Lowering is when a
 #    higher-level representation is transformed into a lower-level
-#    representation. In Relay Fusion Pass, the model is lowered from the
-#    higher-level Relay representation into a smaller set of subgraphs, where
-#    each node is a task. A task is a collection of computation templates,
-#    expressed in TE, where there parameters of the template can control how
-#    the computation is carried out on hardware. The specific ordering of compuation,
-#    defined by parameters to the TE template, is called a schedule.
-#
-# 4. Search for optimized schedule using *AutoTVM* or *AutoScheduler* for each
-#    task through tuning. Tuning is the process of searching the TE parameter
-#    space for a schedule that is optimized for target hardware. There are
-#    couple of optimization options available, each requiring varying levels of
-#    user interaction. The optimization options include:
-#
-#    - **AutoTVM**: The user specifies a search template for the schedule of a TE task,
-#      or TE subraph. AutoTVM directs the search of the parameter space defined by the
-#      template to produce an optimized configuration. AutoTVM requires users to
-#      define manually templates for each operator as part of the TOPI.
-#    - **Ansor/AutoSchedule**: Using a TVM Operator Inventory (TOPI) of operations,
-#      Ansor can automatically search an optimization space with much less
-#      intervention and guidance from the end user. Ansor depends on TE templates to
-#      guide the search.
-#
-# 5. Choose the optimal configuration for the model. After tuning, an optimal schedule
-#    for each task is chosen. Regardless if it is AutoTVM or AutoSchedule,
-#    schedule records in JSON format are produced that are referred to by this step
-#    to build an optimized model.
-#
-# 6. Lower to a hardware specific compiler. After selecting an optimized configuration
-#    based on the tuning step, the model is then lowered to a representation
-#    expected by the target compiler for the hardware platform. This is the
-#    final code generation phase with the intention of producing an optimized
-#    model that can be deployed into production. TVM supports a number of
-#    different compiler backends including:
+#    representation. After applying the high-level optimizations, Relay
+#    runs FuseOps pass to partition the model into many small subgraphs and lowers
+#    the subgraphs to TE representation. Tensor Expression (TE) is a
+#    domain-specific language for describing tensor computations.
+#    TE also provides several *schedule* primitives to specify low-level loop
+#    optimizations, such as tiling, vectorization, parallelization,
+#    unrolling, and fusion.
+#    To aid in the process of converting Relay representation into TE representation,
+#    TVM includes a Tensor Operator Inventory (TOPI) that has pre-defined
+#    templates of common tensor operators (e.g., conv2d, transpose).
+#
+# 4. Search for the best schedule using the auto-tuning module *AutoTVM* or *AutoScheduler*.
+#    A schedule specifies the low-level loop optimizations for an operator or
+#    subgraph defined in TE. Auto-tuning modules search for the best schedule
+#    and compare them with cost models and on-device measurements.
+#    There are two auto-tuning modules in TVM.
+#
+#    - **AutoTVM**: A template-based auto-tuning module. It runs search algorithms
+#      to find the best values for the tunable knobs in a user-defined template.
+#      For common operators, their templates are already provided in TOPI.
+#    - **AutoScheduler (a.k.a. Ansor)**: A template-free auto-tuning module.
+#      It does not require pre-defined schedule templates. Instead, it generates
+#      the search space automatically by analyzing the computation definition.
+#      It then searches for the best schedule in the generated search space.
+#
+# 5. Choose the optimal configurations for model compilation. After tuning, the
+#    auto-tuning module generates tuning records in JSON format. This step
+#    picks the best schedule for each subgraph.
+#
+# 6. Lower to Tensor Intermediate Representation (TIR), TVM's low-level
+#    intermediate representation. After selecting the optimal configurations
+#    based on the tuning step, each TE subgraph is lowered to TIR and be
+#    optimized by low-level optimization passes. Next, the optimized TIR is
+#    lowered to the target compiler of the hardware platform.
+#    This is the final code generation phase to produce an optimized model
+#    that can be deployed into production. TVM supports several different
+#    compiler backends including:
 #
 #    - LLVM, which can target arbitrary microprocessor architecture including
 #      standard x86 and ARM processors, AMDGPU and NVPTX code generation, and any
diff --git a/docs/_downloads/b78890bb249aab574c50f16eb0be62a9/tune_network_arm.ipynb b/docs/_downloads/b78890bb249aab574c50f16eb0be62a9/tune_network_arm.ipynb
index d0e8355..13f01c9 100644
--- a/docs/_downloads/b78890bb249aab574c50f16eb0be62a9/tune_network_arm.ipynb
+++ b/docs/_downloads/b78890bb249aab574c50f16eb0be62a9/tune_network_arm.ipynb
@@ -133,7 +133,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Other Tips\n----------\n1. During the tuning, the auto-scheduler needs to compile many programs and\n   extract feature from them. This part is CPU-intensive,\n   so a high-performance CPU with many cores is recommended for faster search.\n2. You can use :code:`python3 -m tvm.auto_scheduler.measure_record --mode distill -i log.json`\n   to distill the large log file and only save the best useful records.\n3. You can resume a search from the previous log file. You just need to\n  [...]
+        "Other Tips\n----------\n1. During the tuning, the auto-scheduler needs to compile many programs and\n   extract feature from them. This part is CPU-intensive,\n   so a high-performance CPU with many cores is recommended for faster search.\n2. You can use :code:`python3 -m tvm.auto_scheduler.measure_record --mode distill -i log.json`\n   to distill the large log file and only save the best useful records.\n3. You can resume a search from the previous log file. You just need to\n  [...]
       ]
     }
   ],
diff --git a/docs/_downloads/baf1373314e0e040008107ff2571b4cd/tune_relay_arm.py b/docs/_downloads/baf1373314e0e040008107ff2571b4cd/tune_relay_arm.py
index 68d263b..debf8b8 100644
--- a/docs/_downloads/baf1373314e0e040008107ff2571b4cd/tune_relay_arm.py
+++ b/docs/_downloads/baf1373314e0e040008107ff2571b4cd/tune_relay_arm.py
@@ -278,6 +278,10 @@ def tune_tasks(
             tuner_obj = XGBTuner(tsk, loss_type="rank")
         elif tuner == "xgb_knob":
             tuner_obj = XGBTuner(tsk, loss_type="rank", feature_type="knob")
+        elif tuner == "xgb_itervar":
+            tuner_obj = XGBTuner(tsk, loss_type="rank", feature_type="itervar")
+        elif tuner == "xgb_curve":
+            tuner_obj = XGBTuner(tsk, loss_type="rank", feature_type="curve")
         elif tuner == "ga":
             tuner_obj = GATuner(tsk, pop_size=50)
         elif tuner == "random":
@@ -291,7 +295,7 @@ def tune_tasks(
             if os.path.isfile(tmp_log_file):
                 tuner_obj.load_history(autotvm.record.load_from_file(tmp_log_file))
 
-        # do tuning
+        # process tuning
         tsk_trial = min(n_trial, len(tsk.config_space))
         tuner_obj.tune(
             n_trial=tsk_trial,
diff --git a/docs/_downloads/c4d683ae80a4b8a011286f239422638a/deploy_classification.ipynb b/docs/_downloads/c4d683ae80a4b8a011286f239422638a/deploy_classification.ipynb
index 78b0aa6..97471a7 100644
--- a/docs/_downloads/c4d683ae80a4b8a011286f239422638a/deploy_classification.ipynb
+++ b/docs/_downloads/c4d683ae80a4b8a011286f239422638a/deploy_classification.ipynb
@@ -76,7 +76,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Build the inference graph executor\n---------------------------------\nGrab vision model from Gluon model zoo and compile with Relay.\nThe compilation steps are:\n\n1. Front end translation from MxNet into Relay module.\n2. Apply 8-bit quantization: here we skip the first conv layer,\n   and dense layer which will both be executed in fp32 on the CPU.\n3. Perform graph packing to alter the data layout for tensorization.\n4. Perform constant folding to reduce number of operators ( [...]
+        "Build the inference graph executor\n----------------------------------\nGrab vision model from Gluon model zoo and compile with Relay.\nThe compilation steps are:\n\n1. Front end translation from MxNet into Relay module.\n2. Apply 8-bit quantization: here we skip the first conv layer,\n   and dense layer which will both be executed in fp32 on the CPU.\n3. Perform graph packing to alter the data layout for tensorization.\n4. Perform constant folding to reduce number of operators  [...]
       ]
     },
     {
diff --git a/docs/_downloads/41a7d69f33d4708ae5b843474adf9c9e/tune_matmul_x86.py b/docs/_downloads/ca1e46b7753fde55e274840c315f6b1a/auto_scheduler_matmul_x86.py
similarity index 99%
rename from docs/_downloads/41a7d69f33d4708ae5b843474adf9c9e/tune_matmul_x86.py
rename to docs/_downloads/ca1e46b7753fde55e274840c315f6b1a/auto_scheduler_matmul_x86.py
index 8156d0e..f9fb361 100644
--- a/docs/_downloads/41a7d69f33d4708ae5b843474adf9c9e/tune_matmul_x86.py
+++ b/docs/_downloads/ca1e46b7753fde55e274840c315f6b1a/auto_scheduler_matmul_x86.py
@@ -23,7 +23,7 @@ Optimizing Operators with Auto-scheduling
 In this tutorial, we will show how TVM's Auto Scheduling feature can find
 optimal schedules without the need for writing a custom template.
 
-Different from the template-based :ref:`<autotvm_matmul>` which relies on
+Different from the template-based :doc:`AutoTVM <autotvm_matmul_x86>` which relies on
 manual templates to define the search space, the auto-scheduler does not
 require any templates.  Users only need to write the computation declaration
 without any schedule commands or templates.  The auto-scheduler can
diff --git a/docs/_downloads/dfa0880631b34bb8814952afdc9031d8/tvmc_command_line_driver.ipynb b/docs/_downloads/dfa0880631b34bb8814952afdc9031d8/tvmc_command_line_driver.ipynb
index e663bf7..e70dd56 100644
--- a/docs/_downloads/dfa0880631b34bb8814952afdc9031d8/tvmc_command_line_driver.ipynb
+++ b/docs/_downloads/dfa0880631b34bb8814952afdc9031d8/tvmc_command_line_driver.ipynb
@@ -106,7 +106,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Final Remarks\n-------------\n\nIn this tutorial, we presented TVMC, a command line driver for TVM. We\ndemonstrated how to compile, run, and tune a model. We also discussed the\nneed for pre and post-processing of inputs and outputs. After the tuning\nprocess, we demonstrated how to compare the performance of the unoptimized\nand optimize models.\n\nHere we presented a simple example using ResNet 50 V2 locally. However, TVMC\nsupports many more features including cross-compilat [...]
+        "Final Remarks\n-------------\n\nIn this tutorial, we presented TVMC, a command line driver for TVM. We\ndemonstrated how to compile, run, and tune a model. We also discussed the\nneed for pre and post-processing of inputs and outputs. After the tuning\nprocess, we demonstrated how to compare the performance of the unoptimized\nand optimize models.\n\nHere we presented a simple example using ResNet 50 V2 locally. However, TVMC\nsupports many more features including cross-compilat [...]
       ]
     }
   ],
diff --git a/docs/_downloads/ea5735ab0fc6252b8d1a381f756a9290/introduction.ipynb b/docs/_downloads/ea5735ab0fc6252b8d1a381f756a9290/introduction.ipynb
index 1012bfc..cefef7a 100644
--- a/docs/_downloads/ea5735ab0fc6252b8d1a381f756a9290/introduction.ipynb
+++ b/docs/_downloads/ea5735ab0fc6252b8d1a381f756a9290/introduction.ipynb
@@ -15,14 +15,14 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "\nIntroduction\n============\n**Authors**:\n`Jocelyn Shiue <https://github.com/>`_,\n`Chris Hoge <https://github.com/hogepodge>`_\n\nApache TVM is an open source machine learning compiler framework for CPUs,\nGPUs, and machine learning accelerators. It aims to enable machine learning\nengineers to optimize and run computations efficiently on any hardware backend.\nThe purpose of this tutorial is to take a guided tour through all of the major\nfeatures of TVM by defining and demo [...]
+        "\nIntroduction\n============\n**Authors**:\n`Jocelyn Shiue <https://github.com/>`_,\n`Chris Hoge <https://github.com/hogepodge>`_,\n`Lianmin Zheng <https://github.com/merrymercy>`_\n\nApache TVM is an open source machine learning compiler framework for CPUs,\nGPUs, and machine learning accelerators. It aims to enable machine learning\nengineers to optimize and run computations efficiently on any hardware backend.\nThe purpose of this tutorial is to take a guided tour through all [...]
       ]
     },
     {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "An Overview of TVM and Model Optimization\n=========================================\n\nThe diagram below illustrates the steps a machine model takes as it is\ntransformed with the TVM optimizing compiler framework.\n\n![](https://raw.githubusercontent.com/hogepodge/web-data/c339ebbbae41f3762873147c1e920a53a08963dd/images/getting_started/overview.png)\n\n  :width: 100%\n  :alt: A High Level View of TVM\n\n1. Import the model from a framework like *Tensorflow*, *Pytorch*, or *Onn [...]
+        "An Overview of TVM and Model Optimization\n=========================================\n\nThe diagram below illustrates the steps a machine model takes as it is\ntransformed with the TVM optimizing compiler framework.\n\n![](https://raw.githubusercontent.com/apache/tvm-site/main/images/tutorial/overview.png)\n\n  :width: 100%\n  :alt: A High Level View of TVM\n\n1. Import the model from a framework like *Tensorflow*, *Pytorch*, or *Onnx*.\n   The importer layer is where TVM can in [...]
       ]
     }
   ],
diff --git a/docs/_downloads/1087d6f8ab0d37227d1a26042de7ac88/auto_tuning_with_python.py b/docs/_downloads/eabaa51a209056955e5626fa23b5978e/autotvm_relay_x86.py
similarity index 99%
rename from docs/_downloads/1087d6f8ab0d37227d1a26042de7ac88/auto_tuning_with_python.py
rename to docs/_downloads/eabaa51a209056955e5626fa23b5978e/autotvm_relay_x86.py
index 848511c..67faec4 100644
--- a/docs/_downloads/1087d6f8ab0d37227d1a26042de7ac88/auto_tuning_with_python.py
+++ b/docs/_downloads/eabaa51a209056955e5626fa23b5978e/autotvm_relay_x86.py
@@ -15,8 +15,8 @@
 # specific language governing permissions and limitations
 # under the License.
 """
-Compiling and Optimizing a Model with the Python AutoScheduler
-==============================================================
+Compiling and Optimizing a Model with the Python Interface (AutoTVM)
+====================================================================
 **Author**:
 `Chris Hoge <https://github.com/hogepodge>`_
 
@@ -302,6 +302,7 @@ runner = autotvm.LocalRunner(
     repeat=repeat,
     timeout=timeout,
     min_repeat_ms=min_repeat_ms,
+    enable_cpu_cache_flush=True,
 )
 
 # Create a simple structure for holding tuning options. We use an XGBoost
diff --git a/docs/_downloads/ef2454f5c8b007c53ff214943df808ad/deploy_classification.py b/docs/_downloads/ef2454f5c8b007c53ff214943df808ad/deploy_classification.py
index 493db87..b2f909b 100644
--- a/docs/_downloads/ef2454f5c8b007c53ff214943df808ad/deploy_classification.py
+++ b/docs/_downloads/ef2454f5c8b007c53ff214943df808ad/deploy_classification.py
@@ -141,7 +141,7 @@ ctx = remote.ext_dev(0) if device == "vta" else remote.cpu(0)
 
 ######################################################################
 # Build the inference graph executor
-# ---------------------------------
+# ----------------------------------
 # Grab vision model from Gluon model zoo and compile with Relay.
 # The compilation steps are:
 #
diff --git a/docs/_downloads/9a24ccf4f11859cf70918413ff2aea58/tune_matmul_x86.ipynb b/docs/_downloads/f5648c7917eb5013237a54625ed7a6c2/auto_scheduler_matmul_x86.ipynb
similarity index 93%
rename from docs/_downloads/9a24ccf4f11859cf70918413ff2aea58/tune_matmul_x86.ipynb
rename to docs/_downloads/f5648c7917eb5013237a54625ed7a6c2/auto_scheduler_matmul_x86.ipynb
index 4e25366..0ee7d5b 100644
--- a/docs/_downloads/9a24ccf4f11859cf70918413ff2aea58/tune_matmul_x86.ipynb
+++ b/docs/_downloads/f5648c7917eb5013237a54625ed7a6c2/auto_scheduler_matmul_x86.ipynb
@@ -15,7 +15,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "\nOptimizing Operators with Auto-scheduling\n=========================================\n**Author**: `Lianmin Zheng <https://github.com/merrymercy>`_,             `Chengfan Jia <https://github.com/jcf94/>`_\n\nIn this tutorial, we will show how TVM's Auto Scheduling feature can find\noptimal schedules without the need for writing a custom template.\n\nDifferent from the template-based `<autotvm_matmul>` which relies on\nmanual templates to define the search space, the auto-schedu [...]
+        "\nOptimizing Operators with Auto-scheduling\n=========================================\n**Author**: `Lianmin Zheng <https://github.com/merrymercy>`_,             `Chengfan Jia <https://github.com/jcf94/>`_\n\nIn this tutorial, we will show how TVM's Auto Scheduling feature can find\noptimal schedules without the need for writing a custom template.\n\nDifferent from the template-based :doc:`AutoTVM <autotvm_matmul_x86>` which relies on\nmanual templates to define the search space [...]
       ]
     },
     {
diff --git a/docs/_downloads/f8f7a2adf30f5033603d79cdbacd9235/tune_relay_arm.ipynb b/docs/_downloads/f8f7a2adf30f5033603d79cdbacd9235/tune_relay_arm.ipynb
index 339edcd..437f771 100644
--- a/docs/_downloads/f8f7a2adf30f5033603d79cdbacd9235/tune_relay_arm.ipynb
+++ b/docs/_downloads/f8f7a2adf30f5033603d79cdbacd9235/tune_relay_arm.ipynb
@@ -108,7 +108,7 @@
       },
       "outputs": [],
       "source": [
-        "# You can skip the implementation of this function for this tutorial.\ndef tune_tasks(\n    tasks,\n    measure_option,\n    tuner=\"xgb\",\n    n_trial=1000,\n    early_stopping=None,\n    log_filename=\"tuning.log\",\n    use_transfer_learning=True,\n):\n    # create tmp log file\n    tmp_log_file = log_filename + \".tmp\"\n    if os.path.exists(tmp_log_file):\n        os.remove(tmp_log_file)\n\n    for i, tsk in enumerate(reversed(tasks)):\n        prefix = \"[Task %2d/%2d] \ [...]
+        "# You can skip the implementation of this function for this tutorial.\ndef tune_tasks(\n    tasks,\n    measure_option,\n    tuner=\"xgb\",\n    n_trial=1000,\n    early_stopping=None,\n    log_filename=\"tuning.log\",\n    use_transfer_learning=True,\n):\n    # create tmp log file\n    tmp_log_file = log_filename + \".tmp\"\n    if os.path.exists(tmp_log_file):\n        os.remove(tmp_log_file)\n\n    for i, tsk in enumerate(reversed(tasks)):\n        prefix = \"[Task %2d/%2d] \ [...]
       ]
     },
     {
diff --git a/docs/_downloads/2d6bc109462266f309063f204dc15e8e/autotvm_matmul.py b/docs/_downloads/f96f5aca0e2b941b788322b5509ba2b6/autotvm_matmul_x86.py
similarity index 96%
rename from docs/_downloads/2d6bc109462266f309063f204dc15e8e/autotvm_matmul.py
rename to docs/_downloads/f96f5aca0e2b941b788322b5509ba2b6/autotvm_matmul_x86.py
index 234315b..97e1b0b 100644
--- a/docs/_downloads/2d6bc109462266f309063f204dc15e8e/autotvm_matmul.py
+++ b/docs/_downloads/f96f5aca0e2b941b788322b5509ba2b6/autotvm_matmul_x86.py
@@ -15,17 +15,18 @@
 # specific language governing permissions and limitations
 # under the License.
 """
-Optimizing Operators with Templates and AutoTVM
-===============================================
+.. _tutorial-autotvm-matmul-x86:
+
+Optimizing Operators with Schedule Templates and AutoTVM
+========================================================
 **Authors**:
 `Lianmin Zheng <https://github.com/merrymercy>`_,
 `Chris Hoge <https://github.com/hogepodge>`_
 
-In this tutorial, we will now show how the TVM Template Extension (TE) language
-can be used to write scheduling templates that can be searched by AutoTVM to
-find optimal configurations of scheduling variables. This process is called
-Auto-Tuning, and builds on TE to help automate the process of optimizing
-operations.
+In this tutorial, we show how the TVM Tensor Expression (TE) language
+can be used to write schedule templates that can be searched by AutoTVM to
+find the optimal schedule. This process is called Auto-Tuning, which helps
+automate the process of optimizing tensor computation.
 
 This tutorial builds on the previous `tutorial on how to write a matrix
 multiplication using TE <tensor_expr_get_started>`.
@@ -371,6 +372,6 @@ tvm.testing.assert_allclose(c_np, c_tvm.numpy(), rtol=1e-4)
 # To gain a deeper understanding of how this works, we recommend expanding on
 # this example by adding new search parameters to the schedule based on
 # schedule operations demonstated in the `Getting Started With Tensor
-# Expressions <tensor_expr_get_started>_` tutorial In the upcoming sections, we
+# Expressions <tensor_expr_get_started>_` tutorial. In the upcoming sections, we
 # will demonstate the AutoScheduler, a method for TVM to optimize common
 # operators without the need for the user to provide a user-defined template.
diff --git a/docs/_downloads/fb88afbf9be39a834109b9b842f12fd0/tune_network_arm.py b/docs/_downloads/fb88afbf9be39a834109b9b842f12fd0/tune_network_arm.py
index a7a844b..5b09314 100644
--- a/docs/_downloads/fb88afbf9be39a834109b9b842f12fd0/tune_network_arm.py
+++ b/docs/_downloads/fb88afbf9be39a834109b9b842f12fd0/tune_network_arm.py
@@ -437,7 +437,7 @@ def tune_and_evaluate():
 #    in function :code:`run_tuning`. Say,
 #    :code:`tuner = auto_scheduler.TaskScheduler(tasks, task_weights, load_log_file=log_file)`
 # 4. If you have multiple target CPUs, you can use all of them for measurements to
-#    parallelize the measurements. Check this :ref:`section <tutorials-autotvm-rpc-tracker>`
+#    parallelize the measurements. Check this :ref:`section <tutorials-autotvm-scale-up-rpc-tracker>`
 #    to learn how to use the RPC Tracker and RPC Server.
 #    To use the RPC Tracker in auto-scheduler, replace the runner in :code:`TuningOptions`
 #    with :any:`auto_scheduler.RPCRunner`.
diff --git a/docs/_images/sphx_glr_tune_matmul_x86_thumb.png b/docs/_images/sphx_glr_auto_scheduler_matmul_x86_thumb.png
similarity index 100%
rename from docs/_images/sphx_glr_tune_matmul_x86_thumb.png
rename to docs/_images/sphx_glr_auto_scheduler_matmul_x86_thumb.png
diff --git a/docs/_images/sphx_glr_autotvm_matmul_thumb.png b/docs/_images/sphx_glr_autotvm_matmul_x86_thumb.png
similarity index 100%
rename from docs/_images/sphx_glr_autotvm_matmul_thumb.png
rename to docs/_images/sphx_glr_autotvm_matmul_x86_thumb.png
diff --git a/docs/_images/sphx_glr_auto_tuning_with_python_thumb.png b/docs/_images/sphx_glr_autotvm_relay_x86_thumb.png
similarity index 100%
rename from docs/_images/sphx_glr_auto_tuning_with_python_thumb.png
rename to docs/_images/sphx_glr_autotvm_relay_x86_thumb.png
diff --git a/docs/_sources/api/python/graph_executor.rst.txt b/docs/_sources/api/python/graph_executor.rst.txt
index 3f88115..1af93e8 100644
--- a/docs/_sources/api/python/graph_executor.rst.txt
+++ b/docs/_sources/api/python/graph_executor.rst.txt
@@ -16,6 +16,6 @@
     under the License.
 
 tvm.contrib.graph_executor
--------------------------
+--------------------------
 .. automodule:: tvm.contrib.graph_executor
     :members:
diff --git a/docs/_sources/deploy/bnns.rst.txt b/docs/_sources/deploy/bnns.rst.txt
index 7b62fb1..43c7e7b 100644
--- a/docs/_sources/deploy/bnns.rst.txt
+++ b/docs/_sources/deploy/bnns.rst.txt
@@ -175,7 +175,8 @@ Operator support
 | nn.bias_add            | Supported by BNNS integration only as a bias part of nn.conv2d or nn.dense   |
 |                        | fusion                                                                       |
 +------------------------+------------------------------------------------------------------------------+
-| add                    | Supported by BNNS integration only as a bias part of nn.conv2d or nn.dense fusion |
+| add                    | Supported by BNNS integration only as a bias part of nn.conv2d or nn.dense   |
+|                        | fusion                                                                       |
 +------------------------+------------------------------------------------------------------------------+
 | nn.relu                | Supported by BNNS integration only as a part of nn.conv2d or nn.dense fusion |
 +------------------------+------------------------------------------------------------------------------+
diff --git a/docs/_sources/dev/device_target_interactions.rst.txt b/docs/_sources/dev/device_target_interactions.rst.txt
index 373b8fe..e5fa708 100644
--- a/docs/_sources/dev/device_target_interactions.rst.txt
+++ b/docs/_sources/dev/device_target_interactions.rst.txt
@@ -18,7 +18,7 @@
 .. _tvm-target-specific-overview:
 
 Device/Target Interactions
---------------------------
+==========================
 
 This documented is intended for developers interested in understanding
 how the TVM framework interacts with specific device APIs, or who
diff --git a/docs/_sources/dev/index.rst.txt b/docs/_sources/dev/index.rst.txt
index d03f0fb..873af9c 100644
--- a/docs/_sources/dev/index.rst.txt
+++ b/docs/_sources/dev/index.rst.txt
@@ -29,10 +29,6 @@ This page is organized as follows:
   The sections after are specific guides focused on each logical component, organized
   by the component's name.
 
-- The `Device/Target Interactions`_ section describes how TVM
-  interacts with each supported physical device and code-generation
-  target.
-
 - Feel free to also check out the :ref:`dev-how-to` for useful development tips.
 
 This guide provides a few complementary views of the architecture.
@@ -245,12 +241,13 @@ for learning-based optimizations.
 
 
 .. toctree::
-   :maxdepth: 2
+   :maxdepth: 1
 
    runtime
    debugger
    virtual_machine
    introduction_to_module_serialization
+   device_target_interactions
 
 tvm/node
 --------
@@ -318,6 +315,11 @@ It also provides a common `Target` class that describes the target.
 The compilation pipeline can be customized according to the target by querying the attribute information
 in the target and builtin information registered to each target id(cuda, opencl).
 
+.. toctree::
+   :maxdepth: 1
+
+   device_target_interactions
+
 tvm/tir
 -------
 
diff --git a/docs/_sources/index.rst.txt b/docs/_sources/index.rst.txt
index 2a1078e..e3cf466 100644
--- a/docs/_sources/index.rst.txt
+++ b/docs/_sources/index.rst.txt
@@ -44,8 +44,8 @@ For Developers
    contribute/index
    deploy/index
    dev/how_to
-   microtvm/index
    errors
+   faq
 
 .. toctree::
    :maxdepth: 1
@@ -76,8 +76,8 @@ For Developers
    :hidden:
    :caption: MISC
 
+   microtvm/index
    vta/index
-   faq
 
 
 Index
diff --git a/docs/_sources/tutorials/auto_scheduler/sg_execution_times.rst.txt b/docs/_sources/tutorials/auto_scheduler/sg_execution_times.rst.txt
index d05f35c..53b9c07 100644
--- a/docs/_sources/tutorials/auto_scheduler/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/sg_execution_times.rst.txt
@@ -5,11 +5,11 @@
 
 Computation times
 =================
-**02:11.816** total execution time for **tutorials_auto_scheduler** files:
-
-- **00:49.990**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_network_x86.py` (``tune_network_x86.py``)
-- **00:48.961**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``)
-- **00:15.992**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_network_cuda.py` (``tune_network_cuda.py``)
-- **00:13.475**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)
-- **00:02.244**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_network_arm.py` (``tune_network_arm.py``)
-- **00:01.153**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_network_mali.py` (``tune_network_mali.py``)
+**02:09.226** total execution time for **tutorials_auto_scheduler** files:
+
+- **01:03.026**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``)
+- **00:33.480**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_network_x86.py` (``tune_network_x86.py``)
+- **00:15.965**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_network_cuda.py` (``tune_network_cuda.py``)
+- **00:13.303**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)
+- **00:02.297**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_network_arm.py` (``tune_network_arm.py``)
+- **00:01.156**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_network_mali.py` (``tune_network_mali.py``)
diff --git a/docs/_sources/tutorials/auto_scheduler/tune_conv2d_layer_cuda.rst.txt b/docs/_sources/tutorials/auto_scheduler/tune_conv2d_layer_cuda.rst.txt
index 131456a..dc341d1 100644
--- a/docs/_sources/tutorials/auto_scheduler/tune_conv2d_layer_cuda.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/tune_conv2d_layer_cuda.rst.txt
@@ -216,18 +216,18 @@ cooperative fetching, unrolling and operator fusion.
     primfn(data_1: handle, kernel_1: handle, bias_1: handle, compute_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
       buffers = {compute: Buffer(compute_2: Pointer(float32), float32, [1, 512, 7, 7], []),
-                 bias: Buffer(bias_2: Pointer(float32), float32, [1, 512, 1, 1], []),
                  data: Buffer(data_2: Pointer(float32), float32, [1, 512, 7, 7], []),
+                 bias: Buffer(bias_2: Pointer(float32), float32, [1, 512, 1, 1], []),
                  kernel: Buffer(kernel_2: Pointer(float32), float32, [512, 512, 3, 3], [])}
       buffer_map = {data_1: data, kernel_1: kernel, bias_1: bias, compute_1: compute} {
-      attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 128;
+      attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 64;
       attr [compute_3: Pointer(float32)] "storage_scope" = "local";
       allocate(compute_3, float32, [7]);
       attr [pad_temp.shared: Pointer(float32)] "storage_scope" = "shared";
-      allocate(pad_temp.shared, float32, [162]);
+      allocate(pad_temp.shared, float32, [1008]);
       attr [kernel.shared: Pointer(float32)] "storage_scope" = "shared";
-      allocate(kernel.shared, float32, [72]);
-      attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 28 {
+      allocate(kernel.shared, float32, [384]);
+      attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56 {
         compute_3[0] = 0f32
         compute_3[1] = 0f32
         compute_3[2] = 0f32
@@ -235,50 +235,405 @@ cooperative fetching, unrolling and operator fusion.
         compute_3[4] = 0f32
         compute_3[5] = 0f32
         compute_3[6] = 0f32
-        for (rc.outer.outer: int32, 0, 256) {
-          attr [IterVar(threadIdx.x_1: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 28;
-          pad_temp.shared[threadIdx.x_1] = @tir.if_then_else((((9 <= threadIdx.x_1) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), (float32*)data_2[((((rc.outer.outer*98) + (floordiv(threadIdx.x_1, 9)*7)) + floormod(threadIdx.x_1, 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 28;
-          pad_temp.shared[(threadIdx.x_1 + 28)] = @tir.if_then_else(((1 <= floormod((threadIdx.x_1 + 1), 9)) && (floormod((threadIdx.x_1 + 1), 9) < 8)), (float32*)data_2[((((rc.outer.outer*98) + (floordiv((threadIdx.x_1 + 28), 9)*7)) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 28;
-          pad_temp.shared[(threadIdx.x_1 + 56)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 56), 81)) && (floormod((threadIdx.x_1 + 56), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 2), 9))) && (floormod((threadIdx.x_1 + 2), 9) < 8)), (float32*)data_2[(((((rc.outer.outer*98) + (floordiv((threadIdx.x_1 + 56), 81)*49)) + (floordiv(floormod((threadIdx.x_1 + 56), 81), 9)*7)) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 28;
-          pad_temp.shared[(threadIdx.x_1 + 84)] = @tir.if_then_else((((9 <= floormod((threadIdx.x_1 + 3), 81)) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), (float32*)data_2[(((((rc.outer.outer*98) + (floordiv((threadIdx.x_1 + 84), 81)*49)) + (floordiv(floormod((threadIdx.x_1 + 3), 81), 9)*7)) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 28;
-          pad_temp.shared[(threadIdx.x_1 + 112)] = @tir.if_then_else(((1 <= floormod((threadIdx.x_1 + 4), 9)) && (floormod((threadIdx.x_1 + 4), 9) < 8)), (float32*)data_2[(((((rc.outer.outer*98) + (floordiv((threadIdx.x_1 + 112), 81)*49)) + (floordiv(floormod((threadIdx.x_1 + 31), 81), 9)*7)) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 28;
-          if @tir.likely((threadIdx.x_1 < 22), dtype=bool) {
-            pad_temp.shared[(threadIdx.x_1 + 140)] = @tir.if_then_else((((floormod((threadIdx.x_1 + 59), 81) < 72) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), (float32*)data_2[(((((rc.outer.outer*98) + (floordiv((threadIdx.x_1 + 140), 81)*49)) + (floordiv(floormod((threadIdx.x_1 + 59), 81), 9)*7)) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
-          }
-          attr [IterVar(threadIdx.x_2: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 28;
-          kernel.shared[threadIdx.x_2] = (float32*)kernel_2[((((blockIdx.x*18432) + (floordiv(threadIdx.x_2, 18)*4608)) + (rc.outer.outer*18)) + floormod(threadIdx.x_2, 18))]
-          attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 28;
-          kernel.shared[(threadIdx.x_2 + 28)] = (float32*)kernel_2[((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 28), 18)*4608)) + (rc.outer.outer*18)) + floormod((threadIdx.x_2 + 10), 18))]
-          attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 28;
-          if @tir.likely((threadIdx.x_2 < 16), dtype=bool) {
-            kernel.shared[(threadIdx.x_2 + 56)] = (float32*)kernel_2[((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 56), 18)*4608)) + (rc.outer.outer*18)) + floormod((threadIdx.x_2 + 2), 18))]
-          }
-          for (rx.outer.inner: int32, 0, 3) {
-            for (rc.inner: int32, 0, 2) {
-              for (ry.inner: int32, 0, 3) {
-                compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((((rc.inner*81) + (ry.inner*9)) + rx.outer.inner) + floormod(threadIdx.x, 7))]*(float32*)kernel.shared[((((floordiv(threadIdx.x, 7)*18) + (rc.inner*9)) + (ry.inner*3)) + rx.outer.inner)]))
-                compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(((((rc.inner*81) + (ry.inner*9)) + rx.outer.inner) + floormod(threadIdx.x, 7)) + 9)]*(float32*)kernel.shared[((((floordiv(threadIdx.x, 7)*18) + (rc.inner*9)) + (ry.inner*3)) + rx.outer.inner)]))
-                compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(((((rc.inner*81) + (ry.inner*9)) + rx.outer.inner) + floormod(threadIdx.x, 7)) + 18)]*(float32*)kernel.shared[((((floordiv(threadIdx.x, 7)*18) + (rc.inner*9)) + (ry.inner*3)) + rx.outer.inner)]))
-                compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(((((rc.inner*81) + (ry.inner*9)) + rx.outer.inner) + floormod(threadIdx.x, 7)) + 27)]*(float32*)kernel.shared[((((floordiv(threadIdx.x, 7)*18) + (rc.inner*9)) + (ry.inner*3)) + rx.outer.inner)]))
-                compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(((((rc.inner*81) + (ry.inner*9)) + rx.outer.inner) + floormod(threadIdx.x, 7)) + 36)]*(float32*)kernel.shared[((((floordiv(threadIdx.x, 7)*18) + (rc.inner*9)) + (ry.inner*3)) + rx.outer.inner)]))
-                compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(((((rc.inner*81) + (ry.inner*9)) + rx.outer.inner) + floormod(threadIdx.x, 7)) + 45)]*(float32*)kernel.shared[((((floordiv(threadIdx.x, 7)*18) + (rc.inner*9)) + (ry.inner*3)) + rx.outer.inner)]))
-                compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(((((rc.inner*81) + (ry.inner*9)) + rx.outer.inner) + floormod(threadIdx.x, 7)) + 54)]*(float32*)kernel.shared[((((floordiv(threadIdx.x, 7)*18) + (rc.inner*9)) + (ry.inner*3)) + rx.outer.inner)]))
-              }
+        for (rc.outer.outer: int32, 0, 32) {
+          for (rx.outer.outer: int32, 0, 3) {
+            attr [IterVar(threadIdx.x_1: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[threadIdx.x_1] = @tir.if_then_else((((7 <= threadIdx.x_1) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((rc.outer.outer*784) + threadIdx.x_1) + rx.outer.outer) - 8)], 0f32, dtype=float32)
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 56)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 8), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 8), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 8), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 8), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1, 7) [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 112)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 7), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 7), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 16), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 7), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1,  [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 168)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 6), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 6), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 24), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 6), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1,  [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 224)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 5), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 5), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 32), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 5), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1,  [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 280)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 4), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 4), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 40), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 4), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1,  [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 336)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 3), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 3), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 48), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 3), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1,  [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 392)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 2), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 2), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 56), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 2), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1,  [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 448)] = @tir.if_then_else((((floormod((floordiv(threadIdx.x_1, 7) + 1), 9) < 8) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 64), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 1), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1, 7)) - 8)], 0f32, dtype=float32)
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 504)] = @tir.if_then_else((((7 <= threadIdx.x_1) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[(((((rc.outer.outer*784) + (floordiv(threadIdx.x_1, 7)*7)) + rx.outer.outer) + floormod(threadIdx.x_1, 7)) + 384)], 0f32, dtype=float32)
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 560)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 8), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 8), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 80), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 8), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1,  [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 616)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 7), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 7), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 88), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 7), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1,  [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 672)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 6), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 6), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 96), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 6), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1,  [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 728)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 5), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 5), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 104), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 5), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1, [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 784)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 4), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 4), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 112), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 4), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1, [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 840)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 3), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 3), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 120), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 3), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1, [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 896)] = @tir.if_then_else(((((1 <= floormod((floordiv(threadIdx.x_1, 7) + 2), 9)) && (floormod((floordiv(threadIdx.x_1, 7) + 2), 9) < 8)) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 128), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 2), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1, [...]
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            pad_temp.shared[(threadIdx.x_1 + 952)] = @tir.if_then_else((((floormod((floordiv(threadIdx.x_1, 7) + 1), 9) < 8) && (1 <= (rx.outer.outer + floormod(threadIdx.x_1, 7)))) && ((rx.outer.outer + floormod(threadIdx.x_1, 7)) < 8)), (float32*)data_2[((((((rc.outer.outer*784) + (floordiv((floordiv(threadIdx.x_1, 7) + 136), 9)*49)) + (floormod((floordiv(threadIdx.x_1, 7) + 1), 9)*7)) + rx.outer.outer) + floormod(threadIdx.x_1, 7)) - 8)], 0f32, dtype=float32)
+            attr [IterVar(threadIdx.x_2: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            kernel.shared[threadIdx.x_2] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv(threadIdx.x_2, 48)*4608)) + (rc.outer.outer*144)) + (floormod(threadIdx.x_2, 48)*3)) + rx.outer.outer)]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            kernel.shared[(threadIdx.x_2 + 56)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv((threadIdx.x_2 + 56), 48)*4608)) + (rc.outer.outer*144)) + (floormod((threadIdx.x_2 + 8), 48)*3)) + rx.outer.outer)]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            kernel.shared[(threadIdx.x_2 + 112)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv((threadIdx.x_2 + 112), 48)*4608)) + (rc.outer.outer*144)) + (floormod((threadIdx.x_2 + 16), 48)*3)) + rx.outer.outer)]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            kernel.shared[(threadIdx.x_2 + 168)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv((threadIdx.x_2 + 168), 48)*4608)) + (rc.outer.outer*144)) + (floormod((threadIdx.x_2 + 24), 48)*3)) + rx.outer.outer)]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            kernel.shared[(threadIdx.x_2 + 224)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv((threadIdx.x_2 + 224), 48)*4608)) + (rc.outer.outer*144)) + (floormod((threadIdx.x_2 + 32), 48)*3)) + rx.outer.outer)]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            kernel.shared[(threadIdx.x_2 + 280)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv((threadIdx.x_2 + 280), 48)*4608)) + (rc.outer.outer*144)) + (floormod((threadIdx.x_2 + 40), 48)*3)) + rx.outer.outer)]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 56;
+            if @tir.likely((threadIdx.x_2 < 48), dtype=bool) {
+              kernel.shared[(threadIdx.x_2 + 336)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (rc.outer.outer*144)) + (threadIdx.x_2*3)) + rx.outer.outer) + 32256)]
             }
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(floormod(threadIdx.x, 7)*7)]*(float32*)kernel.shared[(floordiv(threadIdx.x, 7)*48)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 1)]*(float32*)kernel.shared[(floordiv(threadIdx.x, 7)*48)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 2)]*(float32*)kernel.shared[(floordiv(threadIdx.x, 7)*48)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 3)]*(float32*)kernel.shared[(floordiv(threadIdx.x, 7)*48)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 4)]*(float32*)kernel.shared[(floordiv(threadIdx.x, 7)*48)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 5)]*(float32*)kernel.shared[(floordiv(threadIdx.x, 7)*48)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 6)]*(float32*)kernel.shared[(floordiv(threadIdx.x, 7)*48)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 7)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 1)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 8)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 1)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 9)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 1)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 10)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 1)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 11)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 1)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 12)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 1)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 13)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 1)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 14)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 2)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 15)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 2)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 16)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 2)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 17)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 2)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 18)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 2)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 19)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 2)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 20)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 2)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 63)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 3)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 64)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 3)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 65)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 3)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 66)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 3)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 67)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 3)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 68)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 3)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 69)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 3)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 70)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 4)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 71)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 4)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 72)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 4)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 73)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 4)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 74)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 4)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 75)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 4)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 76)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 4)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 77)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 5)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 78)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 5)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 79)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 5)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 80)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 5)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 81)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 5)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 82)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 5)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 83)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 5)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 126)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 6)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 127)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 6)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 128)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 6)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 129)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 6)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 130)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 6)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 131)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 6)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 132)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 6)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 133)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 7)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 134)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 7)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 135)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 7)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 136)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 7)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 137)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 7)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 138)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 7)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 139)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 7)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 140)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 8)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 141)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 8)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 142)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 8)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 143)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 8)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 144)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 8)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 145)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 8)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 146)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 8)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 189)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 9)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 190)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 9)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 191)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 9)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 192)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 9)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 193)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 9)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 194)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 9)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 195)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 9)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 196)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 10)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 197)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 10)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 198)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 10)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 199)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 10)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 200)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 10)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 201)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 10)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 202)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 10)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 203)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 11)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 204)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 11)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 205)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 11)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 206)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 11)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 207)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 11)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 208)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 11)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 209)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 11)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 252)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 12)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 253)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 12)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 254)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 12)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 255)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 12)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 256)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 12)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 257)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 12)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 258)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 12)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 259)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 13)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 260)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 13)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 261)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 13)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 262)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 13)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 263)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 13)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 264)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 13)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 265)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 13)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 266)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 14)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 267)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 14)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 268)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 14)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 269)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 14)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 270)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 14)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 271)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 14)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 272)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 14)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 315)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 15)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 316)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 15)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 317)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 15)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 318)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 15)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 319)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 15)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 320)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 15)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 321)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 15)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 322)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 16)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 323)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 16)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 324)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 16)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 325)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 16)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 326)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 16)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 327)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 16)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 328)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 16)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 329)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 17)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 330)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 17)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 331)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 17)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 332)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 17)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 333)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 17)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 334)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 17)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 335)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 17)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 378)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 18)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 379)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 18)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 380)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 18)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 381)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 18)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 382)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 18)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 383)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 18)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 384)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 18)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 385)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 19)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 386)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 19)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 387)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 19)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 388)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 19)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 389)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 19)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 390)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 19)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 391)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 19)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 392)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 20)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 393)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 20)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 394)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 20)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 395)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 20)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 396)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 20)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 397)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 20)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 398)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 20)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 441)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 21)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 442)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 21)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 443)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 21)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 444)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 21)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 445)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 21)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 446)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 21)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 447)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 21)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 448)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 22)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 449)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 22)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 450)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 22)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 451)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 22)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 452)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 22)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 453)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 22)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 454)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 22)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 455)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 23)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 456)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 23)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 457)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 23)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 458)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 23)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 459)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 23)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 460)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 23)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 461)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 23)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 504)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 24)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 505)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 24)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 506)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 24)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 507)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 24)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 508)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 24)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 509)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 24)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 510)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 24)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 511)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 25)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 512)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 25)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 513)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 25)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 514)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 25)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 515)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 25)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 516)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 25)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 517)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 25)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 518)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 26)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 519)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 26)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 520)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 26)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 521)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 26)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 522)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 26)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 523)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 26)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 524)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 26)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 567)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 27)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 568)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 27)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 569)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 27)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 570)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 27)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 571)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 27)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 572)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 27)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 573)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 27)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 574)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 28)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 575)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 28)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 576)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 28)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 577)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 28)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 578)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 28)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 579)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 28)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 580)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 28)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 581)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 29)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 582)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 29)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 583)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 29)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 584)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 29)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 585)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 29)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 586)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 29)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 587)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 29)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 630)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 30)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 631)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 30)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 632)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 30)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 633)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 30)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 634)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 30)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 635)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 30)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 636)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 30)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 637)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 31)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 638)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 31)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 639)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 31)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 640)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 31)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 641)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 31)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 642)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 31)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 643)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 31)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 644)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 32)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 645)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 32)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 646)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 32)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 647)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 32)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 648)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 32)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 649)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 32)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 650)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 32)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 693)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 33)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 694)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 33)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 695)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 33)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 696)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 33)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 697)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 33)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 698)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 33)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 699)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 33)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 700)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 34)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 701)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 34)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 702)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 34)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 703)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 34)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 704)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 34)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 705)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 34)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 706)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 34)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 707)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 35)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 708)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 35)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 709)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 35)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 710)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 35)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 711)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 35)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 712)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 35)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 713)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 35)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 756)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 36)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 757)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 36)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 758)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 36)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 759)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 36)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 760)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 36)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 761)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 36)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 762)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 36)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 763)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 37)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 764)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 37)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 765)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 37)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 766)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 37)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 767)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 37)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 768)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 37)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 769)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 37)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 770)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 38)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 771)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 38)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 772)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 38)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 773)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 38)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 774)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 38)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 775)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 38)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 776)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 38)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 819)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 39)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 820)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 39)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 821)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 39)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 822)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 39)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 823)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 39)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 824)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 39)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 825)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 39)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 826)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 40)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 827)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 40)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 828)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 40)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 829)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 40)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 830)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 40)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 831)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 40)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 832)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 40)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 833)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 41)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 834)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 41)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 835)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 41)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 836)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 41)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 837)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 41)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 838)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 41)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 839)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 41)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 882)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 42)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 883)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 42)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 884)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 42)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 885)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 42)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 886)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 42)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 887)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 42)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 888)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 42)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 889)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 43)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 890)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 43)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 891)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 43)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 892)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 43)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 893)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 43)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 894)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 43)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 895)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 43)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 896)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 44)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 897)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 44)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 898)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 44)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 899)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 44)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 900)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 44)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 901)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 44)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 902)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 44)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 945)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 45)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 946)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 45)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 947)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 45)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 948)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 45)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 949)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 45)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 950)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 45)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 951)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 45)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 952)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 46)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 953)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 46)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 954)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 46)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 955)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 46)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 956)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 46)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 957)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 46)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 958)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 46)]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 959)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 47)]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 960)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 47)]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 961)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 47)]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 962)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 47)]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 963)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 47)]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 964)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 47)]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[((floormod(threadIdx.x, 7)*7) + 965)]*(float32*)kernel.shared[((floordiv(threadIdx.x, 7)*48) + 47)]))
           }
         }
-        compute_2[(((blockIdx.x*196) + (floordiv(threadIdx.x, 7)*49)) + floormod(threadIdx.x, 7))] = max(((float32*)compute_3[0] + (float32*)bias_2[((blockIdx.x*4) + floordiv(threadIdx.x, 7))]), 0f32)
-        compute_2[((((blockIdx.x*196) + (floordiv(threadIdx.x, 7)*49)) + floormod(threadIdx.x, 7)) + 7)] = max(((float32*)compute_3[1] + (float32*)bias_2[((blockIdx.x*4) + floordiv(threadIdx.x, 7))]), 0f32)
-        compute_2[((((blockIdx.x*196) + (floordiv(threadIdx.x, 7)*49)) + floormod(threadIdx.x, 7)) + 14)] = max(((float32*)compute_3[2] + (float32*)bias_2[((blockIdx.x*4) + floordiv(threadIdx.x, 7))]), 0f32)
-        compute_2[((((blockIdx.x*196) + (floordiv(threadIdx.x, 7)*49)) + floormod(threadIdx.x, 7)) + 21)] = max(((float32*)compute_3[3] + (float32*)bias_2[((blockIdx.x*4) + floordiv(threadIdx.x, 7))]), 0f32)
-        compute_2[((((blockIdx.x*196) + (floordiv(threadIdx.x, 7)*49)) + floormod(threadIdx.x, 7)) + 28)] = max(((float32*)compute_3[4] + (float32*)bias_2[((blockIdx.x*4) + floordiv(threadIdx.x, 7))]), 0f32)
-        compute_2[((((blockIdx.x*196) + (floordiv(threadIdx.x, 7)*49)) + floormod(threadIdx.x, 7)) + 35)] = max(((float32*)compute_3[5] + (float32*)bias_2[((blockIdx.x*4) + floordiv(threadIdx.x, 7))]), 0f32)
-        compute_2[((((blockIdx.x*196) + (floordiv(threadIdx.x, 7)*49)) + floormod(threadIdx.x, 7)) + 42)] = max(((float32*)compute_3[6] + (float32*)bias_2[((blockIdx.x*4) + floordiv(threadIdx.x, 7))]), 0f32)
+        compute_2[((blockIdx.x*392) + (threadIdx.x*7))] = max(((float32*)compute_3[0] + (float32*)bias_2[((blockIdx.x*8) + floordiv(threadIdx.x, 7))]), 0f32)
+        compute_2[(((blockIdx.x*392) + (threadIdx.x*7)) + 1)] = max(((float32*)compute_3[1] + (float32*)bias_2[((blockIdx.x*8) + floordiv(threadIdx.x, 7))]), 0f32)
+        compute_2[(((blockIdx.x*392) + (threadIdx.x*7)) + 2)] = max(((float32*)compute_3[2] + (float32*)bias_2[((blockIdx.x*8) + floordiv(threadIdx.x, 7))]), 0f32)
+        compute_2[(((blockIdx.x*392) + (threadIdx.x*7)) + 3)] = max(((float32*)compute_3[3] + (float32*)bias_2[((blockIdx.x*8) + floordiv(threadIdx.x, 7))]), 0f32)
+        compute_2[(((blockIdx.x*392) + (threadIdx.x*7)) + 4)] = max(((float32*)compute_3[4] + (float32*)bias_2[((blockIdx.x*8) + floordiv(threadIdx.x, 7))]), 0f32)
+        compute_2[(((blockIdx.x*392) + (threadIdx.x*7)) + 5)] = max(((float32*)compute_3[5] + (float32*)bias_2[((blockIdx.x*8) + floordiv(threadIdx.x, 7))]), 0f32)
+        compute_2[(((blockIdx.x*392) + (threadIdx.x*7)) + 6)] = max(((float32*)compute_3[6] + (float32*)bias_2[((blockIdx.x*8) + floordiv(threadIdx.x, 7))]), 0f32)
       }
     }
 
@@ -330,7 +685,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 0.266 ms
+    Execution time of this operator: 0.353 ms
 
 
 
@@ -376,35 +731,35 @@ They can be used for debugging and learning the behavior of the auto-scheduler.
     compute_nn_o_o_o_o, compute_nn_o_o_o_i = s[compute].split(compute_nn_o_o_o_i, factor=1)
     compute_ff_o_i, compute_ff_i = s[compute].split(compute_ff, factor=1)
     compute_ff_o_o_i, compute_ff_o_i = s[compute].split(compute_ff_o_i, factor=1)
-    compute_ff_o_o_o_i, compute_ff_o_o_i = s[compute].split(compute_ff_o_o_i, factor=4)
+    compute_ff_o_o_o_i, compute_ff_o_o_i = s[compute].split(compute_ff_o_o_i, factor=8)
     compute_ff_o_o_o_o, compute_ff_o_o_o_i = s[compute].split(compute_ff_o_o_o_i, factor=1)
     compute_yy_o_i, compute_yy_i = s[compute].split(compute_yy, factor=1)
     compute_yy_o_o_i, compute_yy_o_i = s[compute].split(compute_yy_o_i, factor=1)
-    compute_yy_o_o_o_i, compute_yy_o_o_i = s[compute].split(compute_yy_o_o_i, factor=1)
-    compute_yy_o_o_o_o, compute_yy_o_o_o_i = s[compute].split(compute_yy_o_o_o_i, factor=7)
+    compute_yy_o_o_o_i, compute_yy_o_o_i = s[compute].split(compute_yy_o_o_i, factor=7)
+    compute_yy_o_o_o_o, compute_yy_o_o_o_i = s[compute].split(compute_yy_o_o_o_i, factor=1)
     compute_xx_o_i, compute_xx_i = s[compute].split(compute_xx, factor=1)
     compute_xx_o_o_i, compute_xx_o_i = s[compute].split(compute_xx_o_i, factor=1)
-    compute_xx_o_o_o_i, compute_xx_o_o_i = s[compute].split(compute_xx_o_o_i, factor=7)
-    compute_xx_o_o_o_o, compute_xx_o_o_o_i = s[compute].split(compute_xx_o_o_o_i, factor=1)
-    compute_rc_o_i, compute_rc_i = s[compute].split(compute_rc, factor=2)
+    compute_xx_o_o_o_i, compute_xx_o_o_i = s[compute].split(compute_xx_o_o_i, factor=1)
+    compute_xx_o_o_o_o, compute_xx_o_o_o_i = s[compute].split(compute_xx_o_o_o_i, factor=7)
+    compute_rc_o_i, compute_rc_i = s[compute].split(compute_rc, factor=16)
     compute_rc_o_o, compute_rc_o_i = s[compute].split(compute_rc_o_i, factor=1)
     compute_ry_o_i, compute_ry_i = s[compute].split(compute_ry, factor=3)
     compute_ry_o_o, compute_ry_o_i = s[compute].split(compute_ry_o_i, factor=1)
     compute_rx_o_i, compute_rx_i = s[compute].split(compute_rx, factor=1)
-    compute_rx_o_o, compute_rx_o_i = s[compute].split(compute_rx_o_i, factor=3)
+    compute_rx_o_o, compute_rx_o_i = s[compute].split(compute_rx_o_i, factor=1)
     s[compute].reorder(compute_nn_o_o_o_o, compute_ff_o_o_o_o, compute_yy_o_o_o_o, compute_xx_o_o_o_o, compute_nn_o_o_o_i, compute_ff_o_o_o_i, compute_yy_o_o_o_i, compute_xx_o_o_o_i, compute_nn_o_o_i, compute_ff_o_o_i, compute_yy_o_o_i, compute_xx_o_o_i, compute_rc_o_o, compute_ry_o_o, compute_rx_o_o, compute_rc_o_i, compute_ry_o_i, compute_rx_o_i, compute_nn_o_i, compute_ff_o_i, compute_yy_o_i, compute_xx_o_i, compute_rc_i, compute_ry_i, compute_rx_i, compute_nn_i, compute_ff_i, compute [...]
     compute_i0_o_i, compute_i0_i = s[compute].split(compute_i0, factor=1)
     compute_i0_o_o_i, compute_i0_o_i = s[compute].split(compute_i0_o_i, factor=1)
     compute_i0_o_o_o, compute_i0_o_o_i = s[compute].split(compute_i0_o_o_i, factor=1)
     compute_i1_o_i, compute_i1_i = s[compute].split(compute_i1, factor=1)
-    compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=4)
+    compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=8)
     compute_i1_o_o_o, compute_i1_o_o_i = s[compute].split(compute_i1_o_o_i, factor=1)
     compute_i2_o_i, compute_i2_i = s[compute].split(compute_i2, factor=1)
-    compute_i2_o_o_i, compute_i2_o_i = s[compute].split(compute_i2_o_i, factor=1)
-    compute_i2_o_o_o, compute_i2_o_o_i = s[compute].split(compute_i2_o_o_i, factor=7)
+    compute_i2_o_o_i, compute_i2_o_i = s[compute].split(compute_i2_o_i, factor=7)
+    compute_i2_o_o_o, compute_i2_o_o_i = s[compute].split(compute_i2_o_o_i, factor=1)
     compute_i3_o_i, compute_i3_i = s[compute].split(compute_i3, factor=1)
-    compute_i3_o_o_i, compute_i3_o_i = s[compute].split(compute_i3_o_i, factor=7)
-    compute_i3_o_o_o, compute_i3_o_o_i = s[compute].split(compute_i3_o_o_i, factor=1)
+    compute_i3_o_o_i, compute_i3_o_i = s[compute].split(compute_i3_o_i, factor=1)
+    compute_i3_o_o_o, compute_i3_o_o_i = s[compute].split(compute_i3_o_o_i, factor=7)
     s[compute].reorder(compute_i0_o_o_o, compute_i1_o_o_o, compute_i2_o_o_o, compute_i3_o_o_o, compute_i0_o_o_i, compute_i1_o_o_i, compute_i2_o_o_i, compute_i3_o_o_i, compute_i0_o_i, compute_i1_o_i, compute_i2_o_i, compute_i3_o_i, compute_i0_i, compute_i1_i, compute_i2_i, compute_i3_i)
     s[compute].compute_at(s[compute], compute_i3_o_i)
     kernel_shared = s.cache_read(kernel, "shared", [compute])
@@ -423,14 +778,14 @@ They can be used for debugging and learning the behavior of the auto-scheduler.
     kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused = s[kernel_shared].fuse(kernel_shared_ax0, kernel_shared_ax1, kernel_shared_ax2, kernel_shared_ax3)
     kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
     s[kernel_shared].vectorize(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i)
-    kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=28)
+    kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=56)
     s[kernel_shared].bind(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i, te.thread_axis("threadIdx.x"))
     pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused = s[pad_temp_shared].fuse(pad_temp_shared_ax0, pad_temp_shared_ax1, pad_temp_shared_ax2, pad_temp_shared_ax3)
     pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
     s[pad_temp_shared].vectorize(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i)
-    pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=28)
+    pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=56)
     s[pad_temp_shared].bind(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i, te.thread_axis("threadIdx.x"))
-    s[compute].pragma(compute_nn_o_o_o_o, "auto_unroll_max_step", 16)
+    s[compute].pragma(compute_nn_o_o_o_o, "auto_unroll_max_step", 1024)
     s[compute].pragma(compute_nn_o_o_o_o, "unroll_explicit", True)
 
     CUDA source code:
@@ -450,8 +805,8 @@ They can be used for debugging and learning the behavior of the auto-scheduler.
     #endif
     extern "C" __global__ void default_function_kernel0(float* __restrict__ data, float* __restrict__ kernel, float* __restrict__ compute, float* __restrict__ bias) {
       float compute1[7];
-      __shared__ float pad_temp_shared[162];
-      __shared__ float kernel_shared[72];
+      __shared__ float pad_temp_shared[1008];
+      __shared__ float kernel_shared[384];
       compute1[(0)] = 0.000000e+00f;
       compute1[(1)] = 0.000000e+00f;
       compute1[(2)] = 0.000000e+00f;
@@ -459,43 +814,382 @@ They can be used for debugging and learning the behavior of the auto-scheduler.
       compute1[(4)] = 0.000000e+00f;
       compute1[(5)] = 0.000000e+00f;
       compute1[(6)] = 0.000000e+00f;
-      for (int rc_outer_outer = 0; rc_outer_outer < 256; ++rc_outer_outer) {
-        __syncthreads();
-        pad_temp_shared[(((int)threadIdx.x))] = ((((9 <= ((int)threadIdx.x)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[(((((rc_outer_outer * 98) + ((((int)threadIdx.x) / 9) * 7)) + (((int)threadIdx.x) % 9)) - 8))] : 0.000000e+00f);
-        pad_temp_shared[((((int)threadIdx.x) + 28))] = (((1 <= ((((int)threadIdx.x) + 1) % 9)) && (((((int)threadIdx.x) + 1) % 9) < 8)) ? data[(((((rc_outer_outer * 98) + (((((int)threadIdx.x) + 28) / 9) * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8))] : 0.000000e+00f);
-        pad_temp_shared[((((int)threadIdx.x) + 56))] = (((((9 <= ((((int)threadIdx.x) + 56) % 81)) && (((((int)threadIdx.x) + 56) % 81) < 72)) && (1 <= ((((int)threadIdx.x) + 2) % 9))) && (((((int)threadIdx.x) + 2) % 9) < 8)) ? data[((((((rc_outer_outer * 98) + (((((int)threadIdx.x) + 56) / 81) * 49)) + ((((((int)threadIdx.x) + 56) % 81) / 9) * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8))] : 0.000000e+00f);
-        pad_temp_shared[((((int)threadIdx.x) + 84))] = ((((6 <= ((int)threadIdx.x)) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[((((((rc_outer_outer * 98) + (((((int)threadIdx.x) + 84) / 81) * 49)) + (((((int)threadIdx.x) + 3) / 9) * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8))] : 0.000000e+00f);
-        pad_temp_shared[((((int)threadIdx.x) + 112))] = (((1 <= ((((int)threadIdx.x) + 4) % 9)) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[((((((rc_outer_outer * 98) + (((((int)threadIdx.x) + 112) / 81) * 49)) + (((((int)threadIdx.x) + 31) / 9) * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8))] : 0.000000e+00f);
-        if (((int)threadIdx.x) < 22) {
-          pad_temp_shared[((((int)threadIdx.x) + 140))] = ((((((int)threadIdx.x) < 13) && (1 <= ((((int)threadIdx.x) + 5) % 9))) && (((((int)threadIdx.x) + 5) % 9) < 8)) ? data[((((((rc_outer_outer * 98) + (((((int)threadIdx.x) + 140) / 81) * 49)) + (((((int)threadIdx.x) + 59) / 9) * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8))] : 0.000000e+00f);
-        }
-        kernel_shared[(((int)threadIdx.x))] = kernel[(((((((int)blockIdx.x) * 18432) + ((((int)threadIdx.x) / 18) * 4608)) + (rc_outer_outer * 18)) + (((int)threadIdx.x) % 18)))];
-        kernel_shared[((((int)threadIdx.x) + 28))] = kernel[(((((((int)blockIdx.x) * 18432) + (((((int)threadIdx.x) + 28) / 18) * 4608)) + (rc_outer_outer * 18)) + ((((int)threadIdx.x) + 10) % 18)))];
-        if (((int)threadIdx.x) < 16) {
-          kernel_shared[((((int)threadIdx.x) + 56))] = kernel[(((((((int)blockIdx.x) * 18432) + (((((int)threadIdx.x) + 56) / 18) * 4608)) + (rc_outer_outer * 18)) + (((int)threadIdx.x) + 2)))];
-        }
-        __syncthreads();
-        for (int rx_outer_inner = 0; rx_outer_inner < 3; ++rx_outer_inner) {
-          for (int rc_inner = 0; rc_inner < 2; ++rc_inner) {
-            for (int ry_inner = 0; ry_inner < 3; ++ry_inner) {
-              compute1[(0)] = (compute1[(0)] + (pad_temp_shared[(((((rc_inner * 81) + (ry_inner * 9)) + rx_outer_inner) + (((int)threadIdx.x) % 7)))] * kernel_shared[((((((((int)threadIdx.x) / 7) * 18) + (rc_inner * 9)) + (ry_inner * 3)) + rx_outer_inner))]));
-              compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((rc_inner * 81) + (ry_inner * 9)) + rx_outer_inner) + (((int)threadIdx.x) % 7)) + 9))] * kernel_shared[((((((((int)threadIdx.x) / 7) * 18) + (rc_inner * 9)) + (ry_inner * 3)) + rx_outer_inner))]));
-              compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((rc_inner * 81) + (ry_inner * 9)) + rx_outer_inner) + (((int)threadIdx.x) % 7)) + 18))] * kernel_shared[((((((((int)threadIdx.x) / 7) * 18) + (rc_inner * 9)) + (ry_inner * 3)) + rx_outer_inner))]));
-              compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((rc_inner * 81) + (ry_inner * 9)) + rx_outer_inner) + (((int)threadIdx.x) % 7)) + 27))] * kernel_shared[((((((((int)threadIdx.x) / 7) * 18) + (rc_inner * 9)) + (ry_inner * 3)) + rx_outer_inner))]));
-              compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((rc_inner * 81) + (ry_inner * 9)) + rx_outer_inner) + (((int)threadIdx.x) % 7)) + 36))] * kernel_shared[((((((((int)threadIdx.x) / 7) * 18) + (rc_inner * 9)) + (ry_inner * 3)) + rx_outer_inner))]));
-              compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((rc_inner * 81) + (ry_inner * 9)) + rx_outer_inner) + (((int)threadIdx.x) % 7)) + 45))] * kernel_shared[((((((((int)threadIdx.x) / 7) * 18) + (rc_inner * 9)) + (ry_inner * 3)) + rx_outer_inner))]));
-              compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((rc_inner * 81) + (ry_inner * 9)) + rx_outer_inner) + (((int)threadIdx.x) % 7)) + 54))] * kernel_shared[((((((((int)threadIdx.x) / 7) * 18) + (rc_inner * 9)) + (ry_inner * 3)) + rx_outer_inner))]));
-            }
+      for (int rc_outer_outer = 0; rc_outer_outer < 32; ++rc_outer_outer) {
+        for (int rx_outer_outer = 0; rx_outer_outer < 3; ++rx_outer_outer) {
+          __syncthreads();
+          pad_temp_shared[(((int)threadIdx.x))] = ((((7 <= ((int)threadIdx.x)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((rc_outer_outer * 784) + ((int)threadIdx.x)) + rx_outer_outer) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 56))] = (((((1 <= (((((int)threadIdx.x) / 7) + 8) % 9)) && ((((((int)threadIdx.x) / 7) + 8) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 56) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 8) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 112))] = (((((1 <= (((((int)threadIdx.x) / 7) + 7) % 9)) && ((((((int)threadIdx.x) / 7) + 7) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 112) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 7) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 168))] = (((((1 <= (((((int)threadIdx.x) / 7) + 6) % 9)) && ((((((int)threadIdx.x) / 7) + 6) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 168) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 6) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 224))] = (((((1 <= (((((int)threadIdx.x) / 7) + 5) % 9)) && ((((((int)threadIdx.x) / 7) + 5) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 224) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 5) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 280))] = (((((1 <= (((((int)threadIdx.x) / 7) + 4) % 9)) && ((((((int)threadIdx.x) / 7) + 4) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 280) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 4) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 336))] = (((((1 <= (((((int)threadIdx.x) / 7) + 3) % 9)) && ((((((int)threadIdx.x) / 7) + 3) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 336) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 3) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 392))] = (((((1 <= (((((int)threadIdx.x) / 7) + 2) % 9)) && ((((((int)threadIdx.x) / 7) + 2) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 392) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 2) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 448))] = ((((((int)threadIdx.x) < 49) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 448) / 63) * 49)) + (((((int)threadIdx.x) / 7) + 1) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 504))] = ((((7 <= ((int)threadIdx.x)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((rc_outer_outer * 784) + ((int)threadIdx.x)) + rx_outer_outer) + 384))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 560))] = (((((1 <= (((((int)threadIdx.x) / 7) + 8) % 9)) && ((((((int)threadIdx.x) / 7) + 8) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 560) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 8) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 616))] = (((((1 <= (((((int)threadIdx.x) / 7) + 7) % 9)) && ((((((int)threadIdx.x) / 7) + 7) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 616) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 7) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 672))] = (((((1 <= (((((int)threadIdx.x) / 7) + 6) % 9)) && ((((((int)threadIdx.x) / 7) + 6) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 672) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 6) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 728))] = (((((1 <= (((((int)threadIdx.x) / 7) + 5) % 9)) && ((((((int)threadIdx.x) / 7) + 5) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 728) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 5) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 784))] = (((((1 <= (((((int)threadIdx.x) / 7) + 4) % 9)) && ((((((int)threadIdx.x) / 7) + 4) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 784) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 4) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 840))] = (((((1 <= (((((int)threadIdx.x) / 7) + 3) % 9)) && ((((((int)threadIdx.x) / 7) + 3) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 840) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 3) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 896))] = (((((1 <= (((((int)threadIdx.x) / 7) + 2) % 9)) && ((((((int)threadIdx.x) / 7) + 2) % 9) < 8)) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 896) / 63) * 49)) + ((((((int)threadIdx.x) / 7) + 2) % 9) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          pad_temp_shared[((((int)threadIdx.x) + 952))] = ((((((int)threadIdx.x) < 49) && (1 <= (rx_outer_outer + (((int)threadIdx.x) % 7)))) && ((rx_outer_outer + (((int)threadIdx.x) % 7)) < 8)) ? data[(((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 952) / 63) * 49)) + (((((int)threadIdx.x) / 7) + 1) * 7)) + rx_outer_outer) + (((int)threadIdx.x) % 7)) - 8))] : 0.000000e+00f);
+          kernel_shared[(((int)threadIdx.x))] = kernel[((((((((int)blockIdx.x) * 36864) + ((((int)threadIdx.x) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) % 48) * 3)) + rx_outer_outer))];
+          kernel_shared[((((int)threadIdx.x) + 56))] = kernel[((((((((int)blockIdx.x) * 36864) + (((((int)threadIdx.x) + 56) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) + 8) % 48) * 3)) + rx_outer_outer))];
+          kernel_shared[((((int)threadIdx.x) + 112))] = kernel[((((((((int)blockIdx.x) * 36864) + (((((int)threadIdx.x) + 112) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) + 16) % 48) * 3)) + rx_outer_outer))];
+          kernel_shared[((((int)threadIdx.x) + 168))] = kernel[((((((((int)blockIdx.x) * 36864) + (((((int)threadIdx.x) + 168) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) + 24) % 48) * 3)) + rx_outer_outer))];
+          kernel_shared[((((int)threadIdx.x) + 224))] = kernel[((((((((int)blockIdx.x) * 36864) + (((((int)threadIdx.x) + 224) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) + 32) % 48) * 3)) + rx_outer_outer))];
+          kernel_shared[((((int)threadIdx.x) + 280))] = kernel[((((((((int)blockIdx.x) * 36864) + (((((int)threadIdx.x) + 280) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) + 40) % 48) * 3)) + rx_outer_outer))];
+          if (((int)threadIdx.x) < 48) {
+            kernel_shared[((((int)threadIdx.x) + 336))] = kernel[((((((((int)blockIdx.x) * 36864) + (rc_outer_outer * 144)) + (((int)threadIdx.x) * 3)) + rx_outer_outer) + 32256))];
           }
+          __syncthreads();
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[(((((int)threadIdx.x) % 7) * 7))] * kernel_shared[(((((int)threadIdx.x) / 7) * 48))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 1))] * kernel_shared[(((((int)threadIdx.x) / 7) * 48))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 2))] * kernel_shared[(((((int)threadIdx.x) / 7) * 48))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 3))] * kernel_shared[(((((int)threadIdx.x) / 7) * 48))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 4))] * kernel_shared[(((((int)threadIdx.x) / 7) * 48))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 5))] * kernel_shared[(((((int)threadIdx.x) / 7) * 48))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 6))] * kernel_shared[(((((int)threadIdx.x) / 7) * 48))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 7))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 1))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 8))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 1))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 9))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 1))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 10))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 1))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 11))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 1))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 12))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 1))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 13))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 1))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 14))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 2))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 15))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 2))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 16))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 2))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 17))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 2))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 18))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 2))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 19))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 2))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 20))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 2))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 63))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 3))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 64))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 3))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 65))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 3))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 66))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 3))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 67))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 3))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 68))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 3))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 69))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 3))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 70))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 4))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 71))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 4))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 72))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 4))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 73))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 4))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 74))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 4))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 75))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 4))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 76))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 4))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 77))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 5))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 78))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 5))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 79))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 5))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 80))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 5))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 81))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 5))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 82))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 5))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 83))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 5))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 126))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 6))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 127))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 6))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 128))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 6))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 129))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 6))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 130))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 6))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 131))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 6))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 132))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 6))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 133))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 7))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 134))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 7))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 135))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 7))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 136))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 7))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 137))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 7))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 138))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 7))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 139))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 7))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 140))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 8))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 141))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 8))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 142))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 8))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 143))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 8))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 144))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 8))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 145))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 8))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 146))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 8))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 189))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 9))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 190))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 9))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 191))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 9))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 192))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 9))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 193))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 9))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 194))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 9))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 195))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 9))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 196))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 10))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 197))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 10))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 198))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 10))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 199))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 10))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 200))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 10))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 201))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 10))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 202))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 10))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 203))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 11))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 204))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 11))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 205))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 11))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 206))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 11))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 207))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 11))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 208))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 11))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 209))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 11))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 252))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 12))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 253))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 12))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 254))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 12))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 255))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 12))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 256))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 12))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 257))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 12))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 258))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 12))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 259))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 13))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 260))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 13))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 261))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 13))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 262))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 13))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 263))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 13))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 264))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 13))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 265))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 13))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 266))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 14))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 267))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 14))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 268))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 14))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 269))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 14))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 270))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 14))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 271))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 14))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 272))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 14))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 315))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 15))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 316))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 15))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 317))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 15))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 318))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 15))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 319))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 15))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 320))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 15))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 321))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 15))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 322))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 16))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 323))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 16))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 324))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 16))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 325))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 16))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 326))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 16))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 327))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 16))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 328))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 16))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 329))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 17))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 330))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 17))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 331))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 17))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 332))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 17))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 333))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 17))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 334))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 17))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 335))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 17))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 378))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 18))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 379))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 18))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 380))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 18))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 381))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 18))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 382))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 18))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 383))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 18))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 384))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 18))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 385))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 19))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 386))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 19))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 387))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 19))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 388))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 19))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 389))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 19))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 390))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 19))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 391))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 19))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 392))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 20))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 393))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 20))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 394))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 20))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 395))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 20))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 396))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 20))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 397))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 20))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 398))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 20))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 441))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 21))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 442))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 21))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 443))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 21))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 444))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 21))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 445))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 21))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 446))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 21))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 447))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 21))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 448))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 22))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 449))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 22))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 450))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 22))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 451))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 22))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 452))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 22))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 453))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 22))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 454))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 22))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 455))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 23))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 456))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 23))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 457))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 23))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 458))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 23))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 459))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 23))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 460))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 23))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 461))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 23))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 504))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 24))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 505))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 24))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 506))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 24))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 507))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 24))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 508))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 24))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 509))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 24))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 510))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 24))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 511))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 25))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 512))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 25))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 513))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 25))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 514))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 25))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 515))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 25))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 516))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 25))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 517))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 25))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 518))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 26))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 519))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 26))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 520))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 26))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 521))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 26))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 522))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 26))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 523))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 26))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 524))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 26))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 567))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 27))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 568))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 27))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 569))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 27))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 570))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 27))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 571))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 27))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 572))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 27))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 573))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 27))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 574))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 28))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 575))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 28))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 576))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 28))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 577))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 28))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 578))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 28))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 579))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 28))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 580))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 28))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 581))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 29))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 582))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 29))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 583))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 29))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 584))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 29))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 585))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 29))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 586))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 29))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 587))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 29))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 630))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 30))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 631))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 30))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 632))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 30))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 633))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 30))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 634))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 30))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 635))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 30))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 636))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 30))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 637))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 31))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 638))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 31))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 639))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 31))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 640))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 31))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 641))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 31))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 642))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 31))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 643))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 31))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 644))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 32))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 645))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 32))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 646))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 32))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 647))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 32))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 648))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 32))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 649))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 32))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 650))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 32))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 693))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 33))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 694))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 33))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 695))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 33))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 696))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 33))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 697))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 33))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 698))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 33))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 699))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 33))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 700))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 34))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 701))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 34))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 702))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 34))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 703))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 34))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 704))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 34))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 705))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 34))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 706))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 34))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 707))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 35))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 708))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 35))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 709))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 35))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 710))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 35))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 711))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 35))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 712))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 35))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 713))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 35))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 756))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 36))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 757))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 36))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 758))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 36))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 759))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 36))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 760))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 36))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 761))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 36))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 762))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 36))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 763))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 37))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 764))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 37))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 765))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 37))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 766))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 37))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 767))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 37))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 768))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 37))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 769))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 37))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 770))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 38))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 771))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 38))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 772))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 38))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 773))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 38))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 774))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 38))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 775))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 38))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 776))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 38))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 819))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 39))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 820))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 39))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 821))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 39))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 822))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 39))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 823))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 39))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 824))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 39))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 825))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 39))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 826))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 40))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 827))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 40))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 828))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 40))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 829))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 40))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 830))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 40))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 831))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 40))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 832))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 40))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 833))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 41))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 834))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 41))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 835))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 41))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 836))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 41))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 837))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 41))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 838))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 41))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 839))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 41))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 882))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 42))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 883))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 42))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 884))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 42))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 885))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 42))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 886))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 42))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 887))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 42))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 888))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 42))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 889))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 43))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 890))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 43))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 891))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 43))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 892))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 43))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 893))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 43))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 894))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 43))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 895))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 43))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 896))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 44))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 897))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 44))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 898))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 44))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 899))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 44))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 900))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 44))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 901))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 44))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 902))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 44))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 945))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 45))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 946))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 45))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 947))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 45))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 948))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 45))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 949))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 45))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 950))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 45))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 951))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 45))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 952))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 46))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 953))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 46))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 954))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 46))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 955))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 46))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 956))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 46))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 957))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 46))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 958))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 46))]));
+          compute1[(0)] = (compute1[(0)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 959))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 47))]));
+          compute1[(1)] = (compute1[(1)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 960))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 47))]));
+          compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 961))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 47))]));
+          compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 962))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 47))]));
+          compute1[(4)] = (compute1[(4)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 963))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 47))]));
+          compute1[(5)] = (compute1[(5)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 964))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 47))]));
+          compute1[(6)] = (compute1[(6)] + (pad_temp_shared[((((((int)threadIdx.x) % 7) * 7) + 965))] * kernel_shared[((((((int)threadIdx.x) / 7) * 48) + 47))]));
         }
       }
-      compute[((((((int)blockIdx.x) * 196) + ((((int)threadIdx.x) / 7) * 49)) + (((int)threadIdx.x) % 7)))] = max((compute1[(0)] + bias[(((((int)blockIdx.x) * 4) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
-      compute[(((((((int)blockIdx.x) * 196) + ((((int)threadIdx.x) / 7) * 49)) + (((int)threadIdx.x) % 7)) + 7))] = max((compute1[(1)] + bias[(((((int)blockIdx.x) * 4) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
-      compute[(((((((int)blockIdx.x) * 196) + ((((int)threadIdx.x) / 7) * 49)) + (((int)threadIdx.x) % 7)) + 14))] = max((compute1[(2)] + bias[(((((int)blockIdx.x) * 4) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
-      compute[(((((((int)blockIdx.x) * 196) + ((((int)threadIdx.x) / 7) * 49)) + (((int)threadIdx.x) % 7)) + 21))] = max((compute1[(3)] + bias[(((((int)blockIdx.x) * 4) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
-      compute[(((((((int)blockIdx.x) * 196) + ((((int)threadIdx.x) / 7) * 49)) + (((int)threadIdx.x) % 7)) + 28))] = max((compute1[(4)] + bias[(((((int)blockIdx.x) * 4) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
-      compute[(((((((int)blockIdx.x) * 196) + ((((int)threadIdx.x) / 7) * 49)) + (((int)threadIdx.x) % 7)) + 35))] = max((compute1[(5)] + bias[(((((int)blockIdx.x) * 4) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
-      compute[(((((((int)blockIdx.x) * 196) + ((((int)threadIdx.x) / 7) * 49)) + (((int)threadIdx.x) % 7)) + 42))] = max((compute1[(6)] + bias[(((((int)blockIdx.x) * 4) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
+      compute[(((((int)blockIdx.x) * 392) + (((int)threadIdx.x) * 7)))] = max((compute1[(0)] + bias[(((((int)blockIdx.x) * 8) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
+      compute[((((((int)blockIdx.x) * 392) + (((int)threadIdx.x) * 7)) + 1))] = max((compute1[(1)] + bias[(((((int)blockIdx.x) * 8) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
+      compute[((((((int)blockIdx.x) * 392) + (((int)threadIdx.x) * 7)) + 2))] = max((compute1[(2)] + bias[(((((int)blockIdx.x) * 8) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
+      compute[((((((int)blockIdx.x) * 392) + (((int)threadIdx.x) * 7)) + 3))] = max((compute1[(3)] + bias[(((((int)blockIdx.x) * 8) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
+      compute[((((((int)blockIdx.x) * 392) + (((int)threadIdx.x) * 7)) + 4))] = max((compute1[(4)] + bias[(((((int)blockIdx.x) * 8) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
+      compute[((((((int)blockIdx.x) * 392) + (((int)threadIdx.x) * 7)) + 5))] = max((compute1[(5)] + bias[(((((int)blockIdx.x) * 8) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
+      compute[((((((int)blockIdx.x) * 392) + (((int)threadIdx.x) * 7)) + 6))] = max((compute1[(6)] + bias[(((((int)blockIdx.x) * 8) + (((int)threadIdx.x) / 7)))]), 0.000000e+00f);
     }
 
 
@@ -551,6 +1245,11 @@ In the example below we resume the status and do more 5 trials.
 
 
 
+.. rst-class:: sphx-glr-timing
+
+   **Total running time of the script:** ( 1 minutes  3.026 seconds)
+
+
 .. _sphx_glr_download_tutorials_auto_scheduler_tune_conv2d_layer_cuda.py:
 
 
diff --git a/docs/_sources/tutorials/auto_scheduler/tune_network_arm.rst.txt b/docs/_sources/tutorials/auto_scheduler/tune_network_arm.rst.txt
index 199fd09..301c726 100644
--- a/docs/_sources/tutorials/auto_scheduler/tune_network_arm.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/tune_network_arm.rst.txt
@@ -668,7 +668,7 @@ Other Tips
    in function :code:`run_tuning`. Say,
    :code:`tuner = auto_scheduler.TaskScheduler(tasks, task_weights, load_log_file=log_file)`
 4. If you have multiple target CPUs, you can use all of them for measurements to
-   parallelize the measurements. Check this :ref:`section <tutorials-autotvm-rpc-tracker>`
+   parallelize the measurements. Check this :ref:`section <tutorials-autotvm-scale-up-rpc-tracker>`
    to learn how to use the RPC Tracker and RPC Server.
    To use the RPC Tracker in auto-scheduler, replace the runner in :code:`TuningOptions`
    with :any:`auto_scheduler.RPCRunner`.
diff --git a/docs/_sources/tutorials/auto_scheduler/tune_network_cuda.rst.txt b/docs/_sources/tutorials/auto_scheduler/tune_network_cuda.rst.txt
index 541f182..3ae90b5 100644
--- a/docs/_sources/tutorials/auto_scheduler/tune_network_cuda.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/tune_network_cuda.rst.txt
@@ -614,7 +614,7 @@ so we can read the log file and load the best schedules.
 
     Compile...
     Evaluate inference time cost...
-    Mean inference time (std dev): 2.43 ms (0.00 ms)
+    Mean inference time (std dev): 2.44 ms (0.00 ms)
 
 
 
diff --git a/docs/_sources/tutorials/auto_scheduler/tune_network_mali.rst.txt b/docs/_sources/tutorials/auto_scheduler/tune_network_mali.rst.txt
index f25ac86..96e6e42 100644
--- a/docs/_sources/tutorials/auto_scheduler/tune_network_mali.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/tune_network_mali.rst.txt
@@ -207,7 +207,7 @@ The task scheduler will just optimize this objective.
  .. code-block:: none
 
     Extract tasks...
-
    ...2%, 0.01 MB, 52 KB/s, 0 seconds passed
    ...5%, 0.02 MB, 104 KB/s, 0 seconds passed
    ...7%, 0.02 MB, 157 KB/s, 0 seconds passed
    ...10%, 0.03 MB, 209 KB/s, 0 seconds passed
    ...12%, 0.04 MB, 261 KB/s, 0 seconds passed
    ...15%, 0.05 MB, 313 KB/s, 0 seconds passed
    ...18%, 0.05 MB, 364 KB/s, 0 seconds passed
    ...20%, 0.06 MB, 416 KB/s, 0 seconds passed
    ...23%, 0.07 MB, 468 KB/s, 0 seconds passed
    ...25%, 0.08 MB, 519 KB/s, 0 seconds passed
    ...28%, 0.09 MB, 571 KB/s, 0 seconds passed
    ...30%, 0.09 MB, 622 KB/s, 0 seconds passed
    ...33%, 0.10 MB, 672 KB/s, 0 seconds passed
    ...36%, 0.11 MB, 723 KB/s, 0 seconds passed
    ...38%, 0.12 MB, 774 KB/s, 0 seconds passed
    ...41%, 0.12 MB, 824 KB/s, 0 seconds passed
    ...43%, 0.13 MB, 873 KB/s, 0 seconds passed
    ...46%, 0.14 MB, 923 KB/s, 0 seconds passed
    ...48%, 0.15 MB, 974 KB/s, 0 seconds passed
    ...51%, 0.16 MB, 1024 KB/s, 0 seconds passed
    ...54%, 0.16 MB, 1072 KB/s, 0 secon
 ds passed
    ...56%, 0.17 MB, 1121 KB/s, 0 seconds passed
    ...59%, 0.18 MB, 1171 KB/s, 0 seconds passed
    ...61%, 0.19 MB, 1221 KB/s, 0 seconds passed
    ...64%, 0.20 MB, 1271 KB/s, 0 seconds passed
    ...66%, 0.20 MB, 1320 KB/s, 0 seconds passed
    ...69%, 0.21 MB, 1368 KB/s, 0 seconds passed
    ...72%, 0.22 MB, 1417 KB/s, 0 seconds passed
    ...74%, 0.23 MB, 1466 KB/s, 0 seconds passed
    ...77%, 0.23 MB, 1515 KB/s, 0 seconds passed
    ...79%, 0.24 MB, 1563 KB/s, 0 seconds passed
    ...82%, 0.25 MB, 1612 KB/s, 0 seconds passed
    ...84%, 0.26 MB, 1661 KB/s, 0 seconds passed
    ...87%, 0.27 MB, 1710 KB/s, 0 seconds passed
    ...90%, 0.27 MB, 1758 KB/s, 0 seconds passed
    ...92%, 0.28 MB, 1806 KB/s, 0 seconds passed
    ...95%, 0.29 MB, 1855 KB/s, 0 seconds passed
    ...97%, 0.30 MB, 1904 KB/s, 0 seconds passed
    ...100%, 0.30 MB, 1950 KB/s, 0 seconds passed
+
    ...2%, 0.01 MB, 49 KB/s, 0 seconds passed
    ...5%, 0.02 MB, 98 KB/s, 0 seconds passed
    ...7%, 0.02 MB, 147 KB/s, 0 seconds passed
    ...10%, 0.03 MB, 196 KB/s, 0 seconds passed
    ...12%, 0.04 MB, 245 KB/s, 0 seconds passed
    ...15%, 0.05 MB, 294 KB/s, 0 seconds passed
    ...18%, 0.05 MB, 342 KB/s, 0 seconds passed
    ...20%, 0.06 MB, 391 KB/s, 0 seconds passed
    ...23%, 0.07 MB, 438 KB/s, 0 seconds passed
    ...25%, 0.08 MB, 487 KB/s, 0 seconds passed
    ...28%, 0.09 MB, 535 KB/s, 0 seconds passed
    ...30%, 0.09 MB, 583 KB/s, 0 seconds passed
    ...33%, 0.10 MB, 631 KB/s, 0 seconds passed
    ...36%, 0.11 MB, 678 KB/s, 0 seconds passed
    ...38%, 0.12 MB, 724 KB/s, 0 seconds passed
    ...41%, 0.12 MB, 772 KB/s, 0 seconds passed
    ...43%, 0.13 MB, 819 KB/s, 0 seconds passed
    ...46%, 0.14 MB, 867 KB/s, 0 seconds passed
    ...48%, 0.15 MB, 914 KB/s, 0 seconds passed
    ...51%, 0.16 MB, 961 KB/s, 0 seconds passed
    ...54%, 0.16 MB, 1006 KB/s, 0 seconds
  passed
    ...56%, 0.17 MB, 1053 KB/s, 0 seconds passed
    ...59%, 0.18 MB, 1100 KB/s, 0 seconds passed
    ...61%, 0.19 MB, 1147 KB/s, 0 seconds passed
    ...64%, 0.20 MB, 1193 KB/s, 0 seconds passed
    ...66%, 0.20 MB, 1240 KB/s, 0 seconds passed
    ...69%, 0.21 MB, 1283 KB/s, 0 seconds passed
    ...72%, 0.22 MB, 1329 KB/s, 0 seconds passed
    ...74%, 0.23 MB, 1376 KB/s, 0 seconds passed
    ...77%, 0.23 MB, 1422 KB/s, 0 seconds passed
    ...79%, 0.24 MB, 1468 KB/s, 0 seconds passed
    ...82%, 0.25 MB, 1514 KB/s, 0 seconds passed
    ...84%, 0.26 MB, 1556 KB/s, 0 seconds passed
    ...87%, 0.27 MB, 1602 KB/s, 0 seconds passed
    ...90%, 0.27 MB, 1648 KB/s, 0 seconds passed
    ...92%, 0.28 MB, 1693 KB/s, 0 seconds passed
    ...95%, 0.29 MB, 1739 KB/s, 0 seconds passed
    ...97%, 0.30 MB, 1784 KB/s, 0 seconds passed
    ...100%, 0.30 MB, 1827 KB/s, 0 seconds passed
     ========== Task 0  (workload key: ["d7b65649a4dd54becea0a52aabbc5af5", 1, 1000, 1, 1000]) ==========
     placeholder = PLACEHOLDER [1, 1000]
     T_softmax_maxelem(i0) max= placeholder[i0, k]
diff --git a/docs/_sources/tutorials/auto_scheduler/tune_network_x86.rst.txt b/docs/_sources/tutorials/auto_scheduler/tune_network_x86.rst.txt
index 4e3a944..84ececf 100644
--- a/docs/_sources/tutorials/auto_scheduler/tune_network_x86.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/tune_network_x86.rst.txt
@@ -633,7 +633,7 @@ so we can read the log file and load the best schedules.
 
     Compile...
     Evaluate inference time cost...
-    Mean inference time (std dev): 1132.91 ms (25.38 ms)
+    Mean inference time (std dev): 601.80 ms (1.87 ms)
 
 
 
diff --git a/docs/_sources/tutorials/auto_scheduler/tune_sparse_x86.rst.txt b/docs/_sources/tutorials/auto_scheduler/tune_sparse_x86.rst.txt
index 66f2e91..73bc15c 100644
--- a/docs/_sources/tutorials/auto_scheduler/tune_sparse_x86.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/tune_sparse_x86.rst.txt
@@ -354,32 +354,60 @@ layout transformation, parallelization, vectorization, unrolling, and operator f
     Lowered TIR:
     primfn(placeholder_5: handle, placeholder_6: handle, placeholder_7: handle, placeholder_8: handle, placeholder_9: handle, compute_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {placeholder_4: Buffer(placeholder_10: Pointer(float32), float32, [128, 256], []),
-                 placeholder_3: Buffer(placeholder_11: Pointer(int32), int32, [4916], []),
-                 placeholder_1: Buffer(placeholder_12: Pointer(float32), float32, [4916, 16, 1], []),
+      buffers = {compute: Buffer(compute_2: Pointer(float32), float32, [128, 512], []),
+                 placeholder_4: Buffer(placeholder_10: Pointer(float32), float32, [128, 512], []),
+                 placeholder_3: Buffer(placeholder_11: Pointer(float32), float32, [128, 256], []),
+                 placeholder_2: Buffer(placeholder_12: Pointer(float32), float32, [4916, 16, 1], []),
                  placeholder: Buffer(placeholder_13: Pointer(int32), int32, [33], []),
-                 placeholder_2: Buffer(placeholder_14: Pointer(float32), float32, [128, 512], []),
-                 compute: Buffer(compute_2: Pointer(float32), float32, [128, 512], [])}
-      buffer_map = {placeholder_8: placeholder, compute_1: compute, placeholder_6: placeholder_1, placeholder_9: placeholder_2, placeholder_7: placeholder_3, placeholder_5: placeholder_4} {
-      for (i0.outer.i1.outer.fused: int32, 0, 128) "parallel" {
+                 placeholder_1: Buffer(placeholder_14: Pointer(int32), int32, [4916], [])}
+      buffer_map = {placeholder_8: placeholder, placeholder_7: placeholder_1, placeholder_6: placeholder_2, placeholder_5: placeholder_3, placeholder_9: placeholder_4, compute_1: compute} {
+      for (i0.outer.i1.outer.fused: int32, 0, 32) "parallel" {
         attr [compute_3: Pointer(float32)] "storage_scope" = "global";
-        allocate(compute_3, float32, [512]) {
+        allocate(compute_3, float32, [2048]) {
           for (i.outer.inner: int32, 0, 8) {
-            for (i.inner.init: int32, 0, 4) {
-              for (j.init: int32, 0, 16) {
-                compute_3[(((i.outer.inner*64) + (i.inner.init*16)) + j.init)] = 0f32
-              }
+            for (i.inner.init: int32, 0, 16) {
+              compute_3[((i.outer.inner*256) + (i.inner.init*16))] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 1)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 2)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 3)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 4)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 5)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 6)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 7)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 8)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 9)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 10)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 11)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 12)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 13)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 14)] = 0f32
+              compute_3[(((i.outer.inner*256) + (i.inner.init*16)) + 15)] = 0f32
             }
-            for (elem_idx: int32, 0, ((int32*)placeholder_13[(floormod(i0.outer.i1.outer.fused, 32) + 1)] - (int32*)placeholder_13[floormod(i0.outer.i1.outer.fused, 32)])) {
-              for (i.inner: int32, 0, 4) {
-                for (j: int32, 0, 16) {
-                  compute_3[(((i.outer.inner*64) + (i.inner*16)) + j)] = ((float32*)compute_3[(((i.outer.inner*64) + (i.inner*16)) + j)] + ((float32*)placeholder_12[((((int32*)placeholder_13[floormod(i0.outer.i1.outer.fused, 32)]*16) + (elem_idx*16)) + j)]*max((float32*)placeholder_10[((((floordiv(i0.outer.i1.outer.fused, 32)*8192) + (i.outer.inner*1024)) + (i.inner*256)) + (int32*)placeholder_11[((int32*)placeholder_13[floormod(i0.outer.i1.outer.fused, 32)] + elem_idx)])], 0f32)))
-                }
+            for (elem_idx: int32, 0, ((int32*)placeholder_13[(i0.outer.i1.outer.fused + 1)] - (int32*)placeholder_13[i0.outer.i1.outer.fused])) {
+              for (i.inner: int32, 0, 16) {
+                compute_3[((i.outer.inner*256) + (i.inner*16))] = ((float32*)compute_3[((i.outer.inner*256) + (i.inner*16))] + ((float32*)placeholder_12[(((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16))]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 1)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 1)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 1)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 2)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 2)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 2)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 3)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 3)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 3)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 4)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 4)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 4)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 5)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 5)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 5)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 6)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 6)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 6)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 7)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 7)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 7)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 8)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 8)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 8)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 9)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 9)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 9)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 10)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 10)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 10)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 11)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 11)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 11)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 12)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 12)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 12)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 13)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 13)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 13)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 14)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 14)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 14)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                compute_3[(((i.outer.inner*256) + (i.inner*16)) + 15)] = ((float32*)compute_3[(((i.outer.inner*256) + (i.inner*16)) + 15)] + ((float32*)placeholder_12[((((int32*)placeholder_13[i0.outer.i1.outer.fused]*16) + (elem_idx*16)) + 15)]*max((float32*)placeholder_11[(((i.outer.inner*4096) + (i.inner*256)) + (int32*)placeholder_14[((int32*)placeholder_13[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
               }
             }
           }
-          for (i0.inner: int32, 0, 32) {
-            compute_2[ramp((((floordiv(i0.outer.i1.outer.fused, 32)*16384) + (i0.inner*512)) + (floormod(i0.outer.i1.outer.fused, 32)*16)), 1, 16)] = max(((float32x16*)compute_3[ramp((i0.inner*16), 1, 16)] + (float32x16*)placeholder_14[ramp((((floordiv(i0.outer.i1.outer.fused, 32)*16384) + (i0.inner*512)) + (floormod(i0.outer.i1.outer.fused, 32)*16)), 1, 16)]), broadcast(0f32, 16))
+          for (i0.inner: int32, 0, 128) {
+            for (i1.inner: int32, 0, 16) {
+              compute_2[(((i0.inner*512) + (i0.outer.i1.outer.fused*16)) + i1.inner)] = max(((float32*)compute_3[((i0.inner*16) + i1.inner)] + (float32*)placeholder_10[(((i0.inner*512) + (i0.outer.i1.outer.fused*16)) + i1.inner)]), 0f32)
+            }
           }
         }
       }
@@ -433,7 +461,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 0.876 ms
+    Execution time of this operator: 0.906 ms
 
 
 
diff --git a/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt b/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt
index 3169246..af17563 100644
--- a/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:40.720** total execution time for **tutorials_autotvm** files:
+**00:41.697** total execution time for **tutorials_autotvm** files:
 
-- **00:40.047**: :ref:`sphx_glr_tutorials_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)
-- **00:00.173**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)
-- **00:00.170**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)
-- **00:00.167**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_mobile_gpu.py` (``tune_relay_mobile_gpu.py``)
-- **00:00.163**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)
+- **00:41.028**: :ref:`sphx_glr_tutorials_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)
+- **00:00.176**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)
+- **00:00.171**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)
+- **00:00.162**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_mobile_gpu.py` (``tune_relay_mobile_gpu.py``)
+- **00:00.161**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)
diff --git a/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt b/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt
index a677631..213b0c0 100644
--- a/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt
+++ b/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt
@@ -76,7 +76,7 @@ template is very general. Actually this template can be easily modified
 to tune other operators such as depthwise convolution and gemm.
 In order to fully understand this template, you should be familiar with
 the schedule primitives and auto tuning API. You can refer to the above
-tutorials and :doc:`autotvm tutorial <tune_simple_template>`
+tutorials and :ref:`autotvm tutorial <tutorial-autotvm-matmul-x86>`
 
 It is worth noting that the search space for a conv2d operator
 can be very large (at the level of 10^9 for some input shapes)
@@ -242,26 +242,26 @@ for this template
        7 unroll_explicit: OtherOption([0, 1]) len=2
     )
     Get devices for measurement successfully!
-    No: 1   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 2   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 3   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 4   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 5   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 6   GFLOPS: 90.13/90.13     result: MeasureResult(costs=(0.0025684365384615387,), error_no=0, all_cost=1.6944539546966553, timestamp=1623018908.8711293)    [('tile_f', [-1, 1, 1, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 4, 4]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,3754080
-    No: 7   GFLOPS: 0.00/90.13      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 8   GFLOPS: 0.00/90.13      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 9   GFLOPS: 0.00/90.13      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 10  GFLOPS: 0.00/90.13      result: MeasureResult(costs=(RuntimeError('Traceback (most recent call last):\n  99: 0x00000000005099ff\n  98: 0x0000000000507cd3\n  97: _PyEval_EvalFrameDefault\n  96: 0x000000000050a3fc\n  95: 0x00000000005096c7\n  94: _PyEval_EvalFrameDefault\n  93: 0x000000000050a3fc\n  92: 0x00000000005096c7\n  91: _PyEval_EvalFrameDefault\n  90: 0x000000000050a3fc\n  89: 0x00000000005096c7\n  88: _PyEval_EvalFrameDefault\n  87: 0x000000000050a532\n  86: _PyObject [...]
-    No: 11  GFLOPS: 0.00/90.13      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 12  GFLOPS: 0.00/90.13      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 13  GFLOPS: 0.00/90.13      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 14  GFLOPS: 0.00/90.13      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 15  GFLOPS: 0.00/90.13      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 16  GFLOPS: 0.00/90.13      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 17  GFLOPS: 0.00/90.13      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 18  GFLOPS: 0.00/90.13      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1150\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
-    No: 19  GFLOPS: 0.00/90.13      result: MeasureResult(costs=(RuntimeError('Traceback (most recent call last):\n  99: 0x00000000005099ff\n  98: 0x0000000000507cd3\n  97: _PyEval_EvalFrameDefault\n  96: 0x000000000050a3fc\n  95: 0x00000000005096c7\n  94: _PyEval_EvalFrameDefault\n  93: 0x000000000050a3fc\n  92: 0x00000000005096c7\n  91: _PyEval_EvalFrameDefault\n  90: 0x000000000050a3fc\n  89: 0x00000000005096c7\n  88: _PyEval_EvalFrameDefault\n  87: 0x000000000050a532\n  86: _PyObject [...]
-    No: 20  GFLOPS: 180.87/180.87   result: MeasureResult(costs=(0.0012799667721518986,), error_no=0, all_cost=1.325697422027588, timestamp=1623018925.593863)      [('tile_f', [-1, 1, 4, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9881539
+    No: 1   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 2   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 3   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 4   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 5   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 6   GFLOPS: 108.76/108.76   result: MeasureResult(costs=(0.0021284664444444447,), error_no=0, all_cost=1.626126766204834, timestamp=1623307307.2898288)     [('tile_f', [-1, 1, 1, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 4, 4]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,3754080
+    No: 7   GFLOPS: 0.00/108.76     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 8   GFLOPS: 0.00/108.76     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 9   GFLOPS: 0.00/108.76     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 10  GFLOPS: 0.00/108.76     result: MeasureResult(costs=(RuntimeError('Traceback (most recent call last):\n  99: 0x00000000005099ff\n  98: 0x0000000000507cd3\n  97: _PyEval_EvalFrameDefault\n  96: 0x000000000050a3fc\n  95: 0x00000000005096c7\n  94: _PyEval_EvalFrameDefault\n  93: 0x000000000050a3fc\n  92: 0x00000000005096c7\n  91: _PyEval_EvalFrameDefault\n  90: 0x000000000050a3fc\n  89: 0x00000000005096c7\n  88: _PyEval_EvalFrameDefault\n  87: 0x000000000050a532\n  86: _PyObject [...]
+    No: 11  GFLOPS: 0.00/108.76     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 12  GFLOPS: 0.00/108.76     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 13  GFLOPS: 0.00/108.76     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 14  GFLOPS: 0.00/108.76     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 15  GFLOPS: 0.00/108.76     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 16  GFLOPS: 0.00/108.76     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 17  GFLOPS: 0.00/108.76     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 18  GFLOPS: 0.00/108.76     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  20: TVMFuncCall\n        at /workspace/src/runtime/c_runtime_api.cc:474\n  19: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const\n        at /workspace/include/tvm/runtime/packed_func.h:1151\n  18: std::function<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRet [...]
+    No: 19  GFLOPS: 0.00/108.76     result: MeasureResult(costs=(RuntimeError('Traceback (most recent call last):\n  99: 0x00000000005099ff\n  98: 0x0000000000507cd3\n  97: _PyEval_EvalFrameDefault\n  96: 0x000000000050a3fc\n  95: 0x00000000005096c7\n  94: _PyEval_EvalFrameDefault\n  93: 0x000000000050a3fc\n  92: 0x00000000005096c7\n  91: _PyEval_EvalFrameDefault\n  90: 0x000000000050a3fc\n  89: 0x00000000005096c7\n  88: _PyEval_EvalFrameDefault\n  87: 0x000000000050a532\n  86: _PyObject [...]
+    No: 20  GFLOPS: 179.84/179.84   result: MeasureResult(costs=(0.0012872528412698413,), error_no=0, all_cost=1.5482125282287598, timestamp=1623307324.5833743)    [('tile_f', [-1, 1, 4, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9881539
 
 
 
@@ -314,7 +314,7 @@ and measure running time.
 
     Best config:
     [('tile_f', [-1, 1, 4, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9881539
-    Time cost of this operator: 0.001361
+    Time cost of this operator: 0.001358
 
 
 
diff --git a/docs/_sources/tutorials/autotvm/tune_relay_arm.rst.txt b/docs/_sources/tutorials/autotvm/tune_relay_arm.rst.txt
index 56b3a82..a603d94 100644
--- a/docs/_sources/tutorials/autotvm/tune_relay_arm.rst.txt
+++ b/docs/_sources/tutorials/autotvm/tune_relay_arm.rst.txt
@@ -295,6 +295,10 @@ We will introduce a more sophisticated tuning scheduler in the future.
                 tuner_obj = XGBTuner(tsk, loss_type="rank")
             elif tuner == "xgb_knob":
                 tuner_obj = XGBTuner(tsk, loss_type="rank", feature_type="knob")
+            elif tuner == "xgb_itervar":
+                tuner_obj = XGBTuner(tsk, loss_type="rank", feature_type="itervar")
+            elif tuner == "xgb_curve":
+                tuner_obj = XGBTuner(tsk, loss_type="rank", feature_type="curve")
             elif tuner == "ga":
                 tuner_obj = GATuner(tsk, pop_size=50)
             elif tuner == "random":
@@ -308,7 +312,7 @@ We will introduce a more sophisticated tuning scheduler in the future.
                 if os.path.isfile(tmp_log_file):
                     tuner_obj.load_history(autotvm.record.load_from_file(tmp_log_file))
 
-            # do tuning
+            # process tuning
             tsk_trial = min(n_trial, len(tsk.config_space))
             tuner_obj.tune(
                 n_trial=tsk_trial,
diff --git a/docs/_sources/tutorials/dev/bring_your_own_datatypes.rst.txt b/docs/_sources/tutorials/dev/bring_your_own_datatypes.rst.txt
index 1666130..06e7912 100644
--- a/docs/_sources/tutorials/dev/bring_your_own_datatypes.rst.txt
+++ b/docs/_sources/tutorials/dev/bring_your_own_datatypes.rst.txt
@@ -521,7 +521,7 @@ Now, to actually convert the entire network, we have written `a pass in Relay <h
 
  .. code-block:: none
 
-      Check failed: (lower) is false: Intrinsic lowering function for target llvm, intrinsic name tir.sqrt, type 150 not found
+      Check failed: (lower) is false: FloatImm lowering function for target llvm type 150 not found
 
 
 
diff --git a/docs/_sources/tutorials/dev/sg_execution_times.rst.txt b/docs/_sources/tutorials/dev/sg_execution_times.rst.txt
index 5c6e797..cfcb0f9 100644
--- a/docs/_sources/tutorials/dev/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/dev/sg_execution_times.rst.txt
@@ -5,8 +5,8 @@
 
 Computation times
 =================
-**00:22.050** total execution time for **tutorials_dev** files:
+**00:22.263** total execution time for **tutorials_dev** files:
 
-- **00:21.493**: :ref:`sphx_glr_tutorials_dev_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``)
-- **00:00.365**: :ref:`sphx_glr_tutorials_dev_use_pass_infra.py` (``use_pass_infra.py``)
-- **00:00.192**: :ref:`sphx_glr_tutorials_dev_low_level_custom_pass.py` (``low_level_custom_pass.py``)
+- **00:21.735**: :ref:`sphx_glr_tutorials_dev_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``)
+- **00:00.353**: :ref:`sphx_glr_tutorials_dev_use_pass_infra.py` (``use_pass_infra.py``)
+- **00:00.175**: :ref:`sphx_glr_tutorials_dev_low_level_custom_pass.py` (``low_level_custom_pass.py``)
diff --git a/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt b/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt
index 818ca3b..5bc7dc6 100644
--- a/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt
@@ -417,7 +417,7 @@ Execute on TVM
 
     TVM prediction top-1: tiger cat
     Evaluate inference time cost...
-    Mean inference time (std dev): 4.78 ms (0.46 ms)
+    Mean inference time (std dev): 7.40 ms (1.26 ms)
 
 
 
diff --git a/docs/_sources/tutorials/frontend/deploy_object_detection_pytorch.rst.txt b/docs/_sources/tutorials/frontend/deploy_object_detection_pytorch.rst.txt
index 6b742ae..dc512d8 100644
--- a/docs/_sources/tutorials/frontend/deploy_object_detection_pytorch.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_object_detection_pytorch.rst.txt
@@ -246,7 +246,7 @@ Get boxes with score larger than 0.9
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 4 minutes  54.011 seconds)
+   **Total running time of the script:** ( 4 minutes  50.492 seconds)
 
 
 .. _sphx_glr_download_tutorials_frontend_deploy_object_detection_pytorch.py:
diff --git a/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt b/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt
index 8285ebc..656ad9c 100644
--- a/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt
@@ -350,7 +350,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
  .. code-block:: none
 
-    Elapsed average ms: 14.218015849999999
+    Elapsed average ms: 12.74692235
 
 
 
diff --git a/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt b/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt
index 6609fdb..8b005de 100644
--- a/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt
@@ -368,7 +368,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
  .. code-block:: none
 
-    Elapsed average ms: 33.370725379999996
+    Elapsed average ms: 33.41605432000001
 
 
 
@@ -401,7 +401,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  40.141 seconds)
+   **Total running time of the script:** ( 1 minutes  40.653 seconds)
 
 
 .. _sphx_glr_download_tutorials_frontend_deploy_prequantized_tflite.py:
diff --git a/docs/_sources/tutorials/frontend/deploy_ssd_gluoncv.rst.txt b/docs/_sources/tutorials/frontend/deploy_ssd_gluoncv.rst.txt
index 95c499e..d42fc8a 100644
--- a/docs/_sources/tutorials/frontend/deploy_ssd_gluoncv.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_ssd_gluoncv.rst.txt
@@ -199,7 +199,7 @@ Display result
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  11.732 seconds)
+   **Total running time of the script:** ( 1 minutes  11.247 seconds)
 
 
 .. _sphx_glr_download_tutorials_frontend_deploy_ssd_gluoncv.py:
diff --git a/docs/_sources/tutorials/frontend/from_onnx.rst.txt b/docs/_sources/tutorials/frontend/from_onnx.rst.txt
index bb9c1d8..04bad50 100644
--- a/docs/_sources/tutorials/frontend/from_onnx.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_onnx.rst.txt
@@ -142,7 +142,7 @@ provides a static definition of the input size.
 
  .. code-block:: none
 
-    /workspace/docs/../python/tvm/relay/frontend/onnx.py:3585: UserWarning: Mismatched attribute type in ' : kernel_shape'
+    /workspace/docs/../python/tvm/relay/frontend/onnx.py:3591: UserWarning: Mismatched attribute type in ' : kernel_shape'
 
     ==> Context: Bad node spec: input: "1" input: "2" output: "11" op_type: "Conv" attribute { name: "kernel_shape" ints: 5 ints: 5 } attribute { name: "strides" ints: 1 ints: 1 } attribute { name: "pads" ints: 2 ints: 2 ints: 2 ints: 2 } attribute { name: "dilations" ints: 1 ints: 1 } attribute { name: "group" i: 1 }
       warnings.warn(str(e))
diff --git a/docs/_sources/tutorials/frontend/from_tensorflow.rst.txt b/docs/_sources/tutorials/frontend/from_tensorflow.rst.txt
index bee37e2..ede0246 100644
--- a/docs/_sources/tutorials/frontend/from_tensorflow.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_tensorflow.rst.txt
@@ -193,9 +193,9 @@ Results:
 
  .. code-block:: none
 
-    /workspace/docs/../python/tvm/relay/frontend/tensorflow.py:3482: UserWarning: Ignore the passed shape. Shape in graphdef will be used for operator DecodeJpeg/contents.
+    /workspace/docs/../python/tvm/relay/frontend/tensorflow.py:520: UserWarning: Ignore the passed shape. Shape in graphdef will be used for operator DecodeJpeg/contents.
       "will be used for operator %s." % node.name
-    /workspace/docs/../python/tvm/relay/frontend/tensorflow.py:1002: UserWarning: DecodeJpeg: It's a pass through, please handle preprocessing before input
+    /workspace/docs/../python/tvm/relay/frontend/tensorflow_ops.py:994: UserWarning: DecodeJpeg: It's a pass through, please handle preprocessing before input
       warnings.warn("DecodeJpeg: It's a pass through, please handle preprocessing before input")
     Tensorflow protobuf imported to relay frontend.
 
diff --git a/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt b/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt
index 7d1a086..b7759ed 100644
--- a/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,24 +5,24 @@
 
 Computation times
 =================
-**10:41.206** total execution time for **tutorials_frontend** files:
+**10:37.232** total execution time for **tutorials_frontend** files:
 
-- **04:54.011**: :ref:`sphx_glr_tutorials_frontend_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``)
-- **01:40.141**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)
-- **01:11.732**: :ref:`sphx_glr_tutorials_frontend_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)
-- **00:26.443**: :ref:`sphx_glr_tutorials_frontend_from_tensorflow.py` (``from_tensorflow.py``)
-- **00:23.040**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized.py` (``deploy_prequantized.py``)
-- **00:19.237**: :ref:`sphx_glr_tutorials_frontend_deploy_quantized.py` (``deploy_quantized.py``)
-- **00:18.113**: :ref:`sphx_glr_tutorials_frontend_from_tflite.py` (``from_tflite.py``)
-- **00:18.061**: :ref:`sphx_glr_tutorials_frontend_from_darknet.py` (``from_darknet.py``)
-- **00:12.910**: :ref:`sphx_glr_tutorials_frontend_from_caffe2.py` (``from_caffe2.py``)
-- **00:11.651**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)
-- **00:10.039**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_android.py` (``deploy_model_on_android.py``)
-- **00:08.734**: :ref:`sphx_glr_tutorials_frontend_from_pytorch.py` (``from_pytorch.py``)
-- **00:07.398**: :ref:`sphx_glr_tutorials_frontend_from_mxnet.py` (``from_mxnet.py``)
-- **00:07.251**: :ref:`sphx_glr_tutorials_frontend_from_coreml.py` (``from_coreml.py``)
-- **00:07.140**: :ref:`sphx_glr_tutorials_frontend_from_keras.py` (``from_keras.py``)
-- **00:02.920**: :ref:`sphx_glr_tutorials_frontend_using_external_lib.py` (``using_external_lib.py``)
-- **00:01.359**: :ref:`sphx_glr_tutorials_frontend_from_onnx.py` (``from_onnx.py``)
-- **00:00.857**: :ref:`sphx_glr_tutorials_frontend_build_gcn.py` (``build_gcn.py``)
-- **00:00.168**: :ref:`sphx_glr_tutorials_frontend_deploy_sparse.py` (``deploy_sparse.py``)
+- **04:50.492**: :ref:`sphx_glr_tutorials_frontend_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``)
+- **01:40.653**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)
+- **01:11.247**: :ref:`sphx_glr_tutorials_frontend_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)
+- **00:26.145**: :ref:`sphx_glr_tutorials_frontend_from_tensorflow.py` (``from_tensorflow.py``)
+- **00:22.573**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized.py` (``deploy_prequantized.py``)
+- **00:19.146**: :ref:`sphx_glr_tutorials_frontend_deploy_quantized.py` (``deploy_quantized.py``)
+- **00:18.671**: :ref:`sphx_glr_tutorials_frontend_from_darknet.py` (``from_darknet.py``)
+- **00:17.904**: :ref:`sphx_glr_tutorials_frontend_from_tflite.py` (``from_tflite.py``)
+- **00:13.167**: :ref:`sphx_glr_tutorials_frontend_from_caffe2.py` (``from_caffe2.py``)
+- **00:11.902**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)
+- **00:10.133**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_android.py` (``deploy_model_on_android.py``)
+- **00:08.540**: :ref:`sphx_glr_tutorials_frontend_from_pytorch.py` (``from_pytorch.py``)
+- **00:07.426**: :ref:`sphx_glr_tutorials_frontend_from_mxnet.py` (``from_mxnet.py``)
+- **00:07.188**: :ref:`sphx_glr_tutorials_frontend_from_keras.py` (``from_keras.py``)
+- **00:07.103**: :ref:`sphx_glr_tutorials_frontend_from_coreml.py` (``from_coreml.py``)
+- **00:02.577**: :ref:`sphx_glr_tutorials_frontend_using_external_lib.py` (``using_external_lib.py``)
+- **00:01.362**: :ref:`sphx_glr_tutorials_frontend_from_onnx.py` (``from_onnx.py``)
+- **00:00.839**: :ref:`sphx_glr_tutorials_frontend_build_gcn.py` (``build_gcn.py``)
+- **00:00.166**: :ref:`sphx_glr_tutorials_frontend_deploy_sparse.py` (``deploy_sparse.py``)
diff --git a/docs/_sources/tutorials/get_started/tune_matmul_x86.rst.txt b/docs/_sources/tutorials/get_started/auto_scheduler_matmul_x86.rst.txt
similarity index 95%
rename from docs/_sources/tutorials/get_started/tune_matmul_x86.rst.txt
rename to docs/_sources/tutorials/get_started/auto_scheduler_matmul_x86.rst.txt
index 6199d7d..8a32653 100644
--- a/docs/_sources/tutorials/get_started/tune_matmul_x86.rst.txt
+++ b/docs/_sources/tutorials/get_started/auto_scheduler_matmul_x86.rst.txt
@@ -1,10 +1,10 @@
 .. note::
     :class: sphx-glr-download-link-note
 
-    Click :ref:`here <sphx_glr_download_tutorials_get_started_tune_matmul_x86.py>` to download the full example code
+    Click :ref:`here <sphx_glr_download_tutorials_get_started_auto_scheduler_matmul_x86.py>` to download the full example code
 .. rst-class:: sphx-glr-example-title
 
-.. _sphx_glr_tutorials_get_started_tune_matmul_x86.py:
+.. _sphx_glr_tutorials_get_started_auto_scheduler_matmul_x86.py:
 
 
 Optimizing Operators with Auto-scheduling
@@ -14,7 +14,7 @@ Optimizing Operators with Auto-scheduling
 In this tutorial, we will show how TVM's Auto Scheduling feature can find
 optimal schedules without the need for writing a custom template.
 
-Different from the template-based :ref:`<autotvm_matmul>` which relies on
+Different from the template-based :doc:`AutoTVM <autotvm_matmul_x86>` which relies on
 manual templates to define the search space, the auto-scheduler does not
 require any templates.  Users only need to write the computation declaration
 without any schedule commands or templates.  The auto-scheduler can
@@ -213,9 +213,9 @@ operator fusion.
     Lowered TIR:
     primfn(A_1: handle, B_1: handle, C_1: handle, out_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+      buffers = {out: Buffer(out_2: Pointer(float32), float32, [1024, 1024], []),
                  A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 out: Buffer(out_2: Pointer(float32), float32, [1024, 1024], []),
+                 C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
                  B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C, out_1: out} {
       attr [auto_scheduler_layout_transform: Pointer(float32)] "storage_scope" = "global";
@@ -299,7 +299,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 19.541 ms
+    Execution time of this operator: 17.525 ms
 
 
 
@@ -408,7 +408,7 @@ Expression (TE) language that demonstrates how TVM can optimize computational
 operations.
 
 
-.. _sphx_glr_download_tutorials_get_started_tune_matmul_x86.py:
+.. _sphx_glr_download_tutorials_get_started_auto_scheduler_matmul_x86.py:
 
 
 .. only :: html
@@ -420,13 +420,13 @@ operations.
 
   .. container:: sphx-glr-download
 
-     :download:`Download Python source code: tune_matmul_x86.py <tune_matmul_x86.py>`
+     :download:`Download Python source code: auto_scheduler_matmul_x86.py <auto_scheduler_matmul_x86.py>`
 
 
 
   .. container:: sphx-glr-download
 
-     :download:`Download Jupyter notebook: tune_matmul_x86.ipynb <tune_matmul_x86.ipynb>`
+     :download:`Download Jupyter notebook: auto_scheduler_matmul_x86.ipynb <auto_scheduler_matmul_x86.ipynb>`
 
 
 .. only:: html
diff --git a/docs/_sources/tutorials/get_started/autotvm_matmul.rst.txt b/docs/_sources/tutorials/get_started/autotvm_matmul_x86.rst.txt
similarity index 94%
rename from docs/_sources/tutorials/get_started/autotvm_matmul.rst.txt
rename to docs/_sources/tutorials/get_started/autotvm_matmul_x86.rst.txt
index 7bb9e01..05e2d37 100644
--- a/docs/_sources/tutorials/get_started/autotvm_matmul.rst.txt
+++ b/docs/_sources/tutorials/get_started/autotvm_matmul_x86.rst.txt
@@ -1,23 +1,24 @@
 .. note::
     :class: sphx-glr-download-link-note
 
-    Click :ref:`here <sphx_glr_download_tutorials_get_started_autotvm_matmul.py>` to download the full example code
+    Click :ref:`here <sphx_glr_download_tutorials_get_started_autotvm_matmul_x86.py>` to download the full example code
 .. rst-class:: sphx-glr-example-title
 
-.. _sphx_glr_tutorials_get_started_autotvm_matmul.py:
+.. _sphx_glr_tutorials_get_started_autotvm_matmul_x86.py:
 
 
-Optimizing Operators with Templates and AutoTVM
-===============================================
+.. _tutorial-autotvm-matmul-x86:
+
+Optimizing Operators with Schedule Templates and AutoTVM
+========================================================
 **Authors**:
 `Lianmin Zheng <https://github.com/merrymercy>`_,
 `Chris Hoge <https://github.com/hogepodge>`_
 
-In this tutorial, we will now show how the TVM Template Extension (TE) language
-can be used to write scheduling templates that can be searched by AutoTVM to
-find optimal configurations of scheduling variables. This process is called
-Auto-Tuning, and builds on TE to help automate the process of optimizing
-operations.
+In this tutorial, we show how the TVM Tensor Expression (TE) language
+can be used to write schedule templates that can be searched by AutoTVM to
+find the optimal schedule. This process is called Auto-Tuning, which helps
+automate the process of optimizing tensor computation.
 
 This tutorial builds on the previous `tutorial on how to write a matrix
 multiplication using TE <tensor_expr_get_started>`.
@@ -440,12 +441,12 @@ TVM to search a parameter space and choose optimized schedule configurations.
 To gain a deeper understanding of how this works, we recommend expanding on
 this example by adding new search parameters to the schedule based on
 schedule operations demonstated in the `Getting Started With Tensor
-Expressions <tensor_expr_get_started>_` tutorial In the upcoming sections, we
+Expressions <tensor_expr_get_started>_` tutorial. In the upcoming sections, we
 will demonstate the AutoScheduler, a method for TVM to optimize common
 operators without the need for the user to provide a user-defined template.
 
 
-.. _sphx_glr_download_tutorials_get_started_autotvm_matmul.py:
+.. _sphx_glr_download_tutorials_get_started_autotvm_matmul_x86.py:
 
 
 .. only :: html
@@ -457,13 +458,13 @@ operators without the need for the user to provide a user-defined template.
 
   .. container:: sphx-glr-download
 
-     :download:`Download Python source code: autotvm_matmul.py <autotvm_matmul.py>`
+     :download:`Download Python source code: autotvm_matmul_x86.py <autotvm_matmul_x86.py>`
 
 
 
   .. container:: sphx-glr-download
 
-     :download:`Download Jupyter notebook: autotvm_matmul.ipynb <autotvm_matmul.ipynb>`
+     :download:`Download Jupyter notebook: autotvm_matmul_x86.ipynb <autotvm_matmul_x86.ipynb>`
 
 
 .. only:: html
diff --git a/docs/_sources/tutorials/get_started/auto_tuning_with_python.rst.txt b/docs/_sources/tutorials/get_started/autotvm_relay_x86.rst.txt
similarity index 86%
rename from docs/_sources/tutorials/get_started/auto_tuning_with_python.rst.txt
rename to docs/_sources/tutorials/get_started/autotvm_relay_x86.rst.txt
index a04639d..20f4075 100644
--- a/docs/_sources/tutorials/get_started/auto_tuning_with_python.rst.txt
+++ b/docs/_sources/tutorials/get_started/autotvm_relay_x86.rst.txt
@@ -1,14 +1,14 @@
 .. note::
     :class: sphx-glr-download-link-note
 
-    Click :ref:`here <sphx_glr_download_tutorials_get_started_auto_tuning_with_python.py>` to download the full example code
+    Click :ref:`here <sphx_glr_download_tutorials_get_started_autotvm_relay_x86.py>` to download the full example code
 .. rst-class:: sphx-glr-example-title
 
-.. _sphx_glr_tutorials_get_started_auto_tuning_with_python.py:
+.. _sphx_glr_tutorials_get_started_autotvm_relay_x86.py:
 
 
-Compiling and Optimizing a Model with the Python AutoScheduler
-==============================================================
+Compiling and Optimizing a Model with the Python Interface (AutoTVM)
+====================================================================
 **Author**:
 `Chris Hoge <https://github.com/hogepodge>`_
 
@@ -229,7 +229,7 @@ runtime module from the library.
 
  .. code-block:: none
 
-
    ...47%, 0.01 MB, 483 KB/s, 0 seconds passed
    ...94%, 0.02 MB, 947 KB/s, 0 seconds passed
    ...100%, 0.02 MB, 1404 KB/s, 0 seconds passed
+
    ...47%, 0.01 MB, 640 KB/s, 0 seconds passed
    ...94%, 0.02 MB, 1253 KB/s, 0 seconds passed
    ...100%, 0.02 MB, 1857 KB/s, 0 seconds passed
 
 
 
@@ -296,7 +296,7 @@ standard deviation.
 
  .. code-block:: none
 
-    {'mean': 84.46302120108157, 'median': 84.24859350197949, 'std': 0.5331460822777307}
+    {'mean': 87.26180178113282, 'median': 86.47694665123709, 'std': 1.555106753601749}
 
 
 
@@ -412,6 +412,7 @@ In the simplest form, tuning requires you to provide three things:
         repeat=repeat,
         timeout=timeout,
         min_repeat_ms=min_repeat_ms,
+        enable_cpu_cache_flush=True,
     )
 
     # Create a simple structure for holding tuning options. We use an XGBoost
@@ -490,31 +491,31 @@ In the simplest form, tuning requires you to provide three things:
 
  .. code-block:: none
 
-
    [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  1/25]  Current/Best:   30.75/  68.58 GFLOPS | Progress: (10/10) | 12.72 s Done.
-
    [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  2/25]  Current/Best:    5.63/  48.86 GFLOPS | Progress: (10/10) | 12.70 s Done.
-
    [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  3/25]  Current/Best:   56.34/  69.89 GFLOPS | Progress: (10/10) | 4.08 s Done.
-
    [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  4/25]  Current/Best:   35.63/  99.00 GFLOPS | Progress: (10/10) | 4.33 s Done.
-
    [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  5/25]  Current/Best:   73.77/  73.77 GFLOPS | Progress: (10/10) | 4.04 s Done.
-
    [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  6/25]  Current/Best:   56.33/ 101.07 GFLOPS | Progress: (10/10) | 4.78 s Done.
-
    [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  7/25]  Current/Best:   77.71/  91.40 GFLOPS | Progress: (10/10) | 6.37 s Done.
-
    [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  8/25]  Current/Best:   41.30/  71.79 GFLOPS | Progress: (10/10) | 5.31 s Done.
-
    [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  9/25]  Current/Best:   56.41/  98.42 GFLOPS | Progress: (10/10) | 4.44 s Done.
-
    [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 10/25]  Current/Best:   50.77/  78.14 GFLOPS | Progress: (10/10) | 3.86 s Done.
-
    [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 11/25]  Current/Best:   71.29/ 104.68 GFLOPS | Progress: (10/10) | 4.66 s Done.
-
    [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 12/25]  Current/Best:   47.92/  86.42 GFLOPS | Progress: (10/10) | 3.63 s Done.
-
    [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 13/25]  Current/Best:   44.70/  58.88 GFLOPS | Progress: (10/10) | 12.93 s Done.
-
    [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 14/25]  Current/Best:   76.40/ 109.70 GFLOPS | Progress: (10/10) | 3.68 s Done.
-
    [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 15/25]  Current/Best:   73.47/  73.47 GFLOPS | Progress: (10/10) | 4.28 s Done.
-
    [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 16/25]  Current/Best:   63.63/  90.05 GFLOPS | Progress: (10/10) | 4.25 s Done.
-
    [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 17/25]  Current/Best:   77.19/  81.97 GFLOPS | Progress: (10/10) | 5.67 s Done.
-
    [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 18/25]  Current/Best:   56.11/  69.52 GFLOPS | Progress: (10/10) | 12.79 s Done.
-
    [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 19/25]  Current/Best:   38.56/ 106.38 GFLOPS | Progress: (10/10) | 4.07 s Done.
-
    [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 20/25]  Current/Best:   57.57/  58.49 GFLOPS | Progress: (10/10) | 3.58 s Done.
-
    [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 21/25]  Current/Best:   48.15/  49.04 GFLOPS | Progress: (10/10) | 3.72 s Done.
-
    [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 22/25]  Current/Best:   55.31/  89.96 GFLOPS | Progress: (10/10) | 4.68 s Done.
-
    [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 23/25]  Current/Best:   27.84/ 106.65 GFLOPS | Progress: (10/10) | 3.86 s Done.
-
    [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 24/25]  Current/Best:   84.77/  84.77 GFLOPS | Progress: (10/10) | 8.54 s Done.
-
    [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 25/25]  Current/Best:   71.96/ 107.68 GFLOPS | Progress: (10/10) | 6.63 s Done.
+
    [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  1/25]  Current/Best:   42.20/  46.65 GFLOPS | Progress: (10/10) | 13.01 s Done.
+
    [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  2/25]  Current/Best:   41.51/  41.51 GFLOPS | Progress: (10/10) | 11.66 s Done.
+
    [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  3/25]  Current/Best:   34.45/  62.36 GFLOPS | Progress: (10/10) | 6.26 s Done.
+
    [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  4/25]  Current/Best:   10.98/ 111.38 GFLOPS | Progress: (10/10) | 7.29 s Done.
+
    [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  5/25]  Current/Best:   57.91/  68.41 GFLOPS | Progress: (10/10) | 4.28 s Done.
+
    [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  6/25]  Current/Best:   89.34/  92.15 GFLOPS | Progress: (10/10) | 5.34 s Done.
+
    [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  7/25]  Current/Best:   78.30/  91.91 GFLOPS | Progress: (10/10) | 5.96 s Done.
+
    [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  8/25]  Current/Best:   68.40/  76.25 GFLOPS | Progress: (10/10) | 3.78 s Done.
+
    [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  9/25]  Current/Best:   21.48/  95.98 GFLOPS | Progress: (10/10) | 4.55 s Done.
+
    [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 10/25]  Current/Best:   71.68/  71.68 GFLOPS | Progress: (10/10) | 5.04 s Done.
+
    [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 11/25]  Current/Best:   96.64/  96.64 GFLOPS | Progress: (10/10) | 4.77 s Done.
+
    [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 12/25]  Current/Best:   86.06/  87.73 GFLOPS | Progress: (10/10) | 4.75 s Done.
+
    [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 13/25]  Current/Best:   55.04/  58.46 GFLOPS | Progress: (10/10) | 8.75 s Done.
+
    [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 14/25]  Current/Best:   36.51/ 109.11 GFLOPS | Progress: (10/10) | 4.86 s Done.
+
    [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 15/25]  Current/Best:   49.03/  72.56 GFLOPS | Progress: (10/10) | 4.59 s Done.
+
    [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 16/25]  Current/Best:   99.69/ 101.22 GFLOPS | Progress: (10/10) | 3.90 s Done.
+
    [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 17/25]  Current/Best:   22.12/  94.84 GFLOPS | Progress: (10/10) | 5.57 s Done.
+
    [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 18/25]  Current/Best:   68.71/  68.71 GFLOPS | Progress: (10/10) | 6.31 s Done.
+
    [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 19/25]  Current/Best:   90.57/ 101.14 GFLOPS | Progress: (10/10) | 4.84 s Done.
+
    [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 20/25]  Current/Best:   57.69/  73.52 GFLOPS | Progress: (10/10) | 5.36 s Done.
+
    [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 21/25]  Current/Best:   55.24/  55.24 GFLOPS | Progress: (10/10) | 3.70 s Done.
+
    [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 22/25]  Current/Best:   65.76/ 104.18 GFLOPS | Progress: (10/10) | 4.48 s Done.
+
    [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 23/25]  Current/Best:   51.16/  98.47 GFLOPS | Progress: (10/10) | 8.39 s Done.
+
    [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 24/25]  Current/Best:   67.09/  92.15 GFLOPS | Progress: (10/10) | 5.94 s Done.
+
    [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 25/25]  Current/Best:   74.86/  88.69 GFLOPS | Progress: (10/10) | 5.09 s Done.
 
 
 
@@ -657,8 +658,8 @@ improvement in comparing the optimized model to the unoptimized model.
 
  .. code-block:: none
 
-    optimized: {'mean': 82.90143675054424, 'median': 82.53361214883626, 'std': 2.258990517555402}
-    unoptimized: {'mean': 84.46302120108157, 'median': 84.24859350197949, 'std': 0.5331460822777307}
+    optimized: {'mean': 76.02714203065261, 'median': 75.40562159847468, 'std': 1.3964067266195654}
+    unoptimized: {'mean': 87.26180178113282, 'median': 86.47694665123709, 'std': 1.555106753601749}
 
 
 
@@ -678,10 +679,10 @@ profiling/benchmarking.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 3 minutes  26.284 seconds)
+   **Total running time of the script:** ( 3 minutes  29.557 seconds)
 
 
-.. _sphx_glr_download_tutorials_get_started_auto_tuning_with_python.py:
+.. _sphx_glr_download_tutorials_get_started_autotvm_relay_x86.py:
 
 
 .. only :: html
@@ -693,13 +694,13 @@ profiling/benchmarking.
 
   .. container:: sphx-glr-download
 
-     :download:`Download Python source code: auto_tuning_with_python.py <auto_tuning_with_python.py>`
+     :download:`Download Python source code: autotvm_relay_x86.py <autotvm_relay_x86.py>`
 
 
 
   .. container:: sphx-glr-download
 
-     :download:`Download Jupyter notebook: auto_tuning_with_python.ipynb <auto_tuning_with_python.ipynb>`
+     :download:`Download Jupyter notebook: autotvm_relay_x86.ipynb <autotvm_relay_x86.ipynb>`
 
 
 .. only:: html
diff --git a/docs/_sources/tutorials/get_started/cross_compilation_and_rpc.rst.txt b/docs/_sources/tutorials/get_started/cross_compilation_and_rpc.rst.txt
index 29c429b..63618c3 100644
--- a/docs/_sources/tutorials/get_started/cross_compilation_and_rpc.rst.txt
+++ b/docs/_sources/tutorials/get_started/cross_compilation_and_rpc.rst.txt
@@ -235,7 +235,7 @@ device and returns the measured cost. Network overhead is excluded.
 
  .. code-block:: none
 
-    1.813e-07 secs/op
+    1.743e-07 secs/op
 
 
 
diff --git a/docs/_sources/tutorials/get_started/install.rst.txt b/docs/_sources/tutorials/get_started/install.rst.txt
index 9887cdb..62f9206 100644
--- a/docs/_sources/tutorials/get_started/install.rst.txt
+++ b/docs/_sources/tutorials/get_started/install.rst.txt
@@ -15,8 +15,8 @@ Installing TVM
 
 Depending on your needs and your working environment, there are a few different
 methods for installing TVM. These include:
-    * Installing from source 
-    * Installing from third-party binary package.
+* Installing from source
+* Installing from third-party binary package.
 
 Installing from Source
 ----------------------
diff --git a/docs/_sources/tutorials/get_started/introduction.rst.txt b/docs/_sources/tutorials/get_started/introduction.rst.txt
index c7d8d3c..cef6079 100644
--- a/docs/_sources/tutorials/get_started/introduction.rst.txt
+++ b/docs/_sources/tutorials/get_started/introduction.rst.txt
@@ -11,7 +11,8 @@ Introduction
 ============
 **Authors**:
 `Jocelyn Shiue <https://github.com/>`_,
-`Chris Hoge <https://github.com/hogepodge>`_
+`Chris Hoge <https://github.com/hogepodge>`_,
+`Lianmin Zheng <https://github.com/merrymercy>`_
 
 Apache TVM is an open source machine learning compiler framework for CPUs,
 GPUs, and machine learning accelerators. It aims to enable machine learning
@@ -27,11 +28,11 @@ Contents
 
 #. :doc:`Introduction <introduction>`
 #. :doc:`Installing TVM <install>`
-#. :doc:`Compiling and Optimizing a Model with TVMC <tvmc_command_line_driver>`
-#. :doc:`Compiling and Optimizing a Model with the Python AutoScheduler <auto_tuning_with_python>`
-#. :doc:`Working with Operators Using Tensor Expressions <tensor_expr_get_started>`
-#. :doc:`Optimizing Operators with Templates and AutoTVM <autotvm_matmul>`
-#. :doc:`Optimizing Operators with AutoScheduling <tune_matmul_x86>`
+#. :doc:`Compiling and Optimizing a Model with the Command Line Interface <tvmc_command_line_driver>`
+#. :doc:`Compiling and Optimizing a Model with the Python Interface <autotvm_relay_x86>`
+#. :doc:`Working with Operators Using Tensor Expression <tensor_expr_get_started>`
+#. :doc:`Optimizing Operators with Templates and AutoTVM <autotvm_matmul_x86>`
+#. :doc:`Optimizing Operators with Template-free AutoScheduler <auto_scheduler_matmul_x86>`
 #. :doc:`Cross Compilation and Remote Procedure Calls (RPC) <cross_compilation_and_rpc>`
 #. :doc:`Compiling Deep Learning Models for GPUs <relay_quick_start>`
 
@@ -41,18 +42,18 @@ An Overview of TVM and Model Optimization
 The diagram below illustrates the steps a machine model takes as it is
 transformed with the TVM optimizing compiler framework.
 
-.. image:: https://raw.githubusercontent.com/hogepodge/web-data/c339ebbbae41f3762873147c1e920a53a08963dd/images/getting_started/overview.png
+.. image:: https://raw.githubusercontent.com/apache/tvm-site/main/images/tutorial/overview.png
   :width: 100%
   :alt: A High Level View of TVM
 
 1. Import the model from a framework like *Tensorflow*, *Pytorch*, or *Onnx*.
    The importer layer is where TVM can ingest models from other frameworks, like
-   ONNX, Tensorflow, or PyTorch. The level of support that TVM offers for each
+   Tensorflow, PyTorch, or ONNX. The level of support that TVM offers for each
    frontend varies as we are constantly improving the open source project. If
    you're having issues importing your model into TVM, you may want to try
    converting it to ONNX.
 
-2. Translate to *Relay*, TVM's high level model language.
+2. Translate to *Relay*, TVM's high-level model language.
    A model that has been imported into TVM is represented in Relay. Relay is a
    functional language and intermediate representation (IR) for neural networks.
    It has support for:
@@ -62,46 +63,47 @@ transformed with the TVM optimizing compiler framework.
      differentiable language
    - Ability to allow the user to mix the two programming styles
 
-   Relay applies several high-level optimization to the model, after which
-   is runs the Relay Fusion Pass. To aid in the process of converting to
-   Relay, TVM includes a Tensor Operator Inventory (TOPI) that has pre-defined
-   templates of common computations.
+   Relay applies graph-level optimization passes to optimize the model.
 
 3. Lower to *Tensor Expression* (TE) representation. Lowering is when a
    higher-level representation is transformed into a lower-level
-   representation. In Relay Fusion Pass, the model is lowered from the
-   higher-level Relay representation into a smaller set of subgraphs, where
-   each node is a task. A task is a collection of computation templates,
-   expressed in TE, where there parameters of the template can control how
-   the computation is carried out on hardware. The specific ordering of compuation,
-   defined by parameters to the TE template, is called a schedule.
-
-4. Search for optimized schedule using *AutoTVM* or *AutoScheduler* for each
-   task through tuning. Tuning is the process of searching the TE parameter
-   space for a schedule that is optimized for target hardware. There are
-   couple of optimization options available, each requiring varying levels of
-   user interaction. The optimization options include:
-
-   - **AutoTVM**: The user specifies a search template for the schedule of a TE task,
-     or TE subraph. AutoTVM directs the search of the parameter space defined by the
-     template to produce an optimized configuration. AutoTVM requires users to
-     define manually templates for each operator as part of the TOPI.
-   - **Ansor/AutoSchedule**: Using a TVM Operator Inventory (TOPI) of operations,
-     Ansor can automatically search an optimization space with much less
-     intervention and guidance from the end user. Ansor depends on TE templates to
-     guide the search.
-
-5. Choose the optimal configuration for the model. After tuning, an optimal schedule
-   for each task is chosen. Regardless if it is AutoTVM or AutoSchedule,
-   schedule records in JSON format are produced that are referred to by this step
-   to build an optimized model.
-
-6. Lower to a hardware specific compiler. After selecting an optimized configuration
-   based on the tuning step, the model is then lowered to a representation
-   expected by the target compiler for the hardware platform. This is the
-   final code generation phase with the intention of producing an optimized
-   model that can be deployed into production. TVM supports a number of
-   different compiler backends including:
+   representation. After applying the high-level optimizations, Relay
+   runs FuseOps pass to partition the model into many small subgraphs and lowers
+   the subgraphs to TE representation. Tensor Expression (TE) is a
+   domain-specific language for describing tensor computations.
+   TE also provides several *schedule* primitives to specify low-level loop
+   optimizations, such as tiling, vectorization, parallelization,
+   unrolling, and fusion.
+   To aid in the process of converting Relay representation into TE representation,
+   TVM includes a Tensor Operator Inventory (TOPI) that has pre-defined
+   templates of common tensor operators (e.g., conv2d, transpose).
+
+4. Search for the best schedule using the auto-tuning module *AutoTVM* or *AutoScheduler*.
+   A schedule specifies the low-level loop optimizations for an operator or
+   subgraph defined in TE. Auto-tuning modules search for the best schedule
+   and compare them with cost models and on-device measurements.
+   There are two auto-tuning modules in TVM.
+
+   - **AutoTVM**: A template-based auto-tuning module. It runs search algorithms
+     to find the best values for the tunable knobs in a user-defined template.
+     For common operators, their templates are already provided in TOPI.
+   - **AutoScheduler (a.k.a. Ansor)**: A template-free auto-tuning module.
+     It does not require pre-defined schedule templates. Instead, it generates
+     the search space automatically by analyzing the computation definition.
+     It then searches for the best schedule in the generated search space.
+
+5. Choose the optimal configurations for model compilation. After tuning, the
+   auto-tuning module generates tuning records in JSON format. This step
+   picks the best schedule for each subgraph.
+
+6. Lower to Tensor Intermediate Representation (TIR), TVM's low-level
+   intermediate representation. After selecting the optimal configurations
+   based on the tuning step, each TE subgraph is lowered to TIR and be
+   optimized by low-level optimization passes. Next, the optimized TIR is
+   lowered to the target compiler of the hardware platform.
+   This is the final code generation phase to produce an optimized model
+   that can be deployed into production. TVM supports several different
+   compiler backends including:
 
    - LLVM, which can target arbitrary microprocessor architecture including
      standard x86 and ARM processors, AMDGPU and NVPTX code generation, and any
diff --git a/docs/_sources/tutorials/get_started/relay_quick_start.rst.txt b/docs/_sources/tutorials/get_started/relay_quick_start.rst.txt
index 5b70742..13ca881 100644
--- a/docs/_sources/tutorials/get_started/relay_quick_start.rst.txt
+++ b/docs/_sources/tutorials/get_started/relay_quick_start.rst.txt
@@ -225,7 +225,7 @@ in this example. Then the machine code will be generated as the module library.
 
  .. code-block:: none
 
-
    ...1%, 0.01 MB, 53 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 106 KB/s, 0 seconds passed
    ...5%, 0.02 MB, 159 KB/s, 0 seconds passed
    ...6%, 0.03 MB, 212 KB/s, 0 seconds passed
    ...8%, 0.04 MB, 265 KB/s, 0 seconds passed
    ...10%, 0.05 MB, 318 KB/s, 0 seconds passed
    ...11%, 0.05 MB, 370 KB/s, 0 seconds passed
    ...13%, 0.06 MB, 422 KB/s, 0 seconds passed
    ...15%, 0.07 MB, 474 KB/s, 0 seconds passed
    ...16%, 0.08 MB, 526 KB/s, 0 seconds passed
    ...18%, 0.09 MB, 578 KB/s, 0 seconds passed
    ...20%, 0.09 MB, 629 KB/s, 0 seconds passed
    ...21%, 0.10 MB, 681 KB/s, 0 seconds passed
    ...23%, 0.11 MB, 733 KB/s, 0 seconds passed
    ...25%, 0.12 MB, 784 KB/s, 0 seconds passed
    ...26%, 0.12 MB, 835 KB/s, 0 seconds passed
    ...28%, 0.13 MB, 886 KB/s, 0 seconds passed
    ...30%, 0.14 MB, 937 KB/s, 0 seconds passed
    ...31%, 0.15 MB, 988 KB/s, 0 seconds passed
    ...33%, 0.16 MB, 1039 KB/s, 0 seconds passed
    ...35%, 0.16 MB, 1090 KB/s, 0 seconds
  passed
    ...36%, 0.17 MB, 1140 KB/s, 0 seconds passed
    ...38%, 0.18 MB, 1190 KB/s, 0 seconds passed
    ...40%, 0.19 MB, 1240 KB/s, 0 seconds passed
    ...41%, 0.20 MB, 1290 KB/s, 0 seconds passed
    ...43%, 0.20 MB, 1340 KB/s, 0 seconds passed
    ...45%, 0.21 MB, 1390 KB/s, 0 seconds passed
    ...46%, 0.22 MB, 1440 KB/s, 0 seconds passed
    ...48%, 0.23 MB, 1490 KB/s, 0 seconds passed
    ...50%, 0.23 MB, 1539 KB/s, 0 seconds passed
    ...51%, 0.24 MB, 1588 KB/s, 0 seconds passed
    ...53%, 0.25 MB, 1638 KB/s, 0 seconds passed
    ...55%, 0.26 MB, 1687 KB/s, 0 seconds passed
    ...56%, 0.27 MB, 1736 KB/s, 0 seconds passed
    ...58%, 0.27 MB, 1785 KB/s, 0 seconds passed
    ...60%, 0.28 MB, 1834 KB/s, 0 seconds passed
    ...61%, 0.29 MB, 1883 KB/s, 0 seconds passed
    ...63%, 0.30 MB, 1931 KB/s, 0 seconds passed
    ...65%, 0.30 MB, 1980 KB/s, 0 seconds passed
    ...66%, 0.31 MB, 2028 KB/s, 0 seconds passed
    ...68%, 0.32 MB, 2076 KB/s, 0 seconds passed
    ...70
 %, 0.33 MB, 2125 KB/s, 0 seconds passed
    ...71%, 0.34 MB, 2173 KB/s, 0 seconds passed
    ...73%, 0.34 MB, 2221 KB/s, 0 seconds passed
    ...75%, 0.35 MB, 2269 KB/s, 0 seconds passed
    ...76%, 0.36 MB, 2316 KB/s, 0 seconds passed
    ...78%, 0.37 MB, 2364 KB/s, 0 seconds passed
    ...80%, 0.38 MB, 2411 KB/s, 0 seconds passed
    ...81%, 0.38 MB, 2459 KB/s, 0 seconds passed
    ...83%, 0.39 MB, 2506 KB/s, 0 seconds passed
    ...85%, 0.40 MB, 2552 KB/s, 0 seconds passed
    ...86%, 0.41 MB, 2597 KB/s, 0 seconds passed
    ...88%, 0.41 MB, 2644 KB/s, 0 seconds passed
    ...90%, 0.42 MB, 2690 KB/s, 0 seconds passed
    ...91%, 0.43 MB, 2737 KB/s, 0 seconds passed
    ...93%, 0.44 MB, 2784 KB/s, 0 seconds passed
    ...95%, 0.45 MB, 2830 KB/s, 0 seconds passed
    ...96%, 0.45 MB, 2877 KB/s, 0 seconds passed
    ...98%, 0.46 MB, 2923 KB/s, 0 seconds passed
    ...100%, 0.47 MB, 2968 KB/s, 0 seconds passed
+
    ...1%, 0.01 MB, 50 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 100 KB/s, 0 seconds passed
    ...5%, 0.02 MB, 150 KB/s, 0 seconds passed
    ...6%, 0.03 MB, 199 KB/s, 0 seconds passed
    ...8%, 0.04 MB, 249 KB/s, 0 seconds passed
    ...10%, 0.05 MB, 299 KB/s, 0 seconds passed
    ...11%, 0.05 MB, 348 KB/s, 0 seconds passed
    ...13%, 0.06 MB, 397 KB/s, 0 seconds passed
    ...15%, 0.07 MB, 447 KB/s, 0 seconds passed
    ...16%, 0.08 MB, 495 KB/s, 0 seconds passed
    ...18%, 0.09 MB, 544 KB/s, 0 seconds passed
    ...20%, 0.09 MB, 593 KB/s, 0 seconds passed
    ...21%, 0.10 MB, 642 KB/s, 0 seconds passed
    ...23%, 0.11 MB, 691 KB/s, 0 seconds passed
    ...25%, 0.12 MB, 739 KB/s, 0 seconds passed
    ...26%, 0.12 MB, 788 KB/s, 0 seconds passed
    ...28%, 0.13 MB, 836 KB/s, 0 seconds passed
    ...30%, 0.14 MB, 885 KB/s, 0 seconds passed
    ...31%, 0.15 MB, 933 KB/s, 0 seconds passed
    ...33%, 0.16 MB, 981 KB/s, 0 seconds passed
    ...35%, 0.16 MB, 1029 KB/s, 0 seconds 
 passed
    ...36%, 0.17 MB, 1077 KB/s, 0 seconds passed
    ...38%, 0.18 MB, 1125 KB/s, 0 seconds passed
    ...40%, 0.19 MB, 1173 KB/s, 0 seconds passed
    ...41%, 0.20 MB, 1220 KB/s, 0 seconds passed
    ...43%, 0.20 MB, 1268 KB/s, 0 seconds passed
    ...45%, 0.21 MB, 1315 KB/s, 0 seconds passed
    ...46%, 0.22 MB, 1363 KB/s, 0 seconds passed
    ...48%, 0.23 MB, 1411 KB/s, 0 seconds passed
    ...50%, 0.23 MB, 1459 KB/s, 0 seconds passed
    ...51%, 0.24 MB, 1506 KB/s, 0 seconds passed
    ...53%, 0.25 MB, 1554 KB/s, 0 seconds passed
    ...55%, 0.26 MB, 1601 KB/s, 0 seconds passed
    ...56%, 0.27 MB, 1649 KB/s, 0 seconds passed
    ...58%, 0.27 MB, 1695 KB/s, 0 seconds passed
    ...60%, 0.28 MB, 1743 KB/s, 0 seconds passed
    ...61%, 0.29 MB, 1790 KB/s, 0 seconds passed
    ...63%, 0.30 MB, 1837 KB/s, 0 seconds passed
    ...65%, 0.30 MB, 1884 KB/s, 0 seconds passed
    ...66%, 0.31 MB, 1931 KB/s, 0 seconds passed
    ...68%, 0.32 MB, 1977 KB/s, 0 seconds passed
    ...70%
 , 0.33 MB, 2024 KB/s, 0 seconds passed
    ...71%, 0.34 MB, 2071 KB/s, 0 seconds passed
    ...73%, 0.34 MB, 2118 KB/s, 0 seconds passed
    ...75%, 0.35 MB, 2164 KB/s, 0 seconds passed
    ...76%, 0.36 MB, 2211 KB/s, 0 seconds passed
    ...78%, 0.37 MB, 2257 KB/s, 0 seconds passed
    ...80%, 0.38 MB, 2304 KB/s, 0 seconds passed
    ...81%, 0.38 MB, 2350 KB/s, 0 seconds passed
    ...83%, 0.39 MB, 2396 KB/s, 0 seconds passed
    ...85%, 0.40 MB, 2442 KB/s, 0 seconds passed
    ...86%, 0.41 MB, 2488 KB/s, 0 seconds passed
    ...88%, 0.41 MB, 2534 KB/s, 0 seconds passed
    ...90%, 0.42 MB, 2580 KB/s, 0 seconds passed
    ...91%, 0.43 MB, 2626 KB/s, 0 seconds passed
    ...93%, 0.44 MB, 2672 KB/s, 0 seconds passed
    ...95%, 0.45 MB, 2717 KB/s, 0 seconds passed
    ...96%, 0.45 MB, 2763 KB/s, 0 seconds passed
    ...98%, 0.46 MB, 2809 KB/s, 0 seconds passed
    ...100%, 0.47 MB, 2853 KB/s, 0 seconds passed
 
 
 
diff --git a/docs/_sources/tutorials/get_started/sg_execution_times.rst.txt b/docs/_sources/tutorials/get_started/sg_execution_times.rst.txt
index 6dbe827..b9464c3 100644
--- a/docs/_sources/tutorials/get_started/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/get_started/sg_execution_times.rst.txt
@@ -5,14 +5,14 @@
 
 Computation times
 =================
-**05:31.252** total execution time for **tutorials_get_started** files:
+**06:03.708** total execution time for **tutorials_get_started** files:
 
-- **03:26.284**: :ref:`sphx_glr_tutorials_get_started_auto_tuning_with_python.py` (``auto_tuning_with_python.py``)
-- **01:23.738**: :ref:`sphx_glr_tutorials_get_started_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)
-- **00:19.709**: :ref:`sphx_glr_tutorials_get_started_tune_matmul_x86.py` (``tune_matmul_x86.py``)
-- **00:13.013**: :ref:`sphx_glr_tutorials_get_started_relay_quick_start.py` (``relay_quick_start.py``)
-- **00:08.193**: :ref:`sphx_glr_tutorials_get_started_autotvm_matmul.py` (``autotvm_matmul.py``)
-- **00:00.205**: :ref:`sphx_glr_tutorials_get_started_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
+- **03:29.557**: :ref:`sphx_glr_tutorials_get_started_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)
+- **01:23.171**: :ref:`sphx_glr_tutorials_get_started_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)
+- **00:31.377**: :ref:`sphx_glr_tutorials_get_started_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)
+- **00:26.615**: :ref:`sphx_glr_tutorials_get_started_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``)
+- **00:12.620**: :ref:`sphx_glr_tutorials_get_started_relay_quick_start.py` (``relay_quick_start.py``)
+- **00:00.255**: :ref:`sphx_glr_tutorials_get_started_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
 - **00:00.039**: :ref:`sphx_glr_tutorials_get_started_introduction.py` (``introduction.py``)
-- **00:00.036**: :ref:`sphx_glr_tutorials_get_started_install.py` (``install.py``)
-- **00:00.035**: :ref:`sphx_glr_tutorials_get_started_tvmc_command_line_driver.py` (``tvmc_command_line_driver.py``)
+- **00:00.038**: :ref:`sphx_glr_tutorials_get_started_install.py` (``install.py``)
+- **00:00.036**: :ref:`sphx_glr_tutorials_get_started_tvmc_command_line_driver.py` (``tvmc_command_line_driver.py``)
diff --git a/docs/_sources/tutorials/get_started/tensor_expr_get_started.rst.txt b/docs/_sources/tutorials/get_started/tensor_expr_get_started.rst.txt
index 25d8344..8894969 100644
--- a/docs/_sources/tutorials/get_started/tensor_expr_get_started.rst.txt
+++ b/docs/_sources/tutorials/get_started/tensor_expr_get_started.rst.txt
@@ -9,22 +9,19 @@
 
 .. _tutorial-tensor-expr-get-started:
 
-Working with Operators Using Tensor Expressions
-===============================================
+Working with Operators Using Tensor Expression
+==============================================
 **Author**: `Tianqi Chen <https://tqchen.github.io>`_
 
 In this tutorial we will turn our attention to how TVM works with Tensor
-Expressions (TE) to create a space to search for performant configurations. TE
+Expression (TE) to define tensor computations and apply loop optimizations. TE
 describes tensor computations in a pure functional language (that is each
 expression has no side effects). When viewed in context of the TVM as a whole,
 Relay describes a computation as a set of operators, and each of these
 operators can be represented as a TE expression where each TE expression takes
-input tensors and produces an output tensor. It's important to note that the
-tensor isn't necessarily a fully materialized array, rather it is a
-representation of a computation. If you want to produce a computation from a
-TE, you will need to use the scheduling features of TVM.
+input tensors and produces an output tensor.
 
-This is an introductory tutorial to the Tensor expression language in TVM. TVM
+This is an introductory tutorial to the Tensor Expression language in TVM. TVM
 uses a domain specific tensor expression for efficient kernel construction. We
 will demonstrate the basic workflow with two examples of using the tensor expression
 language. The first example introduces TE and scheduling with vector
@@ -37,8 +34,8 @@ Example 1: Writing and Scheduling Vector Addition in TE for CPU
 ---------------------------------------------------------------
 
 Let's look at an example in Python in which we will implement a TE for
-vector addition, followed by a schedule targeted towards a CPU. We begin by initializing a TVM
-environment.
+vector addition, followed by a schedule targeted towards a CPU.
+We begin by initializing a TVM environment.
 
 
 .. code-block:: default
@@ -53,7 +50,8 @@ environment.
     # and specify it. If you're using llvm, you can get this information from the
     # command ``llc --version`` to get the CPU type, and you can check
     # ``/proc/cpuinfo`` for additional extensions that your processor might
-    # support. For example, ``tgt = "llvm -mcpu=`skylake`
+    # support. For example, you can use "llvm -mcpu=skylake-avx512" for CPUs with
+    # AVX-512 instructions.
 
     tgt = tvm.target.Target(target="llvm", host="llvm")
 
@@ -68,7 +66,7 @@ Describing the Vector Computation
 We describe a vector addition computation. TVM adopts tensor semantics, with
 each intermediate result represented as a multi-dimensional array. The user
 needs to describe the computation rule that generates the tensors. We first
-define a symbolic variable n to represent the shape. We then define two
+define a symbolic variable ``n`` to represent the shape. We then define two
 placeholder Tensors, ``A`` and ``B``, with given shape ``(n,)``. We then
 describe the result tensor ``C``, with a ``compute`` operation. The
 ``compute`` defines a computation, with the output conforming to the
@@ -82,7 +80,6 @@ are only declaring how the computation should be done.
 .. code-block:: default
 
 
-
     n = te.var("n")
     A = te.placeholder((n,), name="A")
     B = te.placeholder((n,), name="B")
@@ -96,10 +93,10 @@ are only declaring how the computation should be done.
 
 .. note:: Lambda Functions
 
-The second argument to the ``te.compute`` method is the function that
-performs the computation. In this example, we're using an anonymous function,
-also known as a ``lambda`` function, to define the computation, in this case
-addition on the ``i``th element of ``A`` and ``B``.
+  The second argument to the ``te.compute`` method is the function that
+  performs the computation. In this example, we're using an anonymous function,
+  also known as a ``lambda`` function, to define the computation, in this case
+  addition on the ``i``th element of ``A`` and ``B``.
 
 Create a Default Schedule for the Computation
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -327,7 +324,7 @@ compile and run this new schedule with the parallel operation applied:
 
  .. code-block:: none
 
-    parallel: 0.000004
+    parallel: 0.000002
 
 
 
@@ -380,7 +377,7 @@ factor to be the number of threads on your CPU.
 
  .. code-block:: none
 
-    vector: 0.000015
+    vector: 0.000014
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
       buffers = {C: Buffer(C_2: Pointer(float32), float32, [n: int32], [stride: int32], type="auto"),
@@ -428,10 +425,10 @@ We can now compare the different schedules
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                   numpy    4.8916798550635575e-06                   1.0
-                   naive    3.6328999999999996e-06    0.7426692072334724
-                parallel    3.5216999999999997e-06    0.7199367301918908
-                  vector    1.5266999999999998e-05    3.1210137319588824
+                   numpy    4.978140350431204e-06                    1.0
+                   naive              3.5808e-06      0.7193047499534305
+                parallel              2.4637e-06     0.49490368422147746
+                  vector             1.41518e-05      2.8427884719590475
 
 
 
@@ -484,8 +481,6 @@ will target compilation of the vector addition to GPUs.
 
         bx, tx = s[C].split(C.op.axis[0], factor=64)
 
-        xXXXXXXXx
-
         ################################################################################
         # Finally we must bind the iteration axis bx and tx to threads in the GPU
         # compute grid. The naive schedule is not valid for GPUs, and these are
@@ -816,7 +811,7 @@ matrix multiplication.
 
  .. code-block:: none
 
-    Numpy running time: 0.007216
+    Numpy running time: 0.006941
 
 
 
@@ -872,7 +867,7 @@ optimizations.
 
  .. code-block:: none
 
-    none: 5.919446
+    none: 5.871126
 
 
 
@@ -968,7 +963,7 @@ schedule.
 
  .. code-block:: none
 
-    blocking: 0.113877
+    blocking: 0.116482
 
 
 
@@ -1056,7 +1051,7 @@ already cache friendly from our previous optimizations.
 
  .. code-block:: none
 
-    vectorization: 0.125302
+    vectorization: 0.129899
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
       buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
@@ -1124,7 +1119,7 @@ more cache friendly.
 
  .. code-block:: none
 
-    loop permutation: 0.061251
+    loop permutation: 0.059711
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
       buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
@@ -1217,7 +1212,7 @@ optimized schedule.
 
  .. code-block:: none
 
-    array packing: 0.062319
+    array packing: 0.060550
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
       buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
@@ -1305,7 +1300,7 @@ to `C` when all the block results are ready.
 
  .. code-block:: none
 
-    block caching: 0.059286
+    block caching: 0.058847
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
       buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
@@ -1384,11 +1379,11 @@ of thread-level parallelization.
 
  .. code-block:: none
 
-    parallelization: 0.017225
+    parallelization: 0.015944
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
                  B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [packedB: Pointer(float32x32)] "storage_scope" = "global";
@@ -1458,13 +1453,13 @@ working, we can compare the results.
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                    none       5.919445745100001                     1.0
-                blocking            0.1138770327    0.019237786374554602
-           vectorization            0.1253015306     0.02116778090308913
-        loop permutation    0.061251044899999996    0.010347429056293385
-           array packing     0.06231947880000001    0.010527924654362586
-           block caching            0.0592864929    0.010015547984213924
-         parallelization             0.017225419    0.002909971598989459
+                    none            5.8711263175                     1.0
+                blocking     0.11648151089999999    0.019839721477769072
+           vectorization            0.1298985455    0.022124978832905172
+        loop permutation             0.059711437     0.01017035467658374
+           array packing    0.060549881800000004    0.010313162845691065
+           block caching            0.0588466685    0.010023062921435772
+         parallelization            0.0159438366    0.0027156350822288367
 
 
 
@@ -1501,7 +1496,7 @@ the computation for specific platforms.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  23.738 seconds)
+   **Total running time of the script:** ( 1 minutes  23.171 seconds)
 
 
 .. _sphx_glr_download_tutorials_get_started_tensor_expr_get_started.py:
diff --git a/docs/_sources/tutorials/get_started/tvmc_command_line_driver.rst.txt b/docs/_sources/tutorials/get_started/tvmc_command_line_driver.rst.txt
index 25f0435..0684807 100644
--- a/docs/_sources/tutorials/get_started/tvmc_command_line_driver.rst.txt
+++ b/docs/_sources/tutorials/get_started/tvmc_command_line_driver.rst.txt
@@ -466,7 +466,7 @@ To see what other options are available, please have a look at ``tvmc
 --help``.
 
 In the next tutorial, `Compiling and Optimizing a Model with the Python
-AutoScheduler <auto_tuning_with_pyton>`_, we will cover the same compilation
+Interface <auto_tuning_with_pyton>`_, we will cover the same compilation
 and optimization steps using the Python interface.
 
 
diff --git a/docs/_sources/tutorials/index.rst.txt b/docs/_sources/tutorials/index.rst.txt
index d06ea7a..9a511ef 100644
--- a/docs/_sources/tutorials/index.rst.txt
+++ b/docs/_sources/tutorials/index.rst.txt
@@ -86,9 +86,9 @@ Getting Started With TVM
 
 .. only:: html
 
-    .. figure:: /tutorials/get_started/images/thumb/sphx_glr_auto_tuning_with_python_thumb.png
+    .. figure:: /tutorials/get_started/images/thumb/sphx_glr_autotvm_relay_x86_thumb.png
 
-        :ref:`sphx_glr_tutorials_get_started_auto_tuning_with_python.py`
+        :ref:`sphx_glr_tutorials_get_started_autotvm_relay_x86.py`
 
 .. raw:: html
 
@@ -98,11 +98,11 @@ Getting Started With TVM
 .. toctree::
    :hidden:
 
-   /tutorials/get_started/auto_tuning_with_python
+   /tutorials/get_started/autotvm_relay_x86
 
 .. raw:: html
 
-    <div class="sphx-glr-thumbcontainer" tooltip="In this tutorial we will turn our attention to how TVM works with Tensor Expressions (TE) to cr...">
+    <div class="sphx-glr-thumbcontainer" tooltip="In this tutorial we will turn our attention to how TVM works with Tensor Expression (TE) to def...">
 
 .. only:: html
 
@@ -122,13 +122,13 @@ Getting Started With TVM
 
 .. raw:: html
 
-    <div class="sphx-glr-thumbcontainer" tooltip="In this tutorial, we will now show how the TVM Template Extension (TE) language can be used to ...">
+    <div class="sphx-glr-thumbcontainer" tooltip="In this tutorial, we show how the TVM Tensor Expression (TE) language can be used to write sche...">
 
 .. only:: html
 
-    .. figure:: /tutorials/get_started/images/thumb/sphx_glr_autotvm_matmul_thumb.png
+    .. figure:: /tutorials/get_started/images/thumb/sphx_glr_autotvm_matmul_x86_thumb.png
 
-        :ref:`sphx_glr_tutorials_get_started_autotvm_matmul.py`
+        :ref:`sphx_glr_tutorials_get_started_autotvm_matmul_x86.py`
 
 .. raw:: html
 
@@ -138,17 +138,17 @@ Getting Started With TVM
 .. toctree::
    :hidden:
 
-   /tutorials/get_started/autotvm_matmul
+   /tutorials/get_started/autotvm_matmul_x86
 
 .. raw:: html
 
-    <div class="sphx-glr-thumbcontainer" tooltip="This tutorial introduces cross compilation and remote device execution with RPC in TVM.">
+    <div class="sphx-glr-thumbcontainer" tooltip="In this tutorial, we will show how TVM&#x27;s Auto Scheduling feature can find optimal schedules wit...">
 
 .. only:: html
 
-    .. figure:: /tutorials/get_started/images/thumb/sphx_glr_cross_compilation_and_rpc_thumb.png
+    .. figure:: /tutorials/get_started/images/thumb/sphx_glr_auto_scheduler_matmul_x86_thumb.png
 
-        :ref:`sphx_glr_tutorials_get_started_cross_compilation_and_rpc.py`
+        :ref:`sphx_glr_tutorials_get_started_auto_scheduler_matmul_x86.py`
 
 .. raw:: html
 
@@ -158,17 +158,17 @@ Getting Started With TVM
 .. toctree::
    :hidden:
 
-   /tutorials/get_started/cross_compilation_and_rpc
+   /tutorials/get_started/auto_scheduler_matmul_x86
 
 .. raw:: html
 
-    <div class="sphx-glr-thumbcontainer" tooltip="This example shows how to build a neural network with Relay python frontend and generates a run...">
+    <div class="sphx-glr-thumbcontainer" tooltip="This tutorial introduces cross compilation and remote device execution with RPC in TVM.">
 
 .. only:: html
 
-    .. figure:: /tutorials/get_started/images/thumb/sphx_glr_relay_quick_start_thumb.png
+    .. figure:: /tutorials/get_started/images/thumb/sphx_glr_cross_compilation_and_rpc_thumb.png
 
-        :ref:`sphx_glr_tutorials_get_started_relay_quick_start.py`
+        :ref:`sphx_glr_tutorials_get_started_cross_compilation_and_rpc.py`
 
 .. raw:: html
 
@@ -178,17 +178,17 @@ Getting Started With TVM
 .. toctree::
    :hidden:
 
-   /tutorials/get_started/relay_quick_start
+   /tutorials/get_started/cross_compilation_and_rpc
 
 .. raw:: html
 
-    <div class="sphx-glr-thumbcontainer" tooltip="In this tutorial, we will show how TVM&#x27;s Auto Scheduling feature can find optimal schedules wit...">
+    <div class="sphx-glr-thumbcontainer" tooltip="This example shows how to build a neural network with Relay python frontend and generates a run...">
 
 .. only:: html
 
-    .. figure:: /tutorials/get_started/images/thumb/sphx_glr_tune_matmul_x86_thumb.png
+    .. figure:: /tutorials/get_started/images/thumb/sphx_glr_relay_quick_start_thumb.png
 
-        :ref:`sphx_glr_tutorials_get_started_tune_matmul_x86.py`
+        :ref:`sphx_glr_tutorials_get_started_relay_quick_start.py`
 
 .. raw:: html
 
@@ -198,7 +198,7 @@ Getting Started With TVM
 .. toctree::
    :hidden:
 
-   /tutorials/get_started/tune_matmul_x86
+   /tutorials/get_started/relay_quick_start
 .. raw:: html
 
     <div style='clear:both'></div>
@@ -628,6 +628,26 @@ Tensor Expression and Schedules
 
 .. raw:: html
 
+    <div class="sphx-glr-thumbcontainer" tooltip="This is an introduction material on how to do reduction in TVM. Associative reduction operators...">
+
+.. only:: html
+
+    .. figure:: /tutorials/language/images/thumb/sphx_glr_reduction_thumb.png
+
+        :ref:`sphx_glr_tutorials_language_reduction.py`
+
+.. raw:: html
+
+    </div>
+
+
+.. toctree::
+   :hidden:
+
+   /tutorials/language/reduction
+
+.. raw:: html
+
     <div class="sphx-glr-thumbcontainer" tooltip="While TVM supports basic arithmetic operations. In many cases usually we will need more complic...">
 
 .. only:: html
@@ -745,26 +765,6 @@ Tensor Expression and Schedules
    :hidden:
 
    /tutorials/language/tedd
-
-.. raw:: html
-
-    <div class="sphx-glr-thumbcontainer" tooltip="This is an introduction material on how to do reduction in TVM. Associative reduction operators...">
-
-.. only:: html
-
-    .. figure:: /tutorials/language/images/thumb/sphx_glr_reduction_thumb.png
-
-        :ref:`sphx_glr_tutorials_language_reduction.py`
-
-.. raw:: html
-
-    </div>
-
-
-.. toctree::
-   :hidden:
-
-   /tutorials/language/reduction
 .. raw:: html
 
     <div style='clear:both'></div>
diff --git a/docs/_sources/tutorials/language/schedule_primitives.rst.txt b/docs/_sources/tutorials/language/schedule_primitives.rst.txt
index 4aa7ae9..dfb78dc 100644
--- a/docs/_sources/tutorials/language/schedule_primitives.rst.txt
+++ b/docs/_sources/tutorials/language/schedule_primitives.rst.txt
@@ -449,13 +449,13 @@ of computation of `C`.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {A: Buffer(A_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
-                 C: Buffer(C_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
                  B: Buffer(B_2: Pointer(float32), float32, [m], [stride_2: int32], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, m) {
-        B_2[(i*stride_2)] = ((float32*)A_2[(i*stride)] + 1f32)
-        C_2[(i*stride_1)] = ((float32*)B_2[(i*stride_2)]*2f32)
+        B_2[(i*stride_2)] = ((float32*)A_2[(i*stride_1)] + 1f32)
+        C_2[(i*stride)] = ((float32*)B_2[(i*stride_2)]*2f32)
       }
     }
 
diff --git a/docs/_sources/tutorials/language/sg_execution_times.rst.txt b/docs/_sources/tutorials/language/sg_execution_times.rst.txt
index 0cfdd51..0e91283 100644
--- a/docs/_sources/tutorials/language/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/language/sg_execution_times.rst.txt
@@ -5,13 +5,13 @@
 
 Computation times
 =================
-**00:04.178** total execution time for **tutorials_language** files:
+**00:04.248** total execution time for **tutorials_language** files:
 
-- **00:01.550**: :ref:`sphx_glr_tutorials_language_intrin_math.py` (``intrin_math.py``)
-- **00:00.747**: :ref:`sphx_glr_tutorials_language_tensorize.py` (``tensorize.py``)
-- **00:00.549**: :ref:`sphx_glr_tutorials_language_scan.py` (``scan.py``)
-- **00:00.542**: :ref:`sphx_glr_tutorials_language_reduction.py` (``reduction.py``)
+- **00:01.605**: :ref:`sphx_glr_tutorials_language_intrin_math.py` (``intrin_math.py``)
+- **00:00.736**: :ref:`sphx_glr_tutorials_language_tensorize.py` (``tensorize.py``)
+- **00:00.554**: :ref:`sphx_glr_tutorials_language_reduction.py` (``reduction.py``)
+- **00:00.550**: :ref:`sphx_glr_tutorials_language_scan.py` (``scan.py``)
 - **00:00.248**: :ref:`sphx_glr_tutorials_language_extern_op.py` (``extern_op.py``)
-- **00:00.187**: :ref:`sphx_glr_tutorials_language_schedule_primitives.py` (``schedule_primitives.py``)
-- **00:00.178**: :ref:`sphx_glr_tutorials_language_tedd.py` (``tedd.py``)
-- **00:00.177**: :ref:`sphx_glr_tutorials_language_tuple_inputs.py` (``tuple_inputs.py``)
+- **00:00.188**: :ref:`sphx_glr_tutorials_language_schedule_primitives.py` (``schedule_primitives.py``)
+- **00:00.185**: :ref:`sphx_glr_tutorials_language_tedd.py` (``tedd.py``)
+- **00:00.181**: :ref:`sphx_glr_tutorials_language_tuple_inputs.py` (``tuple_inputs.py``)
diff --git a/docs/_sources/tutorials/language/tensorize.rst.txt b/docs/_sources/tutorials/language/tensorize.rst.txt
index 24ae6a6..77375cf 100644
--- a/docs/_sources/tutorials/language/tensorize.rst.txt
+++ b/docs/_sources/tutorials/language/tensorize.rst.txt
@@ -237,8 +237,8 @@ such placeholder can be put to let TVM automatically bind the inferred value for
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 512], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 64], []),
+      buffers = {A: Buffer(A_2: Pointer(float32), float32, [1024, 64], []),
+                 C: Buffer(C_2: Pointer(float32), float32, [1024, 512], []),
                  B: Buffer(B_2: Pointer(float32), float32, [512, 64], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, 1024) {
@@ -309,12 +309,12 @@ The importing needs to happen before the tensorized GEMV being executed.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {A: Buffer(A_2: Pointer(float32), float32, [1024, 64], []),
-                 C: Buffer(C_2: Pointer(float32), float32, [1024, 512], []),
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 512], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1024, 64], []),
                  B: Buffer(B_2: Pointer(float32), float32, [512, 64], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
-      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmp5lqx02yg/input0.cc'
-    source_filename = "/tmp/tmp5lqx02yg/input0.cc"
+      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpgivmczqi/input0.cc'
+    source_filename = "/tmp/tmpgivmczqi/input0.cc"
     target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
     target triple = "x86_64-pc-linux-gnu"
 
diff --git a/docs/_sources/tutorials/language/tuple_inputs.rst.txt b/docs/_sources/tutorials/language/tuple_inputs.rst.txt
index fc81652..401864a 100644
--- a/docs/_sources/tutorials/language/tuple_inputs.rst.txt
+++ b/docs/_sources/tutorials/language/tuple_inputs.rst.txt
@@ -64,15 +64,15 @@ together in the next schedule procedure.
 
     primfn(A0_1: handle, A1_1: handle, B.v0_1: handle, B.v1_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {B.v0: Buffer(B.v0_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 A0: Buffer(A0_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
-                 B.v1: Buffer(B.v1_2: Pointer(float32), float32, [m, n], [stride_4: int32, stride_5: int32], type="auto"),
+      buffers = {B.v1: Buffer(B.v1_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
+                 B.v0: Buffer(B.v0_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
+                 A0: Buffer(A0_2: Pointer(float32), float32, [m, n], [stride_4: int32, stride_5: int32], type="auto"),
                  A1: Buffer(A1_2: Pointer(float32), float32, [m, n], [stride_6: int32, stride_7: int32], type="auto")}
       buffer_map = {A0_1: A0, A1_1: A1, B.v0_1: B.v0, B.v1_1: B.v1} {
       for (i: int32, 0, m) {
         for (j: int32, 0, n) {
-          B.v0_2[((i*stride) + (j*stride_1))] = ((float32*)A0_2[((i*stride_2) + (j*stride_3))] + 2f32)
-          B.v1_2[((i*stride_4) + (j*stride_5))] = ((float32*)A1_2[((i*stride_6) + (j*stride_7))]*3f32)
+          B.v0_2[((i*stride_2) + (j*stride_3))] = ((float32*)A0_2[((i*stride_4) + (j*stride_5))] + 2f32)
+          B.v1_2[((i*stride) + (j*stride_1))] = ((float32*)A1_2[((i*stride_6) + (j*stride_7))]*3f32)
         }
       }
     }
@@ -135,17 +135,17 @@ with :py:func:`te.comm_reducer` as below:
 
     primfn(idx_1: handle, val_1: handle, T.v0_1: handle, T.v1_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {T.v1: Buffer(T.v1_2: Pointer(int32), int32, [m: int32], [stride: int32], type="auto"),
-                 idx: Buffer(idx_2: Pointer(int32), int32, [m, n: int32], [stride_1: int32, stride_2: int32], type="auto"),
-                 T.v0: Buffer(T.v0_2: Pointer(int32), int32, [m], [stride_3: int32], type="auto"),
+      buffers = {T.v0: Buffer(T.v0_2: Pointer(int32), int32, [m: int32], [stride: int32], type="auto"),
+                 T.v1: Buffer(T.v1_2: Pointer(int32), int32, [m], [stride_1: int32], type="auto"),
+                 idx: Buffer(idx_2: Pointer(int32), int32, [m, n: int32], [stride_2: int32, stride_3: int32], type="auto"),
                  val: Buffer(val_2: Pointer(int32), int32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
       buffer_map = {idx_1: idx, val_1: val, T.v0_1: T.v0, T.v1_1: T.v1} {
       for (i: int32, 0, m) {
-        T.v0_2[(i*stride_3)] = -1
-        T.v1_2[(i*stride)] = -2147483648
+        T.v0_2[(i*stride)] = -1
+        T.v1_2[(i*stride_1)] = -2147483648
         for (k: int32, 0, n) {
-          T.v0_2[(i*stride_3)] = @tir.if_then_else(((int32*)val_2[((i*stride_4) + (k*stride_5))] <= (int32*)T.v1_2[(i*stride)]), (int32*)T.v0_2[(i*stride_3)], (int32*)idx_2[((i*stride_1) + (k*stride_2))], dtype=int32)
-          T.v1_2[(i*stride)] = @tir.if_then_else(((int32*)val_2[((i*stride_4) + (k*stride_5))] <= (int32*)T.v1_2[(i*stride)]), (int32*)T.v1_2[(i*stride)], (int32*)val_2[((i*stride_4) + (k*stride_5))], dtype=int32)
+          T.v0_2[(i*stride)] = @tir.if_then_else(((int32*)val_2[((i*stride_4) + (k*stride_5))] <= (int32*)T.v1_2[(i*stride_1)]), (int32*)T.v0_2[(i*stride)], (int32*)idx_2[((i*stride_2) + (k*stride_3))], dtype=int32)
+          T.v1_2[(i*stride_1)] = @tir.if_then_else(((int32*)val_2[((i*stride_4) + (k*stride_5))] <= (int32*)T.v1_2[(i*stride_1)]), (int32*)T.v1_2[(i*stride_1)], (int32*)val_2[((i*stride_4) + (k*stride_5))], dtype=int32)
         }
       }
     }
@@ -193,8 +193,8 @@ in terms of operation.
 
     primfn(A0_1: handle, A1_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 A0: Buffer(A0_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
+      buffers = {A0: Buffer(A0_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
+                 C: Buffer(C_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
                  A1: Buffer(A1_2: Pointer(float32), float32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
       buffer_map = {A0_1: A0, A1_1: A1, C_1: C} {
       attr [B.v0: Pointer(float32)] "storage_scope" = "global";
@@ -203,11 +203,11 @@ in terms of operation.
       allocate(B.v1, float32, [n]);
       for (i: int32, 0, m) {
         for (j: int32, 0, n) {
-          B.v0[j] = ((float32*)A0_2[((i*stride_2) + (j*stride_3))] + 2f32)
-          B.v1[j] = ((float32*)A0_2[((i*stride_2) + (j*stride_3))]*3f32)
+          B.v0[j] = ((float32*)A0_2[((i*stride) + (j*stride_1))] + 2f32)
+          B.v1[j] = ((float32*)A0_2[((i*stride) + (j*stride_1))]*3f32)
         }
         for (j_1: int32, 0, n) {
-          C_2[((i*stride) + (j_1*stride_1))] = ((float32*)A1_2[((i*stride_4) + (j_1*stride_5))] + (float32*)B.v0[j_1])
+          C_2[((i*stride_2) + (j_1*stride_3))] = ((float32*)A1_2[((i*stride_4) + (j_1*stride_5))] + (float32*)B.v0[j_1])
         }
       }
     }
diff --git a/docs/_sources/tutorials/micro/sg_execution_times.rst.txt b/docs/_sources/tutorials/micro/sg_execution_times.rst.txt
index dffa234..ef59ab1 100644
--- a/docs/_sources/tutorials/micro/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/micro/sg_execution_times.rst.txt
@@ -5,7 +5,7 @@
 
 Computation times
 =================
-**00:06.972** total execution time for **tutorials_micro** files:
+**00:07.117** total execution time for **tutorials_micro** files:
 
-- **00:06.803**: :ref:`sphx_glr_tutorials_micro_micro_tflite.py` (``micro_tflite.py``)
-- **00:00.169**: :ref:`sphx_glr_tutorials_micro_micro_reference_vm.py` (``micro_reference_vm.py``)
+- **00:06.942**: :ref:`sphx_glr_tutorials_micro_micro_tflite.py` (``micro_tflite.py``)
+- **00:00.175**: :ref:`sphx_glr_tutorials_micro_micro_reference_vm.py` (``micro_reference_vm.py``)
diff --git a/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt b/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt
index 8b52d3d..01ca2a2 100644
--- a/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt
+++ b/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt
@@ -296,7 +296,7 @@ latency of convolution.
 
  .. code-block:: none
 
-    Convolution: 19.760386 ms
+    Convolution: 19.893361 ms
 
 
 
diff --git a/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt b/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt
index a4b51a4..4fd963a 100644
--- a/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt
+++ b/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt
@@ -523,8 +523,8 @@ by mapping the 2D convolution to tensor intrinsics
 
     primfn(A_1: handle, W_1: handle, Conv_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {A: Buffer(A_2: Pointer(float16), float16, [16, 14, 14, 16, 16, 16], []),
-                 Conv: Buffer(Conv_2: Pointer(float32), float32, [16, 14, 14, 32, 16, 16], []),
+      buffers = {Conv: Buffer(Conv_2: Pointer(float32), float32, [16, 14, 14, 32, 16, 16], []),
+                 A: Buffer(A_2: Pointer(float16), float16, [16, 14, 14, 16, 16, 16], []),
                  W: Buffer(W_2: Pointer(float16), float16, [3, 3, 16, 32, 16, 16], [])}
       buffer_map = {A_1: A, W_1: W, Conv_1: Conv} {
       attr [IterVar(blockIdx.z: int32, (nullptr), "ThreadIndex", "blockIdx.z")] "thread_extent" = 196;
@@ -624,7 +624,7 @@ be able to run on our build server
 
  .. code-block:: none
 
-    conv2d with tensor core: 6.615429 ms
+    conv2d with tensor core: 6.621363 ms
 
 
 
diff --git a/docs/_sources/tutorials/optimize/opt_gemm.rst.txt b/docs/_sources/tutorials/optimize/opt_gemm.rst.txt
index 07a78d0..1a32a88 100644
--- a/docs/_sources/tutorials/optimize/opt_gemm.rst.txt
+++ b/docs/_sources/tutorials/optimize/opt_gemm.rst.txt
@@ -118,8 +118,8 @@ Then we write a baseline implementation, the simplest way to write a matrix mult
 
  .. code-block:: none
 
-    Numpy running time: 0.006920
-    Baseline: 5.884067
+    Numpy running time: 0.007027
+    Baseline: 5.872383
 
 
 
@@ -206,7 +206,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 
  .. code-block:: none
 
-    Opt1: 0.114601
+    Opt1: 0.114696
 
 
 
@@ -300,7 +300,7 @@ In this tutorial, we chose to vectorize the inner loop row data since it is cach
 
  .. code-block:: none
 
-    Opt2: 0.112050
+    Opt2: 0.113036
 
 
 
@@ -389,7 +389,7 @@ the access pattern for A matrix is more cache friendly.
 
  .. code-block:: none
 
-    Opt3: 0.060178
+    Opt3: 0.060389
 
 
 
@@ -499,7 +499,7 @@ the corresponding value from the packed array.
 
  .. code-block:: none
 
-    Opt4: 0.061825
+    Opt4: 0.061581
 
 
 
@@ -523,8 +523,8 @@ Here is the generated IR after array packing.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
                  B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [packedB: Pointer(float32x32)] "storage_scope" = "global";
@@ -609,7 +609,7 @@ write to C when all the block results are ready.
 
  .. code-block:: none
 
-    Opt5: 0.060100
+    Opt5: 0.059310
 
 
 
@@ -725,7 +725,7 @@ Futhermore, we can also utilize multi-core processors to do the thread-level par
 
  .. code-block:: none
 
-    Opt6: 0.016985
+    Opt6: 0.016747
 
 
 
diff --git a/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt b/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt
index 8c71b96..2f6bf61 100644
--- a/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt
@@ -5,8 +5,8 @@
 
 Computation times
 =================
-**00:26.797** total execution time for **tutorials_optimize** files:
+**00:26.687** total execution time for **tutorials_optimize** files:
 
-- **00:24.949**: :ref:`sphx_glr_tutorials_optimize_opt_gemm.py` (``opt_gemm.py``)
-- **00:00.966**: :ref:`sphx_glr_tutorials_optimize_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``)
-- **00:00.883**: :ref:`sphx_glr_tutorials_optimize_opt_conv_cuda.py` (``opt_conv_cuda.py``)
+- **00:24.894**: :ref:`sphx_glr_tutorials_optimize_opt_gemm.py` (``opt_gemm.py``)
+- **00:00.980**: :ref:`sphx_glr_tutorials_optimize_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``)
+- **00:00.813**: :ref:`sphx_glr_tutorials_optimize_opt_conv_cuda.py` (``opt_conv_cuda.py``)
diff --git a/docs/_sources/tutorials/topi/intro_topi.rst.txt b/docs/_sources/tutorials/topi/intro_topi.rst.txt
index 2f9b308..58d4b3a 100644
--- a/docs/_sources/tutorials/topi/intro_topi.rst.txt
+++ b/docs/_sources/tutorials/topi/intro_topi.rst.txt
@@ -231,7 +231,7 @@ As you can see, scheduled stages of computation have been accumulated and we can
 
  .. code-block:: none
 
-    [stage(a, placeholder(a, 0x133e4fe30)), stage(b, placeholder(b, 0x13da9a600)), stage(T_add, compute(T_add, body=[(a[ax0, ax1, ax2] + b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min=0, ext=10))], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[(a[ax0, ax1, ax2]*b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range( [...]
+    [stage(a, placeholder(a, 0x13f33a400)), stage(b, placeholder(b, 0x13efe7e30)), stage(T_add, compute(T_add, body=[(a[ax0, ax1, ax2] + b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min=0, ext=10))], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[(a[ax0, ax1, ax2]*b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range( [...]
 
 
 
diff --git a/docs/_sources/tutorials/topi/sg_execution_times.rst.txt b/docs/_sources/tutorials/topi/sg_execution_times.rst.txt
index fb131a7..a5d1531 100644
--- a/docs/_sources/tutorials/topi/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/topi/sg_execution_times.rst.txt
@@ -5,6 +5,6 @@
 
 Computation times
 =================
-**00:00.614** total execution time for **tutorials_topi** files:
+**00:00.640** total execution time for **tutorials_topi** files:
 
-- **00:00.614**: :ref:`sphx_glr_tutorials_topi_intro_topi.py` (``intro_topi.py``)
+- **00:00.640**: :ref:`sphx_glr_tutorials_topi_intro_topi.py` (``intro_topi.py``)
diff --git a/docs/_sources/vta/tutorials/autotvm/sg_execution_times.rst.txt b/docs/_sources/vta/tutorials/autotvm/sg_execution_times.rst.txt
index 1afa404..f879fa2 100644
--- a/docs/_sources/vta/tutorials/autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/vta/tutorials/autotvm/sg_execution_times.rst.txt
@@ -5,7 +5,7 @@
 
 Computation times
 =================
-**00:06.033** total execution time for **vta_tutorials_autotvm** files:
+**00:06.031** total execution time for **vta_tutorials_autotvm** files:
 
-- **00:05.859**: :ref:`sphx_glr_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``)
-- **00:00.174**: :ref:`sphx_glr_vta_tutorials_autotvm_tune_alu_vta.py` (``tune_alu_vta.py``)
+- **00:05.854**: :ref:`sphx_glr_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``)
+- **00:00.178**: :ref:`sphx_glr_vta_tutorials_autotvm_tune_alu_vta.py` (``tune_alu_vta.py``)
diff --git a/docs/_sources/vta/tutorials/autotvm/tune_relay_vta.rst.txt b/docs/_sources/vta/tutorials/autotvm/tune_relay_vta.rst.txt
index 6964c03..b67b024 100644
--- a/docs/_sources/vta/tutorials/autotvm/tune_relay_vta.rst.txt
+++ b/docs/_sources/vta/tutorials/autotvm/tune_relay_vta.rst.txt
@@ -499,7 +499,7 @@ Finally, we launch tuning jobs and evaluate the end-to-end performance.
  .. code-block:: none
 
     Extract tasks...
-
    ...1%, 0.01 MB, 48 KB/s, 0 seconds passed
    ...2%, 0.02 MB, 96 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 144 KB/s, 0 seconds passed
    ...4%, 0.03 MB, 192 KB/s, 0 seconds passed
    ...5%, 0.04 MB, 240 KB/s, 0 seconds passed
    ...6%, 0.05 MB, 288 KB/s, 0 seconds passed
    ...7%, 0.05 MB, 336 KB/s, 0 seconds passed
    ...8%, 0.06 MB, 384 KB/s, 0 seconds passed
    ...9%, 0.07 MB, 431 KB/s, 0 seconds passed
    ...10%, 0.08 MB, 477 KB/s, 0 seconds passed
    ...11%, 0.09 MB, 525 KB/s, 0 seconds passed
    ...13%, 0.09 MB, 572 KB/s, 0 seconds passed
    ...14%, 0.10 MB, 619 KB/s, 0 seconds passed
    ...15%, 0.11 MB, 665 KB/s, 0 seconds passed
    ...16%, 0.12 MB, 711 KB/s, 0 seconds passed
    ...17%, 0.12 MB, 757 KB/s, 0 seconds passed
    ...18%, 0.13 MB, 804 KB/s, 0 seconds passed
    ...19%, 0.14 MB, 850 KB/s, 0 seconds passed
    ...20%, 0.15 MB, 896 KB/s, 0 seconds passed
    ...21%, 0.16 MB, 942 KB/s, 0 seconds passed
    ...22%, 0.16 MB, 988 KB/s, 0 seconds passed
 
    ...23%, 0.17 MB, 1034 KB/s, 0 seconds passed
    ...24%, 0.18 MB, 1080 KB/s, 0 seconds passed
    ...26%, 0.19 MB, 1126 KB/s, 0 seconds passed
    ...27%, 0.20 MB, 1172 KB/s, 0 seconds passed
    ...28%, 0.20 MB, 1215 KB/s, 0 seconds passed
    ...29%, 0.21 MB, 1261 KB/s, 0 seconds passed
    ...30%, 0.22 MB, 1306 KB/s, 0 seconds passed
    ...31%, 0.23 MB, 1351 KB/s, 0 seconds passed
    ...32%, 0.23 MB, 1396 KB/s, 0 seconds passed
    ...33%, 0.24 MB, 1441 KB/s, 0 seconds passed
    ...34%, 0.25 MB, 1486 KB/s, 0 seconds passed
    ...35%, 0.26 MB, 1531 KB/s, 0 seconds passed
    ...36%, 0.27 MB, 1576 KB/s, 0 seconds passed
    ...38%, 0.27 MB, 1620 KB/s, 0 seconds passed
    ...39%, 0.28 MB, 1664 KB/s, 0 seconds passed
    ...40%, 0.29 MB, 1709 KB/s, 0 seconds passed
    ...41%, 0.30 MB, 1753 KB/s, 0 seconds passed
    ...42%, 0.30 MB, 1798 KB/s, 0 seconds passed
    ...43%, 0.31 MB, 1841 KB/s, 0 seconds passed
    ...44%, 0.32 MB, 1885 KB/s, 0 seconds passed
    ...45%, 0.33
  MB, 1929 KB/s, 0 seconds passed
    ...46%, 0.34 MB, 1973 KB/s, 0 seconds passed
    ...47%, 0.34 MB, 2017 KB/s, 0 seconds passed
    ...48%, 0.35 MB, 2061 KB/s, 0 seconds passed
    ...49%, 0.36 MB, 2105 KB/s, 0 seconds passed
    ...51%, 0.37 MB, 2146 KB/s, 0 seconds passed
    ...52%, 0.38 MB, 2190 KB/s, 0 seconds passed
    ...53%, 0.38 MB, 2234 KB/s, 0 seconds passed
    ...54%, 0.39 MB, 2277 KB/s, 0 seconds passed
    ...55%, 0.40 MB, 2321 KB/s, 0 seconds passed
    ...56%, 0.41 MB, 2364 KB/s, 0 seconds passed
    ...57%, 0.41 MB, 2407 KB/s, 0 seconds passed
    ...58%, 0.42 MB, 2450 KB/s, 0 seconds passed
    ...59%, 0.43 MB, 2493 KB/s, 0 seconds passed
    ...60%, 0.44 MB, 2536 KB/s, 0 seconds passed
    ...61%, 0.45 MB, 2579 KB/s, 0 seconds passed
    ...63%, 0.45 MB, 2621 KB/s, 0 seconds passed
    ...64%, 0.46 MB, 2665 KB/s, 0 seconds passed
    ...65%, 0.47 MB, 2705 KB/s, 0 seconds passed
    ...66%, 0.48 MB, 2748 KB/s, 0 seconds passed
    ...67%, 0.48 MB, 2786 KB/s, 0
  seconds passed
    ...68%, 0.49 MB, 2829 KB/s, 0 seconds passed
    ...69%, 0.50 MB, 2872 KB/s, 0 seconds passed
    ...70%, 0.51 MB, 2915 KB/s, 0 seconds passed
    ...71%, 0.52 MB, 2958 KB/s, 0 seconds passed
    ...72%, 0.52 MB, 3001 KB/s, 0 seconds passed
    ...73%, 0.53 MB, 3044 KB/s, 0 seconds passed
    ...74%, 0.54 MB, 3087 KB/s, 0 seconds passed
    ...76%, 0.55 MB, 3125 KB/s, 0 seconds passed
    ...77%, 0.55 MB, 3168 KB/s, 0 seconds passed
    ...78%, 0.56 MB, 3210 KB/s, 0 seconds passed
    ...79%, 0.57 MB, 3253 KB/s, 0 seconds passed
    ...80%, 0.58 MB, 3295 KB/s, 0 seconds passed
    ...81%, 0.59 MB, 3337 KB/s, 0 seconds passed
    ...82%, 0.59 MB, 3380 KB/s, 0 seconds passed
    ...83%, 0.60 MB, 3422 KB/s, 0 seconds passed
    ...84%, 0.61 MB, 3456 KB/s, 0 seconds passed
    ...85%, 0.62 MB, 3499 KB/s, 0 seconds passed
    ...86%, 0.62 MB, 3540 KB/s, 0 seconds passed
    ...87%, 0.63 MB, 3582 KB/s, 0 seconds passed
    ...89%, 0.64 MB, 3624 KB/s, 0 seconds passed
 
    ...90%, 0.65 MB, 3665 KB/s, 0 seconds passed
    ...91%, 0.66 MB, 3707 KB/s, 0 seconds passed
    ...92%, 0.66 MB, 3742 KB/s, 0 seconds passed
    ...93%, 0.67 MB, 3785 KB/s, 0 seconds passed
    ...94%, 0.68 MB, 3822 KB/s, 0 seconds passed
    ...95%, 0.69 MB, 3865 KB/s, 0 seconds passed
    ...96%, 0.70 MB, 3907 KB/s, 0 seconds passed
    ...97%, 0.70 MB, 3950 KB/s, 0 seconds passed
    ...98%, 0.71 MB, 3990 KB/s, 0 seconds passed
    ...99%, 0.72 MB, 4032 KB/s, 0 seconds passed
    ...100%, 0.73 MB, 4072 KB/s, 0 seconds passed
+
    ...1%, 0.01 MB, 46 KB/s, 0 seconds passed
    ...2%, 0.02 MB, 91 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 137 KB/s, 0 seconds passed
    ...4%, 0.03 MB, 183 KB/s, 0 seconds passed
    ...5%, 0.04 MB, 229 KB/s, 0 seconds passed
    ...6%, 0.05 MB, 270 KB/s, 0 seconds passed
    ...7%, 0.05 MB, 314 KB/s, 0 seconds passed
    ...8%, 0.06 MB, 359 KB/s, 0 seconds passed
    ...9%, 0.07 MB, 403 KB/s, 0 seconds passed
    ...10%, 0.08 MB, 448 KB/s, 0 seconds passed
    ...11%, 0.09 MB, 491 KB/s, 0 seconds passed
    ...13%, 0.09 MB, 535 KB/s, 0 seconds passed
    ...14%, 0.10 MB, 579 KB/s, 0 seconds passed
    ...15%, 0.11 MB, 623 KB/s, 0 seconds passed
    ...16%, 0.12 MB, 666 KB/s, 0 seconds passed
    ...17%, 0.12 MB, 710 KB/s, 0 seconds passed
    ...18%, 0.13 MB, 753 KB/s, 0 seconds passed
    ...19%, 0.14 MB, 797 KB/s, 0 seconds passed
    ...20%, 0.15 MB, 840 KB/s, 0 seconds passed
    ...21%, 0.16 MB, 884 KB/s, 0 seconds passed
    ...22%, 0.16 MB, 926 KB/s, 0 seconds passed
 
    ...23%, 0.17 MB, 970 KB/s, 0 seconds passed
    ...24%, 0.18 MB, 1012 KB/s, 0 seconds passed
    ...26%, 0.19 MB, 1055 KB/s, 0 seconds passed
    ...27%, 0.20 MB, 1098 KB/s, 0 seconds passed
    ...28%, 0.20 MB, 1140 KB/s, 0 seconds passed
    ...29%, 0.21 MB, 1181 KB/s, 0 seconds passed
    ...30%, 0.22 MB, 1224 KB/s, 0 seconds passed
    ...31%, 0.23 MB, 1266 KB/s, 0 seconds passed
    ...32%, 0.23 MB, 1308 KB/s, 0 seconds passed
    ...33%, 0.24 MB, 1351 KB/s, 0 seconds passed
    ...34%, 0.25 MB, 1391 KB/s, 0 seconds passed
    ...35%, 0.26 MB, 1433 KB/s, 0 seconds passed
    ...36%, 0.27 MB, 1474 KB/s, 0 seconds passed
    ...38%, 0.27 MB, 1515 KB/s, 0 seconds passed
    ...39%, 0.28 MB, 1558 KB/s, 0 seconds passed
    ...40%, 0.29 MB, 1599 KB/s, 0 seconds passed
    ...41%, 0.30 MB, 1640 KB/s, 0 seconds passed
    ...42%, 0.30 MB, 1681 KB/s, 0 seconds passed
    ...43%, 0.31 MB, 1723 KB/s, 0 seconds passed
    ...44%, 0.32 MB, 1764 KB/s, 0 seconds passed
    ...45%, 0.33 
 MB, 1805 KB/s, 0 seconds passed
    ...46%, 0.34 MB, 1847 KB/s, 0 seconds passed
    ...47%, 0.34 MB, 1887 KB/s, 0 seconds passed
    ...48%, 0.35 MB, 1926 KB/s, 0 seconds passed
    ...49%, 0.36 MB, 1968 KB/s, 0 seconds passed
    ...51%, 0.37 MB, 2009 KB/s, 0 seconds passed
    ...52%, 0.38 MB, 2048 KB/s, 0 seconds passed
    ...53%, 0.38 MB, 2090 KB/s, 0 seconds passed
    ...54%, 0.39 MB, 2131 KB/s, 0 seconds passed
    ...55%, 0.40 MB, 2170 KB/s, 0 seconds passed
    ...56%, 0.41 MB, 2210 KB/s, 0 seconds passed
    ...57%, 0.41 MB, 2248 KB/s, 0 seconds passed
    ...58%, 0.42 MB, 2289 KB/s, 0 seconds passed
    ...59%, 0.43 MB, 2330 KB/s, 0 seconds passed
    ...60%, 0.44 MB, 2370 KB/s, 0 seconds passed
    ...61%, 0.45 MB, 2410 KB/s, 0 seconds passed
    ...63%, 0.45 MB, 2451 KB/s, 0 seconds passed
    ...64%, 0.46 MB, 2490 KB/s, 0 seconds passed
    ...65%, 0.47 MB, 2530 KB/s, 0 seconds passed
    ...66%, 0.48 MB, 2567 KB/s, 0 seconds passed
    ...67%, 0.48 MB, 2590 KB/s, 0 
 seconds passed
    ...68%, 0.49 MB, 2630 KB/s, 0 seconds passed
    ...69%, 0.50 MB, 2670 KB/s, 0 seconds passed
    ...70%, 0.51 MB, 2709 KB/s, 0 seconds passed
    ...71%, 0.52 MB, 2749 KB/s, 0 seconds passed
    ...72%, 0.52 MB, 2789 KB/s, 0 seconds passed
    ...73%, 0.53 MB, 2829 KB/s, 0 seconds passed
    ...74%, 0.54 MB, 2869 KB/s, 0 seconds passed
    ...76%, 0.55 MB, 2907 KB/s, 0 seconds passed
    ...77%, 0.55 MB, 2946 KB/s, 0 seconds passed
    ...78%, 0.56 MB, 2986 KB/s, 0 seconds passed
    ...79%, 0.57 MB, 3025 KB/s, 0 seconds passed
    ...80%, 0.58 MB, 3064 KB/s, 0 seconds passed
    ...81%, 0.59 MB, 3103 KB/s, 0 seconds passed
    ...82%, 0.59 MB, 3142 KB/s, 0 seconds passed
    ...83%, 0.60 MB, 3179 KB/s, 0 seconds passed
    ...84%, 0.61 MB, 3218 KB/s, 0 seconds passed
    ...85%, 0.62 MB, 3257 KB/s, 0 seconds passed
    ...86%, 0.62 MB, 3296 KB/s, 0 seconds passed
    ...87%, 0.63 MB, 3335 KB/s, 0 seconds passed
    ...89%, 0.64 MB, 3374 KB/s, 0 seconds passed
  
   ...90%, 0.65 MB, 3409 KB/s, 0 seconds passed
    ...91%, 0.66 MB, 3447 KB/s, 0 seconds passed
    ...92%, 0.66 MB, 3486 KB/s, 0 seconds passed
    ...93%, 0.67 MB, 3524 KB/s, 0 seconds passed
    ...94%, 0.68 MB, 3563 KB/s, 0 seconds passed
    ...95%, 0.69 MB, 3601 KB/s, 0 seconds passed
    ...96%, 0.70 MB, 3638 KB/s, 0 seconds passed
    ...97%, 0.70 MB, 3675 KB/s, 0 seconds passed
    ...98%, 0.71 MB, 3715 KB/s, 0 seconds passed
    ...99%, 0.72 MB, 3744 KB/s, 0 seconds passed
    ...100%, 0.73 MB, 3781 KB/s, 0 seconds passed
     Extracted 10 conv2d tasks:
     (1, 14, 14, 256, 512, 1, 1, 0, 0, 2, 2)
     (1, 28, 28, 128, 256, 1, 1, 0, 0, 2, 2)
diff --git a/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt b/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt
index 810c0c9..ef0a80f 100644
--- a/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt
+++ b/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt
@@ -158,7 +158,7 @@ Otherwise, if target is 'sim', execute locally.
 
 
 Build the inference graph executor
----------------------------------
+----------------------------------
 Grab vision model from Gluon model zoo and compile with Relay.
 The compilation steps are:
 
@@ -259,8 +259,8 @@ The compilation steps are:
 
  .. code-block:: none
 
-
    ...12%, 0.01 MB, 50 KB/s, 0 seconds passed
    ...25%, 0.02 MB, 100 KB/s, 0 seconds passed
    ...38%, 0.02 MB, 151 KB/s, 0 seconds passed
    ...51%, 0.03 MB, 201 KB/s, 0 seconds passed
    ...64%, 0.04 MB, 251 KB/s, 0 seconds passed
    ...77%, 0.05 MB, 301 KB/s, 0 seconds passed
    ...89%, 0.05 MB, 351 KB/s, 0 seconds passed
    ...100%, 0.06 MB, 400 KB/s, 0 seconds passed
-    resnet18_v1 inference graph built in 7.49s!
+
    ...12%, 0.01 MB, 56 KB/s, 0 seconds passed
    ...25%, 0.02 MB, 113 KB/s, 0 seconds passed
    ...38%, 0.02 MB, 169 KB/s, 0 seconds passed
    ...51%, 0.03 MB, 225 KB/s, 0 seconds passed
    ...64%, 0.04 MB, 282 KB/s, 0 seconds passed
    ...77%, 0.05 MB, 337 KB/s, 0 seconds passed
    ...89%, 0.05 MB, 393 KB/s, 0 seconds passed
    ...100%, 0.06 MB, 448 KB/s, 0 seconds passed
+    resnet18_v1 inference graph built in 7.63s!
     /workspace/docs/../python/tvm/contrib/graph_runtime.py:26: UserWarning: This function has been moved to tvm.contrib.graph_executor and will be removed in the next TVM release
       "This function has been moved to tvm.contrib.graph_executor and will be removed "
 
diff --git a/docs/_sources/vta/tutorials/frontend/sg_execution_times.rst.txt b/docs/_sources/vta/tutorials/frontend/sg_execution_times.rst.txt
index a19c1d6..70ec055 100644
--- a/docs/_sources/vta/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/vta/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,6 +5,6 @@
 
 Computation times
 =================
-**00:22.905** total execution time for **vta_tutorials_frontend** files:
+**00:22.611** total execution time for **vta_tutorials_frontend** files:
 
-- **00:22.905**: :ref:`sphx_glr_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``)
+- **00:22.611**: :ref:`sphx_glr_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``)
diff --git a/docs/_sources/vta/tutorials/matrix_multiply.rst.txt b/docs/_sources/vta/tutorials/matrix_multiply.rst.txt
index ed64902..4ab661e 100644
--- a/docs/_sources/vta/tutorials/matrix_multiply.rst.txt
+++ b/docs/_sources/vta/tutorials/matrix_multiply.rst.txt
@@ -304,8 +304,8 @@ After we construct the schedule, by default the schedule computes
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {A: Buffer(A_2: Pointer(int8), int8, [1, 16, 1, 16], []),
-                 C: Buffer(C_2: Pointer(int8), int8, [1, 16, 1, 16], []),
+      buffers = {C: Buffer(C_2: Pointer(int8), int8, [1, 16, 1, 16], []),
+                 A: Buffer(A_2: Pointer(int8), int8, [1, 16, 1, 16], []),
                  B: Buffer(B_2: Pointer(int8), int8, [16, 16, 16, 16], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [A_buf: Pointer(int8)] "storage_scope" = "global";
diff --git a/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt b/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt
index 9bc6300..43428bc 100644
--- a/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt
+++ b/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt
@@ -252,8 +252,8 @@ Those include:
 
     primfn(data_1: handle, kernel_1: handle, res_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
-                 data: Buffer(data_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
+      buffers = {data: Buffer(data_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
+                 res: Buffer(res_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
                  kernel: Buffer(kernel_2: Pointer(int8), int8, [16, 16, 3, 3, 16, 16], [])}
       buffer_map = {data_1: data, kernel_1: kernel, res_1: res} {
       attr [data_buf: Pointer(int8)] "storage_scope" = "global";
@@ -448,8 +448,8 @@ below.
 
     primfn(data_1: handle, kernel_1: handle, res_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
-                 data: Buffer(data_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
+      buffers = {data: Buffer(data_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
+                 res: Buffer(res_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
                  kernel: Buffer(kernel_2: Pointer(int8), int8, [16, 16, 3, 3, 16, 16], [])}
       buffer_map = {data_1: data, kernel_1: kernel, res_1: res} {
       attr [data_buf: Pointer(int8)] "storage_scope" = "global";
diff --git a/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt b/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
index bde11ab..df221b5 100644
--- a/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
+++ b/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
@@ -189,8 +189,8 @@ Those include:
 
     primfn(data_1: handle, weight_1: handle, res_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 data: Buffer(data_2: Pointer(int8), int8, [1, 64, 1, 16], []),
+      buffers = {data: Buffer(data_2: Pointer(int8), int8, [1, 64, 1, 16], []),
+                 res: Buffer(res_2: Pointer(int8), int8, [1, 64, 1, 16], []),
                  weight: Buffer(weight_2: Pointer(int8), int8, [64, 64, 16, 16], [])}
       buffer_map = {data_1: data, weight_1: weight, res_1: res} {
       attr [data_buf: Pointer(int8)] "storage_scope" = "global";
diff --git a/docs/_sources/vta/tutorials/optimize/sg_execution_times.rst.txt b/docs/_sources/vta/tutorials/optimize/sg_execution_times.rst.txt
index 8e79480..ba4a3a2 100644
--- a/docs/_sources/vta/tutorials/optimize/sg_execution_times.rst.txt
+++ b/docs/_sources/vta/tutorials/optimize/sg_execution_times.rst.txt
@@ -5,7 +5,7 @@
 
 Computation times
 =================
-**00:02.885** total execution time for **vta_tutorials_optimize** files:
+**00:02.893** total execution time for **vta_tutorials_optimize** files:
 
-- **00:02.414**: :ref:`sphx_glr_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)
-- **00:00.472**: :ref:`sphx_glr_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``)
+- **00:02.407**: :ref:`sphx_glr_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)
+- **00:00.485**: :ref:`sphx_glr_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``)
diff --git a/docs/_sources/vta/tutorials/sg_execution_times.rst.txt b/docs/_sources/vta/tutorials/sg_execution_times.rst.txt
index 8539f93..ad233d4 100644
--- a/docs/_sources/vta/tutorials/sg_execution_times.rst.txt
+++ b/docs/_sources/vta/tutorials/sg_execution_times.rst.txt
@@ -5,7 +5,7 @@
 
 Computation times
 =================
-**00:00.883** total execution time for **vta_tutorials** files:
+**00:00.904** total execution time for **vta_tutorials** files:
 
-- **00:00.444**: :ref:`sphx_glr_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``)
-- **00:00.439**: :ref:`sphx_glr_vta_tutorials_vta_get_started.py` (``vta_get_started.py``)
+- **00:00.464**: :ref:`sphx_glr_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``)
+- **00:00.440**: :ref:`sphx_glr_vta_tutorials_vta_get_started.py` (``vta_get_started.py``)
diff --git a/docs/api/doxygen/algorithm_8h.html b/docs/api/doxygen/algorithm_8h.html
index 016376d..edba736 100644
--- a/docs/api/doxygen/algorithm_8h.html
+++ b/docs/api/doxygen/algorithm_8h.html
@@ -76,7 +76,7 @@ $(function() {
 </div><div class="textblock"><div class="dynheader">
 Include dependency graph for algorithm.h:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="algorithm_8h__incl.svg" width="5224" height="1380"><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="algorithm_8h__incl.svg" width="5195" height="1380"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </div>
 </div>
 </div>
diff --git a/docs/api/doxygen/algorithm_8h__incl.svg b/docs/api/doxygen/algorithm_8h__incl.svg
index 6fa5aef..8db989f 100644
--- a/docs/api/doxygen/algorithm_8h__incl.svg
+++ b/docs/api/doxygen/algorithm_8h__incl.svg
@@ -4,1750 +4,1750 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: include/tvm/relay/attrs/algorithm.h Pages: 1 -->
-<svg width="3918pt" height="1035pt"
- viewBox="0.00 0.00 3918.00 1035.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="3896pt" height="1035pt"
+ viewBox="0.00 0.00 3896.00 1035.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 1031)">
 <title>include/tvm/relay/attrs/algorithm.h</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1031 3914,-1031 3914,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1031 3892,-1031 3892,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="2774,-996.5 2774,-1026.5 2902,-1026.5 2902,-996.5 2774,-996.5"/>
-<text text-anchor="start" x="2782" y="-1014.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/relay/attrs</text>
-<text text-anchor="middle" x="2838" y="-1003.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/algorithm.h</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="937,-996.5 937,-1026.5 1065,-1026.5 1065,-996.5 937,-996.5"/>
+<text text-anchor="start" x="945" y="-1014.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/relay/attrs</text>
+<text text-anchor="middle" x="1001" y="-1003.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/algorithm.h</text>
 </g>
 <!-- Node1 -->
 <g id="node2" class="node">
 <title>Node1</title>
 <g id="a_node2"><a xlink:href="ir_2attrs_8h.html" target="_top" xlink:title="Helpers for attribute objects. ">
-<polygon fill="#ffffff" stroke="#000000" points="1409,-660.5 1409,-679.5 1489,-679.5 1489,-660.5 1409,-660.5"/>
-<text text-anchor="middle" x="1449" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/attrs.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="2564,-660.5 2564,-679.5 2644,-679.5 2644,-660.5 2564,-660.5"/>
+<text text-anchor="middle" x="2604" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/attrs.h</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node0&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M2773.8112,-1009.8997C2580.4825,-1004.2572 2006.7512,-981.2583 1839,-904 1727.01,-852.4227 1744.3268,-773.0055 1635,-716 1611.6425,-703.8209 1545.9947,-689.1049 1499.3238,-679.6526"/>
-<polygon fill="#191970" stroke="#191970" points="1499.8739,-676.1933 1489.3811,-677.66 1498.4984,-683.0569 1499.8739,-676.1933"/>
+<path fill="none" stroke="#191970" d="M1065.2145,-1010.5519C1377.8871,-1005.5229 2726,-978.9162 2726,-894 2726,-894 2726,-894 2726,-782 2726,-733.9632 2674.0389,-700.9238 2637.9382,-683.766"/>
+<polygon fill="#191970" stroke="#191970" points="2639.2393,-680.5126 2628.6885,-679.5474 2636.3345,-686.8815 2639.2393,-680.5126"/>
 </g>
 <!-- Node16 -->
 <g id="node13" class="node">
 <title>Node16</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="3418,-6 3418,-25 3462,-25 3462,-6 3418,-6"/>
-<text text-anchor="middle" x="3440" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">string</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="548,-6 548,-25 592,-25 592,-6 548,-6"/>
+<text text-anchor="middle" x="570" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">string</text>
 </g>
 <!-- Node0&#45;&gt;Node16 -->
 <g id="edge222" class="edge">
 <title>Node0&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M2902.2457,-1007.8508C3133.5211,-994.2958 3910,-944.9898 3910,-894 3910,-894 3910,-894 3910,-133 3910,-95.6561 3890.5361,-85.3294 3858,-67 3791.9445,-29.7873 3558.6057,-19.0693 3472.3567,-16.3404"/>
-<polygon fill="#191970" stroke="#191970" points="3472.2227,-12.8349 3462.122,-16.0327 3472.0122,-19.8317 3472.2227,-12.8349"/>
+<path fill="none" stroke="#191970" d="M936.8602,-1010.7353C715.929,-1007.2635 0,-988.7068 0,-894 0,-894 0,-894 0,-133 0,-96.1996 17.8932,-84.9841 50,-67 92.5647,-43.1581 430.7554,-23.0212 537.6996,-17.197"/>
+<polygon fill="#191970" stroke="#191970" points="538.0816,-20.6816 547.8785,-16.648 537.7045,-13.6917 538.0816,-20.6816"/>
 </g>
-<!-- Node47 -->
+<!-- Node48 -->
 <g id="node35" class="node">
-<title>Node47</title>
+<title>Node48</title>
 <g id="a_node35"><a xlink:href="relay_2base_8h.html" target="_top" xlink:title="Base classes for the Relay IR. ">
-<polygon fill="#ffffff" stroke="#000000" points="2987.5,-828.5 2987.5,-847.5 3086.5,-847.5 3086.5,-828.5 2987.5,-828.5"/>
-<text text-anchor="middle" x="3037" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/relay/base.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="349.5,-828.5 349.5,-847.5 448.5,-847.5 448.5,-828.5 349.5,-828.5"/>
+<text text-anchor="middle" x="399" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/relay/base.h</text>
 </a>
 </g>
 </g>
-<!-- Node0&#45;&gt;Node47 -->
+<!-- Node0&#45;&gt;Node48 -->
 <g id="edge127" class="edge">
-<title>Node0&#45;&gt;Node47</title>
-<path fill="none" stroke="#191970" d="M2855.3118,-996.4065C2892.411,-964.0613 2979.3351,-888.2757 3017.9426,-854.6153"/>
-<polygon fill="#191970" stroke="#191970" points="3020.5933,-856.9478 3025.8308,-847.738 3015.9932,-851.6715 3020.5933,-856.9478"/>
+<title>Node0&#45;&gt;Node48</title>
+<path fill="none" stroke="#191970" d="M948.8914,-996.482C831.8448,-962.7485 549.9136,-881.4942 442.006,-850.3946"/>
+<polygon fill="#191970" stroke="#191970" points="442.6962,-846.9511 432.118,-847.5448 440.7576,-853.6773 442.6962,-846.9511"/>
 </g>
-<!-- Node51 -->
+<!-- Node52 -->
 <g id="node39" class="node">
-<title>Node51</title>
+<title>Node52</title>
 <g id="a_node39"><a xlink:href="relay_2expr_8h.html" target="_top" xlink:title="Relay expression language. ">
-<polygon fill="#ffffff" stroke="#000000" points="1636.5,-940.5 1636.5,-959.5 1733.5,-959.5 1733.5,-940.5 1636.5,-940.5"/>
-<text text-anchor="middle" x="1685" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/relay/expr.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1875.5,-940.5 1875.5,-959.5 1972.5,-959.5 1972.5,-940.5 1875.5,-940.5"/>
+<text text-anchor="middle" x="1924" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/relay/expr.h</text>
 </a>
 </g>
 </g>
-<!-- Node0&#45;&gt;Node51 -->
+<!-- Node0&#45;&gt;Node52 -->
 <g id="edge158" class="edge">
-<title>Node0&#45;&gt;Node51</title>
-<path fill="none" stroke="#191970" d="M2773.828,-1009.4974C2609.3239,-1004.1173 2159.1792,-987.841 1785,-960 1771.62,-959.0045 1757.2552,-957.7047 1743.7045,-956.3733"/>
-<polygon fill="#191970" stroke="#191970" points="1743.83,-952.8684 1733.5307,-955.3535 1743.1318,-959.8335 1743.83,-952.8684"/>
+<title>Node0&#45;&gt;Node52</title>
+<path fill="none" stroke="#191970" d="M1065.1708,-1007.2243C1235.9865,-995.8427 1699.9583,-964.928 1864.859,-953.9406"/>
+<polygon fill="#191970" stroke="#191970" points="1865.5368,-957.4033 1875.282,-953.2461 1865.0714,-950.4188 1865.5368,-957.4033"/>
 </g>
 <!-- Node2 -->
 <g id="node3" class="node">
 <title>Node2</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="1274.5,-604.5 1274.5,-623.5 1369.5,-623.5 1369.5,-604.5 1274.5,-604.5"/>
-<text text-anchor="middle" x="1322" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dmlc/common.h</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="2640.5,-604.5 2640.5,-623.5 2735.5,-623.5 2735.5,-604.5 2640.5,-604.5"/>
+<text text-anchor="middle" x="2688" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dmlc/common.h</text>
 </g>
 <!-- Node1&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node1&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M1427.1679,-660.3733C1406.6897,-651.3435 1375.8601,-637.7494 1352.8681,-627.6111"/>
-<polygon fill="#191970" stroke="#191970" points="1354.1093,-624.3333 1343.5472,-623.5011 1351.285,-630.7383 1354.1093,-624.3333"/>
+<path fill="none" stroke="#191970" d="M2618.6317,-660.2455C2631.3994,-651.7337 2650.1438,-639.2375 2664.9299,-629.3801"/>
+<polygon fill="#191970" stroke="#191970" points="2667.1569,-632.1019 2673.536,-623.6427 2663.274,-626.2775 2667.1569,-632.1019"/>
 </g>
 <!-- Node3 -->
 <g id="node4" class="node">
 <title>Node3</title>
 <g id="a_node4"><a xlink:href="ir_2expr_8h.html" target="_top" xlink:title="Base expr nodes in TVM. ">
-<polygon fill="#ffffff" stroke="#000000" points="2099.5,-604.5 2099.5,-623.5 2178.5,-623.5 2178.5,-604.5 2099.5,-604.5"/>
-<text text-anchor="middle" x="2139" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/expr.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1882.5,-604.5 1882.5,-623.5 1961.5,-623.5 1961.5,-604.5 1882.5,-604.5"/>
+<text text-anchor="middle" x="1922" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/expr.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node1&#45;&gt;Node3</title>
-<path fill="none" stroke="#191970" d="M1489.0797,-666.7472C1607.9563,-657.0992 1958.4211,-628.6557 2089.115,-618.0486"/>
-<polygon fill="#191970" stroke="#191970" points="2089.5565,-621.5244 2099.2406,-617.2269 2088.9902,-614.5473 2089.5565,-621.5244"/>
+<path fill="none" stroke="#191970" d="M2563.8839,-666.706C2446.0118,-657.0274 2100.9272,-628.692 1971.6572,-618.0774"/>
+<polygon fill="#191970" stroke="#191970" points="1971.8914,-614.585 1961.6385,-617.2548 1971.3185,-621.5615 1971.8914,-614.585"/>
 </g>
 <!-- Node7 -->
 <g id="node8" class="node">
 <title>Node7</title>
 <g id="a_node8"><a xlink:href="structural__equal_8h.html" target="_top" xlink:title="Structural equality comparison. ">
-<polygon fill="#ffffff" stroke="#000000" points="2702.5,-313.5 2702.5,-343.5 2815.5,-343.5 2815.5,-313.5 2702.5,-313.5"/>
-<text text-anchor="start" x="2710.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/structural</text>
-<text text-anchor="middle" x="2759" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_equal.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1590.5,-313.5 1590.5,-343.5 1703.5,-343.5 1703.5,-313.5 1590.5,-313.5"/>
+<text text-anchor="start" x="1598.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/structural</text>
+<text text-anchor="middle" x="1647" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_equal.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node7 -->
 <g id="edge118" class="edge">
 <title>Node1&#45;&gt;Node7</title>
-<path fill="none" stroke="#191970" d="M1479.9751,-660.4438C1571.2473,-632.312 1833.9789,-551.5367 1853,-548 2064.6349,-508.6499 2122.2989,-537.877 2336,-512 2484.9898,-493.9589 2522.6651,-489.31 2669,-456 2756.5042,-436.0815 2809.055,-471.7193 2863,-400 2879.9493,-377.4661 2853.5782,-359.5196 2823.1568,-347.2426"/>
-<polygon fill="#191970" stroke="#191970" points="2824.2201,-343.9024 2813.6292,-343.6158 2821.7297,-350.4445 2824.2201,-343.9024"/>
+<path fill="none" stroke="#191970" d="M2587.1381,-660.4374C2557.5172,-643.8102 2497.0937,-610.6999 2474,-604 2311.923,-556.9784 2256.0651,-621.471 2096,-568 2034.6916,-547.5194 2028.4768,-523.4411 1972,-492 1872.0041,-436.3314 1750.7422,-377.5562 1688.4155,-347.9615"/>
+<polygon fill="#191970" stroke="#191970" points="1689.8292,-344.7584 1679.2937,-343.6389 1686.8315,-351.0841 1689.8292,-344.7584"/>
 </g>
 <!-- Node1&#45;&gt;Node16 -->
 <g id="edge122" class="edge">
 <title>Node1&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1489.0071,-667.6316C1599.8958,-661.0398 1920.5763,-641.7937 2187,-624 2361.7202,-612.3309 2801.9341,-605.4133 2973,-568 3042.1113,-552.8849 3057.6784,-541.4546 3122,-512 3338.6434,-412.7932 3554,-432.7779 3554,-194.5 3554,-194.5 3554,-194.5 3554,-133 3554,-84.5473 3503.4485,-48.5212 3469.6708,-29.8573"/>
-<polygon fill="#191970" stroke="#191970" points="3471.1172,-26.6624 3460.6445,-25.0577 3467.8307,-32.843 3471.1172,-26.6624"/>
+<path fill="none" stroke="#191970" d="M2563.6376,-667.4961C2453.2349,-660.6388 2136.9541,-640.9367 1874,-624 1301.4185,-587.1205 1066.0742,-782.1221 594,-456 506.7934,-395.7552 456,-367.4925 456,-261.5 456,-261.5 456,-261.5 456,-133 456,-84.5473 506.5515,-48.5212 540.3292,-29.8573"/>
+<polygon fill="#191970" stroke="#191970" points="542.1693,-32.843 549.3555,-25.0577 538.8828,-26.6624 542.1693,-32.843"/>
 </g>
 <!-- Node17 -->
 <g id="node14" class="node">
 <title>Node17</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="2014.5,-6 2014.5,-25 2083.5,-25 2083.5,-6 2014.5,-6"/>
-<text text-anchor="middle" x="2049" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">type_traits</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="2559.5,-6 2559.5,-25 2628.5,-25 2628.5,-6 2559.5,-6"/>
+<text text-anchor="middle" x="2594" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">type_traits</text>
 </g>
 <!-- Node1&#45;&gt;Node17 -->
 <g id="edge123" class="edge">
 <title>Node1&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M1408.8786,-665.2675C1356.398,-658.5771 1261.849,-644.802 1183,-624 990.2305,-573.1435 282.7287,-337.2395 404,-179 462.2351,-103.0125 517.6249,-139.0867 612,-123 889.9942,-75.6146 1792.7967,-28.3189 2004.3515,-17.7037"/>
-<polygon fill="#191970" stroke="#191970" points="2004.6559,-21.1929 2014.4685,-17.1976 2004.3061,-14.2017 2004.6559,-21.1929"/>
+<path fill="none" stroke="#191970" d="M2644.0344,-660.7099C2834.1649,-615.613 3632.4535,-414.8159 3527,-246 3429.8162,-90.4227 2811.2661,-32.0526 2638.6684,-18.6793"/>
+<polygon fill="#191970" stroke="#191970" points="2638.8945,-15.1864 2628.6572,-17.9156 2638.362,-22.1662 2638.8945,-15.1864"/>
 </g>
 <!-- Node18 -->
 <g id="node15" class="node">
 <title>Node18</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="395.5,-6 395.5,-25 440.5,-25 440.5,-6 395.5,-6"/>
-<text text-anchor="middle" x="418" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">utility</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="3447.5,-6 3447.5,-25 3492.5,-25 3492.5,-6 3447.5,-6"/>
+<text text-anchor="middle" x="3470" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">utility</text>
 </g>
 <!-- Node1&#45;&gt;Node18 -->
 <g id="edge125" class="edge">
 <title>Node1&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M1408.9761,-667.4845C1283.0907,-658.0376 887.1972,-616.5195 611,-456 480.5365,-380.1776 411.2291,-356.9631 377,-210 362.58,-148.0876 359.0586,-127.0212 380,-67 384.4731,-54.1794 393.3347,-41.8635 401.3757,-32.4919"/>
-<polygon fill="#191970" stroke="#191970" points="403.976,-34.8348 408.1,-25.0756 398.7901,-30.133 403.976,-34.8348"/>
+<path fill="none" stroke="#191970" d="M2644.3097,-663.2123C2691.4719,-655.0241 2771.7944,-640.3106 2840,-624 3062.1843,-570.8672 3774,-422.949 3774,-194.5 3774,-194.5 3774,-194.5 3774,-133 3774,-75.3285 3581.2452,-35.0001 3502.7092,-20.9621"/>
+<polygon fill="#191970" stroke="#191970" points="3503.304,-17.5131 3492.8494,-19.2311 3502.0935,-24.4076 3503.304,-17.5131"/>
 </g>
 <!-- Node20 -->
 <g id="node16" class="node">
 <title>Node20</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="1442.5,-123.5 1442.5,-142.5 1489.5,-142.5 1489.5,-123.5 1442.5,-123.5"/>
-<text text-anchor="middle" x="1466" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">vector</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="1687.5,-123.5 1687.5,-142.5 1734.5,-142.5 1734.5,-123.5 1687.5,-123.5"/>
+<text text-anchor="middle" x="1711" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">vector</text>
 </g>
 <!-- Node1&#45;&gt;Node20 -->
 <g id="edge126" class="edge">
 <title>Node1&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M1408.8501,-666.0898C1358.4704,-660.2577 1276.4153,-647.3769 1258,-624 1252.4994,-617.0174 1256.165,-612.6974 1258,-604 1297.5861,-416.369 1416.8878,-212.458 1454.5067,-151.3089"/>
-<polygon fill="#191970" stroke="#191970" points="1457.5218,-153.0879 1459.8183,-142.7449 1451.5731,-149.3983 1457.5218,-153.0879"/>
+<path fill="none" stroke="#191970" d="M2594.0448,-660.2871C2577.9241,-645.2365 2544.4241,-616.6948 2510,-604 2350.8331,-545.3029 2285.6827,-635.3971 2130,-568 2123.1008,-565.0132 1727.655,-216.5697 1724,-210 1714.1463,-192.2884 1711.3679,-169.0035 1710.7616,-152.6951"/>
+<polygon fill="#191970" stroke="#191970" points="1714.2611,-152.626 1710.6286,-142.6734 1707.2617,-152.719 1714.2611,-152.626"/>
 </g>
 <!-- Node29 -->
 <g id="node21" class="node">
 <title>Node29</title>
 <g id="a_node21"><a xlink:href="structural__hash_8h.html" target="_top" xlink:title="tvm/node/structural\l_hash.h">
-<polygon fill="#ffffff" stroke="#000000" points="2552.5,-246.5 2552.5,-276.5 2665.5,-276.5 2665.5,-246.5 2552.5,-246.5"/>
-<text text-anchor="start" x="2560.5" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/structural</text>
-<text text-anchor="middle" x="2609" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_hash.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1192.5,-246.5 1192.5,-276.5 1305.5,-276.5 1305.5,-246.5 1192.5,-246.5"/>
+<text text-anchor="start" x="1200.5" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/structural</text>
+<text text-anchor="middle" x="1249" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_hash.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node29 -->
 <g id="edge119" class="edge">
 <title>Node1&#45;&gt;Node29</title>
-<path fill="none" stroke="#191970" d="M1468.5911,-660.4929C1496.9461,-646.9377 1551.2612,-621.7369 1599,-604 1608.9664,-600.2971 1771.6911,-550.6013 1782,-548 1863.302,-527.4843 2452.969,-447.5987 2522,-400 2562.7115,-371.9283 2588.2946,-317.9544 2600.4918,-286.311"/>
-<polygon fill="#191970" stroke="#191970" points="2603.7926,-287.4761 2603.9838,-276.883 2597.2284,-285.0447 2603.7926,-287.4761"/>
+<path fill="none" stroke="#191970" d="M2574.2851,-660.4156C2528.6723,-646.0572 2438.4378,-619.0464 2360,-604 2222.9127,-577.7031 2181.3656,-609.2076 2048,-568 2029.7653,-562.3658 2027.4686,-555.6873 2010,-548 1942.5748,-518.3284 1924.3307,-513.9127 1854,-492 1761.3676,-463.1388 1737.5161,-457.9188 1643,-436 1563.1002,-417.4708 1540.2146,-424.6939 1462,-400 1403.174,-381.4275 1386.2605,-378.3191 1335,-344 1309.6546,-327.0312 1284.9808,-302.2471 1268.6102,-284.276"/>
+<polygon fill="#191970" stroke="#191970" points="1270.9759,-281.671 1261.7003,-276.551 1265.7586,-286.3378 1270.9759,-281.671"/>
 </g>
 <!-- Node30 -->
 <g id="node22" class="node">
 <title>Node30</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="1602.5,-185 1602.5,-204 1667.5,-204 1667.5,-185 1602.5,-185"/>
-<text text-anchor="middle" x="1635" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">functional</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="1176.5,-185 1176.5,-204 1241.5,-204 1241.5,-185 1176.5,-185"/>
+<text text-anchor="middle" x="1209" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">functional</text>
 </g>
 <!-- Node1&#45;&gt;Node30 -->
 <g id="edge121" class="edge">
 <title>Node1&#45;&gt;Node30</title>
-<path fill="none" stroke="#191970" d="M1408.6219,-665.6554C1359.9456,-659.4888 1282.4777,-646.3851 1265,-624 1259.5297,-616.9937 1260.8304,-611.8503 1265,-604 1320.1054,-500.2509 1403.9172,-541.949 1484,-456 1556.6097,-378.0715 1609.0778,-259.1258 1627.6397,-213.3546"/>
-<polygon fill="#191970" stroke="#191970" points="1630.8993,-214.6297 1631.3537,-204.0446 1624.3975,-212.036 1630.8993,-214.6297"/>
+<path fill="none" stroke="#191970" d="M2563.9375,-665.2735C2467.5519,-653.4375 2215.4765,-619.7156 2010,-568 1906.8245,-542.0322 1887.3415,-512.7931 1783,-492 1639.2817,-463.3599 1212.4519,-521.1482 1130,-400 1087.4139,-337.4274 1157.9804,-248.6979 1192.1271,-211.7179"/>
+<polygon fill="#191970" stroke="#191970" points="1194.8605,-213.9213 1199.185,-204.2492 1189.7728,-209.1134 1194.8605,-213.9213"/>
 </g>
-<!-- Node33 -->
+<!-- Node36 -->
 <g id="node26" class="node">
-<title>Node33</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="621.5,-123.5 621.5,-142.5 714.5,-142.5 714.5,-123.5 621.5,-123.5"/>
-<text text-anchor="middle" x="668" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">unordered_map</text>
+<title>Node36</title>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="3172.5,-123.5 3172.5,-142.5 3265.5,-142.5 3265.5,-123.5 3172.5,-123.5"/>
+<text text-anchor="middle" x="3219" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">unordered_map</text>
 </g>
-<!-- Node1&#45;&gt;Node33 -->
+<!-- Node1&#45;&gt;Node36 -->
 <g id="edge124" class="edge">
-<title>Node1&#45;&gt;Node33</title>
-<path fill="none" stroke="#191970" d="M1408.6305,-662.0729C1368.5441,-653.8512 1305.5092,-639.9754 1252,-624 1027.9618,-557.1123 969.8567,-530.7158 776,-400 706.2136,-352.9436 667.2363,-353.4385 632,-277 626.2321,-264.4877 627.8824,-259.1481 632,-246 637.8216,-227.4106 649.8752,-228.1299 657,-210 664.2334,-191.5936 666.7907,-169.0467 667.6547,-153.1208"/>
-<polygon fill="#191970" stroke="#191970" points="671.1624,-152.9686 668.0273,-142.8482 664.167,-152.7148 671.1624,-152.9686"/>
+<title>Node1&#45;&gt;Node36</title>
+<path fill="none" stroke="#191970" d="M2644.2689,-664.2797C2677.3138,-658.1974 2724.304,-646.2677 2760,-624 2873.8298,-552.9913 3072.7472,-273.4794 3168,-179 3178.3175,-168.7663 3190.3702,-157.8509 3200.1675,-149.2222"/>
+<polygon fill="#191970" stroke="#191970" points="3202.5477,-151.7904 3207.7791,-142.5772 3197.9441,-146.5171 3202.5477,-151.7904"/>
 </g>
 <!-- Node40 -->
-<g id="node28" class="node">
+<g id="node27" class="node">
 <title>Node40</title>
-<g id="a_node28"><a xlink:href="packed__func_8h.html" target="_top" xlink:title="Type&#45;erased function used across TVM API. ">
-<polygon fill="#ffffff" stroke="#000000" points="1734,-313.5 1734,-343.5 1850,-343.5 1850,-313.5 1734,-313.5"/>
-<text text-anchor="start" x="1742" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/packed</text>
-<text text-anchor="middle" x="1792" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_func.h</text>
+<g id="a_node27"><a xlink:href="packed__func_8h.html" target="_top" xlink:title="Type&#45;erased function used across TVM API. ">
+<polygon fill="#ffffff" stroke="#000000" points="2088,-313.5 2088,-343.5 2204,-343.5 2204,-313.5 2088,-313.5"/>
+<text text-anchor="start" x="2096" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/packed</text>
+<text text-anchor="middle" x="2146" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_func.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node40 -->
 <g id="edge120" class="edge">
 <title>Node1&#45;&gt;Node40</title>
-<path fill="none" stroke="#191970" d="M1453.3953,-660.0955C1460.5017,-645.3188 1475.9769,-617.7692 1498,-604 1571.6164,-557.9739 1622.3144,-622.3731 1690,-568 1758.4598,-513.0049 1781.7579,-403.5203 1789.0114,-353.9434"/>
-<polygon fill="#191970" stroke="#191970" points="1792.515,-354.1528 1790.3944,-343.7723 1785.5789,-353.2096 1792.515,-354.1528"/>
+<path fill="none" stroke="#191970" d="M2644.0635,-667.3613C2691.7601,-662.2565 2762.8808,-647.3511 2745,-604 2704.856,-506.6732 2668.0284,-490.5796 2578,-436 2462.6565,-366.0732 2303.8033,-341.5275 2214.3717,-332.9865"/>
+<polygon fill="#191970" stroke="#191970" points="2214.625,-329.4952 2204.3475,-332.0687 2213.9867,-336.466 2214.625,-329.4952"/>
 </g>
 <!-- Node4 -->
 <g id="node5" class="node">
 <title>Node4</title>
 <g id="a_node5"><a xlink:href="span_8h.html" target="_top" xlink:title="Span information for debugging purposes. ">
-<polygon fill="#ffffff" stroke="#000000" points="2246.5,-492.5 2246.5,-511.5 2327.5,-511.5 2327.5,-492.5 2246.5,-492.5"/>
-<text text-anchor="middle" x="2287" y="-499.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/span.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1693.5,-492.5 1693.5,-511.5 1774.5,-511.5 1774.5,-492.5 1693.5,-492.5"/>
+<text text-anchor="middle" x="1734" y="-499.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/span.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node3&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M2151.6184,-604.4509C2177.1768,-585.1094 2235.2707,-541.1465 2266.3984,-517.5904"/>
-<polygon fill="#191970" stroke="#191970" points="2268.5515,-520.3503 2274.4135,-511.5249 2264.3274,-514.7684 2268.5515,-520.3503"/>
+<path fill="none" stroke="#191970" d="M1905.9712,-604.4509C1873.0889,-584.8615 1797.8113,-540.0152 1758.6658,-516.6945"/>
+<polygon fill="#191970" stroke="#191970" points="1760.3706,-513.6361 1749.9882,-511.5249 1756.7879,-519.6498 1760.3706,-513.6361"/>
 </g>
 <!-- Node5 -->
 <g id="node6" class="node">
 <title>Node5</title>
 <g id="a_node6"><a xlink:href="node_8h.html" target="_top" xlink:title="Definitions and helper macros for IR/AST nodes. ">
-<polygon fill="#ffffff" stroke="#000000" points="2560.5,-436.5 2560.5,-455.5 2659.5,-455.5 2659.5,-436.5 2560.5,-436.5"/>
-<text text-anchor="middle" x="2610" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/node.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1535.5,-436.5 1535.5,-455.5 1634.5,-455.5 1634.5,-436.5 1535.5,-436.5"/>
+<text text-anchor="middle" x="1585" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/node.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node5 -->
 <g id="edge111" class="edge">
 <title>Node3&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M2175.8205,-604.4891C2237.5497,-588.1389 2365.4322,-552.5252 2470,-512 2510.1188,-496.452 2554.8214,-474.5334 2582.6787,-460.2962"/>
-<polygon fill="#191970" stroke="#191970" points="2584.5052,-463.2925 2591.7944,-455.6036 2581.3014,-457.0687 2584.5052,-463.2925"/>
+<path fill="none" stroke="#191970" d="M1914.0495,-604.3057C1894.4126,-581.0401 1840.985,-521.7699 1783,-492 1739.5871,-469.7116 1685.3029,-458.0802 1644.5586,-452.0961"/>
+<polygon fill="#191970" stroke="#191970" points="1644.8943,-448.6091 1634.5065,-450.6933 1643.9267,-455.5419 1644.8943,-448.6091"/>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node">
 <title>Node10</title>
 <g id="a_node10"><a xlink:href="object_8h.html" target="_top" xlink:title="A managed object in the TVM runtime. ">
-<polygon fill="#ffffff" stroke="#ff0000" points="1989.5,-67.5 1989.5,-86.5 2108.5,-86.5 2108.5,-67.5 1989.5,-67.5"/>
-<text text-anchor="middle" x="2049" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/object.h</text>
+<polygon fill="#ffffff" stroke="#ff0000" points="2154.5,-67.5 2154.5,-86.5 2273.5,-86.5 2273.5,-67.5 2154.5,-67.5"/>
+<text text-anchor="middle" x="2214" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/object.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node10 -->
 <g id="edge113" class="edge">
 <title>Node3&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M2145.227,-604.2504C2156.6966,-585.3274 2180,-541.9633 2180,-502 2180,-502 2180,-502 2180,-390 2180,-269.0552 2095.7399,-140.7825 2062.3732,-94.7284"/>
-<polygon fill="#191970" stroke="#191970" points="2065.1659,-92.6182 2056.4185,-86.6404 2059.5288,-96.7684 2065.1659,-92.6182"/>
+<path fill="none" stroke="#191970" d="M1926.3448,-604.2473C1947.7287,-556.5265 2044.7251,-343.2913 2143,-179 2161.3454,-148.3311 2185.6732,-114.6494 2200.5626,-94.6919"/>
+<polygon fill="#191970" stroke="#191970" points="2203.4733,-96.6447 2206.6841,-86.5481 2197.8777,-92.4387 2203.4733,-96.6447"/>
 </g>
 <!-- Node3&#45;&gt;Node16 -->
 <g id="edge116" class="edge">
 <title>Node3&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M2178.6039,-611.9679C2332.5252,-604.0317 2884.2804,-575.2106 2921,-568 2996.5777,-553.1588 3014.1137,-542.1227 3085,-512 3135.1259,-490.6993 3148.831,-486.4316 3194,-456 3260.1671,-411.4213 3440,-274.2831 3440,-194.5 3440,-194.5 3440,-194.5 3440,-133 3440,-98.6399 3440,-58.628 3440,-35.2764"/>
-<polygon fill="#191970" stroke="#191970" points="3443.5001,-35.2489 3440,-25.2489 3436.5001,-35.249 3443.5001,-35.2489"/>
+<path fill="none" stroke="#191970" d="M1882.2915,-612.7094C1746.3679,-608.119 1300.368,-591.5871 1159,-568 975.2129,-537.3354 918.1116,-546.0701 755,-456 630.3725,-387.1808 570,-336.8661 570,-194.5 570,-194.5 570,-194.5 570,-133 570,-98.6399 570,-58.628 570,-35.2764"/>
+<polygon fill="#191970" stroke="#191970" points="573.5001,-35.2489 570,-25.2489 566.5001,-35.249 573.5001,-35.2489"/>
 </g>
 <!-- Node3&#45;&gt;Node17 -->
 <g id="edge117" class="edge">
 <title>Node3&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M2178.521,-611.1964C2325.9223,-600.0397 2841.6231,-554.534 2968,-456 3042.5633,-397.8642 3049.4986,-327.7517 3002,-246 2921.2995,-107.1034 2841.4988,-114.3598 2688,-67 2576.6702,-32.6508 2220.0463,-20.0397 2093.8079,-16.5848"/>
-<polygon fill="#191970" stroke="#191970" points="2093.8082,-13.0837 2083.7181,-16.3149 2093.6209,-20.0812 2093.8082,-13.0837"/>
+<path fill="none" stroke="#191970" d="M1961.5241,-611.5324C2053.8595,-605.4891 2281.4662,-588.903 2355,-568 2514.7442,-522.5905 2928.1902,-353.9541 3011,-210 3036.1557,-166.2701 3009.54,-98.2787 2971,-67 2945.5389,-46.336 2732.7804,-26.7454 2638.5813,-18.9941"/>
+<polygon fill="#191970" stroke="#191970" points="2638.7547,-15.4967 2628.5035,-18.1728 2638.1861,-22.4736 2638.7547,-15.4967"/>
 </g>
 <!-- Node22 -->
 <g id="node18" class="node">
 <title>Node22</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="780,-123.5 780,-142.5 844,-142.5 844,-123.5 780,-123.5"/>
-<text text-anchor="middle" x="812" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">algorithm</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="2770,-123.5 2770,-142.5 2834,-142.5 2834,-123.5 2770,-123.5"/>
+<text text-anchor="middle" x="2802" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">algorithm</text>
 </g>
 <!-- Node3&#45;&gt;Node22 -->
 <g id="edge114" class="edge">
 <title>Node3&#45;&gt;Node22</title>
-<path fill="none" stroke="#191970" d="M2099.1979,-613.0553C1970.0636,-609.7302 1563.7385,-597.1585 1436,-568 1140.7046,-500.5937 1087.1588,-420.5365 804,-313 759.4494,-296.0808 730.4639,-315.9454 703,-277 695.0598,-265.7403 696.0846,-257.9165 703,-246 719.1867,-218.1075 742.9768,-232.5817 766,-210 783.1237,-193.2046 796.2944,-168.7444 804.0698,-151.9233"/>
-<polygon fill="#191970" stroke="#191970" points="807.3607,-153.1353 808.201,-142.5738 800.9579,-150.3061 807.3607,-153.1353"/>
+<path fill="none" stroke="#191970" d="M1961.7434,-612.1149C2044.3347,-607.6998 2231.6051,-594.9592 2289,-568 2333.6817,-547.0124 2332.9999,-524.6792 2370,-492 2524.972,-355.1258 2719.5767,-198.7162 2781.8581,-149.0222"/>
+<polygon fill="#191970" stroke="#191970" points="2784.1119,-151.7016 2789.7502,-142.7316 2779.7488,-146.2277 2784.1119,-151.7016"/>
 </g>
-<!-- Node35 -->
-<g id="node27" class="node">
-<title>Node35</title>
-<g id="a_node27"><a xlink:href="string_8h.html" target="_top" xlink:title="Runtime String container types. ">
-<polygon fill="#ffffff" stroke="#ff0000" points="1039,-179.5 1039,-209.5 1165,-209.5 1165,-179.5 1039,-179.5"/>
-<text text-anchor="start" x="1047" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/container</text>
-<text text-anchor="middle" x="1102" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/string.h</text>
+<!-- Node34 -->
+<g id="node25" class="node">
+<title>Node34</title>
+<g id="a_node25"><a xlink:href="string_8h.html" target="_top" xlink:title="Runtime String container types. ">
+<polygon fill="#ffffff" stroke="#ff0000" points="2876,-179.5 2876,-209.5 3002,-209.5 3002,-179.5 2876,-179.5"/>
+<text text-anchor="start" x="2884" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/container</text>
+<text text-anchor="middle" x="2939" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/string.h</text>
 </a>
 </g>
 </g>
-<!-- Node3&#45;&gt;Node35 -->
+<!-- Node3&#45;&gt;Node34 -->
 <g id="edge112" class="edge">
-<title>Node3&#45;&gt;Node35</title>
-<path fill="none" stroke="#191970" d="M2099.3069,-613.565C1962.1108,-611.7553 1513.4056,-603.1771 1460,-568 1392.8541,-523.7725 1357.5691,-296.495 1295,-246 1276.3946,-230.9849 1221.8428,-217.2043 1175.4637,-207.6842"/>
-<polygon fill="#191970" stroke="#191970" points="1175.898,-204.2015 1165.4039,-205.6586 1174.5162,-211.0638 1175.898,-204.2015"/>
+<title>Node3&#45;&gt;Node34</title>
+<path fill="none" stroke="#191970" d="M1961.8055,-611.3552C2049.2101,-605.2352 2255.4189,-589.0015 2322,-568 2338.1802,-562.8963 2845.4802,-287.25 2859,-277 2882.0901,-259.4944 2904.7295,-235.2984 2919.9979,-217.6376"/>
+<polygon fill="#191970" stroke="#191970" points="2923.0619,-219.4371 2926.8709,-209.5506 2917.728,-214.9039 2923.0619,-219.4371"/>
 </g>
-<!-- Node42 -->
+<!-- Node43 -->
 <g id="node30" class="node">
-<title>Node42</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="3254,-252 3254,-271 3298,-271 3298,-252 3254,-252"/>
-<text text-anchor="middle" x="3276" y="-259" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">limits</text>
+<title>Node43</title>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="788,-252 788,-271 832,-271 832,-252 788,-252"/>
+<text text-anchor="middle" x="810" y="-259" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">limits</text>
 </g>
-<!-- Node3&#45;&gt;Node42 -->
+<!-- Node3&#45;&gt;Node43 -->
 <g id="edge115" class="edge">
-<title>Node3&#45;&gt;Node42</title>
-<path fill="none" stroke="#191970" d="M2178.9468,-611.9732C2320.4443,-604.7222 2792.9193,-579.872 2860,-568 2946.6887,-552.6577 2969.2475,-547.0623 3050,-512 3094.9571,-492.4799 3210.4861,-439.1293 3240,-400 3266.9431,-364.2791 3273.7941,-310.2732 3275.4881,-281.3873"/>
-<polygon fill="#191970" stroke="#191970" points="3278.9884,-281.4558 3275.9251,-271.3135 3271.9949,-281.1524 3278.9884,-281.4558"/>
+<title>Node3&#45;&gt;Node43</title>
+<path fill="none" stroke="#191970" d="M1882.2512,-613.6139C1715.2976,-611.1321 1073.1986,-592.7083 938,-456 891.3329,-408.8118 935.6423,-365.4666 895,-313 887.1764,-302.9002 859.9616,-287.2523 838.4077,-275.8546"/>
+<polygon fill="#191970" stroke="#191970" points="839.7778,-272.6219 829.292,-271.1056 836.5435,-278.83 839.7778,-272.6219"/>
 </g>
-<!-- Node46 -->
+<!-- Node47 -->
 <g id="node34" class="node">
-<title>Node46</title>
+<title>Node47</title>
 <g id="a_node34"><a xlink:href="ir_2type_8h.html" target="_top" xlink:title="IR/AST nodes for the unified type system in TVM. ">
-<polygon fill="#ffffff" stroke="#000000" points="1862,-548.5 1862,-567.5 1942,-567.5 1942,-548.5 1862,-548.5"/>
-<text text-anchor="middle" x="1902" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/type.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1694,-548.5 1694,-567.5 1774,-567.5 1774,-548.5 1694,-548.5"/>
+<text text-anchor="middle" x="1734" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/type.h</text>
 </a>
 </g>
 </g>
-<!-- Node3&#45;&gt;Node46 -->
+<!-- Node3&#45;&gt;Node47 -->
 <g id="edge104" class="edge">
-<title>Node3&#45;&gt;Node46</title>
-<path fill="none" stroke="#191970" d="M2099.3315,-604.6269C2058.8665,-595.0655 1995.9566,-580.2007 1952.0813,-569.8336"/>
-<polygon fill="#191970" stroke="#191970" points="1952.7313,-566.3908 1942.1944,-567.4974 1951.1215,-573.2032 1952.7313,-566.3908"/>
+<title>Node3&#45;&gt;Node47</title>
+<path fill="none" stroke="#191970" d="M1889.6816,-604.3733C1858.1494,-594.9807 1810.0379,-580.6496 1775.6499,-570.4064"/>
+<polygon fill="#191970" stroke="#191970" points="1776.4797,-567.0016 1765.8966,-567.5011 1774.4813,-573.7103 1776.4797,-567.0016"/>
 </g>
 <!-- Node4&#45;&gt;Node5 -->
 <g id="edge5" class="edge">
 <title>Node4&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M2327.5811,-494.9643C2383.7114,-485.2327 2485.4388,-467.5958 2550.2597,-456.3575"/>
-<polygon fill="#191970" stroke="#191970" points="2551.0784,-459.7678 2560.3335,-454.6109 2549.8826,-452.8707 2551.0784,-459.7678"/>
+<path fill="none" stroke="#191970" d="M1708.386,-492.3733C1683.9313,-483.1822 1646.8946,-469.2624 1619.7791,-459.0713"/>
+<polygon fill="#191970" stroke="#191970" points="1620.8719,-455.7431 1610.2798,-455.5011 1618.4091,-462.2956 1620.8719,-455.7431"/>
 </g>
 <!-- Node4&#45;&gt;Node10 -->
 <g id="edge102" class="edge">
 <title>Node4&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M2282.241,-492.3212C2273.5375,-474.3951 2254.7762,-434.6903 2242,-400 2196.3332,-276.0045 2226.0637,-217.7872 2134,-123 2120.4161,-109.0142 2101.6521,-98.2478 2085.2089,-90.6594"/>
-<polygon fill="#191970" stroke="#191970" points="2086.4162,-87.3672 2075.8522,-86.5585 2083.6061,-93.7785 2086.4162,-87.3672"/>
+<path fill="none" stroke="#191970" d="M1774.8352,-492.7897C1895.4709,-464.5821 2245.0685,-375.3067 2297,-277 2329.2657,-215.9207 2319.6273,-176.5575 2276,-123 2266.0842,-110.8272 2252.2614,-100.163 2240.1833,-92.1755"/>
+<polygon fill="#191970" stroke="#191970" points="2241.7032,-88.9956 2231.3808,-86.6086 2237.9617,-94.9118 2241.7032,-88.9956"/>
 </g>
 <!-- Node4&#45;&gt;Node16 -->
 <g id="edge103" class="edge">
 <title>Node4&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M2327.588,-496.8018C2339.9214,-495.2385 2353.5131,-493.5321 2366,-492 2633.3392,-459.1987 2723.2735,-518.8044 2965,-400 3121.8184,-322.9264 3033.6876,-171.1383 3174,-67 3210.7772,-39.7044 3345.5201,-24.1355 3407.9067,-18.247"/>
-<polygon fill="#191970" stroke="#191970" points="3408.337,-21.7223 3417.9747,-17.3219 3407.6964,-14.7517 3408.337,-21.7223"/>
+<path fill="none" stroke="#191970" d="M1693.0682,-501.4704C1549.3097,-499.3264 1072.9931,-489.7212 1014,-456 947.3263,-417.8884 966.6246,-371.6113 917,-313 874.1397,-262.3779 856.9279,-255.8533 809,-210 742.6778,-146.5487 733.4951,-121.9833 660,-67 640.7281,-52.5823 617.0388,-39.1775 598.8023,-29.6601"/>
+<polygon fill="#191970" stroke="#191970" points="600.3106,-26.5002 589.8151,-25.0526 597.1171,-32.7293 600.3106,-26.5002"/>
 </g>
 <!-- Node6 -->
 <g id="node7" class="node">
 <title>Node6</title>
 <g id="a_node7"><a xlink:href="reflection_8h.html" target="_top" xlink:title="Reflection and serialization of compiler IR/AST nodes. ">
-<polygon fill="#ffffff" stroke="#000000" points="2392.5,-380.5 2392.5,-399.5 2513.5,-399.5 2513.5,-380.5 2392.5,-380.5"/>
-<text text-anchor="middle" x="2453" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/reflection.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1471.5,-380.5 1471.5,-399.5 1592.5,-399.5 1592.5,-380.5 1471.5,-380.5"/>
+<text text-anchor="middle" x="1532" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/reflection.h</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node6 -->
 <g id="edge6" class="edge">
 <title>Node5&#45;&gt;Node6</title>
-<path fill="none" stroke="#191970" d="M2583.0107,-436.3733C2557.1301,-427.1419 2517.8752,-413.1402 2489.2711,-402.9375"/>
-<polygon fill="#191970" stroke="#191970" points="2490.2317,-399.5642 2479.6371,-399.5011 2487.88,-406.1573 2490.2317,-399.5642"/>
+<path fill="none" stroke="#191970" d="M1575.7681,-436.2455C1568.1683,-428.2155 1557.2123,-416.6394 1548.1632,-407.0781"/>
+<polygon fill="#191970" stroke="#191970" points="1550.542,-404.4998 1541.1261,-399.6427 1545.4579,-409.3115 1550.542,-404.4998"/>
 </g>
 <!-- Node5&#45;&gt;Node7 -->
 <g id="edge93" class="edge">
 <title>Node5&#45;&gt;Node7</title>
-<path fill="none" stroke="#191970" d="M2622.9398,-436.2136C2635.1358,-426.9581 2653.8925,-412.642 2670,-400 2691.0361,-383.4897 2714.6201,-364.522 2732.223,-350.2732"/>
-<polygon fill="#191970" stroke="#191970" points="2734.7818,-352.7046 2740.3466,-343.6889 2730.3741,-347.2665 2734.7818,-352.7046"/>
+<path fill="none" stroke="#191970" d="M1590.0737,-436.3845C1599.6135,-418.3051 1620.4893,-378.742 1634.1349,-352.8814"/>
+<polygon fill="#191970" stroke="#191970" points="1637.4007,-354.192 1638.972,-343.7143 1631.2097,-350.9252 1637.4007,-354.192"/>
 </g>
 <!-- Node5&#45;&gt;Node10 -->
 <g id="edge97" class="edge">
 <title>Node5&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M2560.4908,-440.4045C2502.7343,-433.1204 2411.5079,-419.0366 2383,-400 2254.2973,-314.0567 2304.24,-203.3939 2172,-123 2148.0291,-108.4271 2118.6853,-97.236 2094.6715,-89.5425"/>
-<polygon fill="#191970" stroke="#191970" points="2095.6655,-86.1863 2085.0773,-86.562 2093.5887,-92.8712 2095.6655,-86.1863"/>
+<path fill="none" stroke="#191970" d="M1630.4824,-436.4109C1740.1208,-411.9906 2010,-343.5462 2010,-261.5 2010,-261.5 2010,-261.5 2010,-194.5 2010,-160.9798 2009.4411,-145.8137 2034,-123 2050.2235,-107.9293 2100.8243,-95.7922 2144.2592,-87.7771"/>
+<polygon fill="#191970" stroke="#191970" points="2145.0361,-91.1936 2154.2592,-85.9797 2143.7977,-84.304 2145.0361,-91.1936"/>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node">
 <title>Node11</title>
 <g id="a_node11"><a xlink:href="c__runtime__api_8h.html" target="_top" xlink:title="tvm/runtime/c_runtime\l_api.h">
-<polygon fill="#ffffff" stroke="#ff0000" points="2606.5,-.5 2606.5,-30.5 2735.5,-30.5 2735.5,-.5 2606.5,-.5"/>
-<text text-anchor="start" x="2614.5" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/c_runtime</text>
-<text text-anchor="middle" x="2671" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_api.h</text>
+<polygon fill="#ffffff" stroke="#ff0000" points="1408.5,-.5 1408.5,-30.5 1537.5,-30.5 1537.5,-.5 1408.5,-.5"/>
+<text text-anchor="start" x="1416.5" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/c_runtime</text>
+<text text-anchor="middle" x="1473" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_api.h</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node11 -->
 <g id="edge95" class="edge">
 <title>Node5&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M2659.5241,-440.6447C2729.6142,-432.6227 2853.9086,-416.6417 2896,-400 2937.3829,-383.6385 2958.1111,-383.2925 2979,-344 3053.1099,-204.5976 2818.6331,-80.71 2716.3094,-34.6074"/>
-<polygon fill="#191970" stroke="#191970" points="2717.6851,-31.3887 2707.126,-30.519 2714.838,-37.7836 2717.6851,-31.3887"/>
+<path fill="none" stroke="#191970" d="M1535.1621,-441.8475C1430.9476,-432.948 1198.546,-411.8824 1186,-400 1096.6008,-315.3297 1110.3397,-216.0334 1191,-123 1243.5348,-62.4064 1334.0583,-35.8411 1398.3637,-24.2743"/>
+<polygon fill="#191970" stroke="#191970" points="1399.1853,-27.6846 1408.4494,-22.5438 1398.0015,-20.7854 1399.1853,-27.6846"/>
 </g>
 <!-- Node5&#45;&gt;Node16 -->
 <g id="edge98" class="edge">
 <title>Node5&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M2659.7736,-442.4834C2738.3406,-436.3459 2887.1019,-422.1775 2935,-400 3091.8718,-327.3662 2997.1556,-169.9887 3136,-67 3178.6465,-35.3667 3337.7609,-21.8337 3407.2189,-17.3446"/>
-<polygon fill="#191970" stroke="#191970" points="3407.802,-20.8152 3417.5651,-16.7004 3407.3669,-13.8287 3407.802,-20.8152"/>
+<path fill="none" stroke="#191970" d="M1535.2722,-444.7734C1438.4053,-441.7045 1228.2833,-431.5204 1164,-400 1115.7409,-376.3368 1117.5533,-351.4531 1080,-313 972.6253,-203.0525 972.5224,-139.4669 837,-67 796.5639,-45.3779 663.7497,-26.9157 602.0412,-19.2684"/>
+<polygon fill="#191970" stroke="#191970" points="602.4277,-15.7897 592.0771,-18.0513 601.5789,-22.7381 602.4277,-15.7897"/>
 </g>
 <!-- Node5&#45;&gt;Node17 -->
 <g id="edge99" class="edge">
 <title>Node5&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M2659.6168,-444.2575C2725.8014,-440.77 2837.6128,-430.4193 2863,-400 2885.2411,-373.3504 2855.6053,-347.8449 2825,-313 2792.3266,-275.8005 2779.6674,-269.3349 2736,-246 2693.2303,-223.1449 2675.7127,-232.9615 2633,-210 2540.534,-160.292 2542.1051,-106.8928 2445,-67 2382.1575,-41.183 2183.4335,-24.711 2093.7192,-18.4071"/>
-<polygon fill="#191970" stroke="#191970" points="2093.8085,-14.905 2083.5907,-17.7062 2093.3251,-21.8883 2093.8085,-14.905"/>
+<path fill="none" stroke="#191970" d="M1634.8128,-441.2902C1769.9637,-428.0586 2141.049,-388.5939 2255,-344 2398.3275,-287.9098 2442.7608,-264.6876 2537,-143 2563.2271,-109.1338 2580.4006,-61.2917 2588.5263,-34.89"/>
+<polygon fill="#191970" stroke="#191970" points="2591.8853,-35.8732 2591.3697,-25.2909 2585.1736,-33.885 2591.8853,-35.8732"/>
 </g>
 <!-- Node5&#45;&gt;Node18 -->
 <g id="edge100" class="edge">
 <title>Node5&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M2560.2337,-443.3065C2446.0764,-436.9966 2156.605,-420.249 1915,-400 1579.2983,-371.8648 650.263,-447.1506 411,-210 363.8565,-163.2727 393.1874,-73.7282 409.3856,-34.5945"/>
-<polygon fill="#191970" stroke="#191970" points="412.614,-35.9468 413.3496,-25.3776 406.1834,-33.1812 412.614,-35.9468"/>
+<path fill="none" stroke="#191970" d="M1634.6074,-442.5818C1739.4212,-435.298 1991.1151,-417.4812 2202,-400 2276.943,-393.7876 3489.4782,-321.6335 3550,-277 3581.9175,-253.4615 3584,-234.1584 3584,-194.5 3584,-194.5 3584,-194.5 3584,-133 3584,-84.5473 3533.4485,-48.5212 3499.6708,-29.8573"/>
+<polygon fill="#191970" stroke="#191970" points="3501.1172,-26.6624 3490.6445,-25.0577 3497.8307,-32.843 3501.1172,-26.6624"/>
 </g>
 <!-- Node5&#45;&gt;Node20 -->
 <g id="edge101" class="edge">
 <title>Node5&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M2560.2915,-442.5949C2397.8239,-431.103 1883.844,-391.7852 1725,-344 1661.9978,-325.047 1645.0202,-317.2789 1593,-277 1544.0077,-239.0656 1499.2045,-180.2991 1478.3371,-150.9531"/>
-<polygon fill="#191970" stroke="#191970" points="1481.0338,-148.7025 1472.428,-142.5226 1475.3017,-152.7203 1481.0338,-148.7025"/>
+<path fill="none" stroke="#191970" d="M1535.259,-439.5123C1495.9442,-431.6888 1449.5846,-414.9379 1462,-380 1500.6062,-271.3593 1537.0594,-252.3676 1626,-179 1641.7974,-165.9686 1661.8515,-154.9074 1678.513,-146.8996"/>
+<polygon fill="#191970" stroke="#191970" points="1680.2822,-149.9369 1687.8731,-142.5458 1677.3299,-143.5899 1680.2822,-149.9369"/>
 </g>
 <!-- Node5&#45;&gt;Node29 -->
 <g id="edge94" class="edge">
 <title>Node5&#45;&gt;Node29</title>
-<path fill="none" stroke="#191970" d="M2609.9476,-436.3402C2609.7975,-408.6387 2609.3619,-328.2663 2609.1374,-286.8429"/>
-<polygon fill="#191970" stroke="#191970" points="2612.6368,-286.7172 2609.0826,-276.7363 2605.6369,-286.7552 2612.6368,-286.7172"/>
+<path fill="none" stroke="#191970" d="M1535.3264,-443.6986C1436.1059,-438.591 1220.9844,-424.7598 1199,-400 1169.367,-366.6259 1203.4066,-314.3573 1228.0544,-284.4874"/>
+<polygon fill="#191970" stroke="#191970" points="1230.8758,-286.5728 1234.6966,-276.6908 1225.5473,-282.0332 1230.8758,-286.5728"/>
 </g>
 <!-- Node25 -->
 <g id="node23" class="node">
 <title>Node25</title>
 <g id="a_node23"><a xlink:href="runtime_2memory_8h.html" target="_top" xlink:title="Runtime memory management. ">
-<polygon fill="#ffffff" stroke="#ff0000" points="1872.5,-123.5 1872.5,-142.5 2001.5,-142.5 2001.5,-123.5 1872.5,-123.5"/>
-<text text-anchor="middle" x="1937" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/memory.h</text>
+<polygon fill="#ffffff" stroke="#ff0000" points="2584.5,-123.5 2584.5,-142.5 2713.5,-142.5 2713.5,-123.5 2584.5,-123.5"/>
+<text text-anchor="middle" x="2649" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/memory.h</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node25 -->
 <g id="edge96" class="edge">
 <title>Node5&#45;&gt;Node25</title>
-<path fill="none" stroke="#191970" d="M2560.2617,-440.9847C2488.7839,-433.3004 2360.8957,-417.6372 2318,-400 2162.5093,-336.0678 2150.6938,-272.5432 2011,-179 1994.9152,-168.2292 1976.4203,-156.7321 1961.9441,-147.9263"/>
-<polygon fill="#191970" stroke="#191970" points="1963.4451,-144.7438 1953.0772,-142.563 1959.8222,-150.7334 1963.4451,-144.7438"/>
+<path fill="none" stroke="#191970" d="M1634.5099,-443.1717C1788.6251,-433.8421 2257.8606,-401.3228 2398,-344 2493.6413,-304.8788 2512.9254,-281.0037 2588,-210 2607.0584,-191.975 2625.2359,-167.8132 2636.711,-151.3959"/>
+<polygon fill="#191970" stroke="#191970" points="2639.884,-152.9572 2642.6489,-142.7295 2634.1093,-149.0006 2639.884,-152.9572"/>
 </g>
-<!-- Node44 -->
+<!-- Node45 -->
 <g id="node32" class="node">
-<title>Node44</title>
+<title>Node45</title>
 <g id="a_node32"><a xlink:href="repr__printer_8h.html" target="_top" xlink:title="Printer class to print repr string of each AST/IR nodes. ">
-<polygon fill="#ffffff" stroke="#000000" points="2722.5,-380.5 2722.5,-399.5 2853.5,-399.5 2853.5,-380.5 2722.5,-380.5"/>
-<text text-anchor="middle" x="2788" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/repr_printer.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1208.5,-380.5 1208.5,-399.5 1339.5,-399.5 1339.5,-380.5 1208.5,-380.5"/>
+<text text-anchor="middle" x="1274" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/repr_printer.h</text>
 </a>
 </g>
 </g>
-<!-- Node5&#45;&gt;Node44 -->
+<!-- Node5&#45;&gt;Node45 -->
 <g id="edge90" class="edge">
-<title>Node5&#45;&gt;Node44</title>
-<path fill="none" stroke="#191970" d="M2640.5993,-436.3733C2670.3261,-427.021 2715.6159,-412.7725 2748.1456,-402.5385"/>
-<polygon fill="#191970" stroke="#191970" points="2749.3113,-405.8409 2757.8,-399.5011 2747.2105,-399.1636 2749.3113,-405.8409"/>
+<title>Node5&#45;&gt;Node45</title>
+<path fill="none" stroke="#191970" d="M1535.3772,-437.0647C1481.4746,-427.3588 1395.2477,-411.8324 1336.6986,-401.2898"/>
+<polygon fill="#191970" stroke="#191970" points="1337.2887,-397.8398 1326.8267,-399.5122 1336.0482,-404.729 1337.2887,-397.8398"/>
 </g>
 <!-- Node6&#45;&gt;Node7 -->
 <g id="edge7" class="edge">
 <title>Node6&#45;&gt;Node7</title>
-<path fill="none" stroke="#191970" d="M2500.4768,-380.4581C2551.8653,-370.13 2634.2196,-353.5784 2692.1413,-341.9373"/>
-<polygon fill="#191970" stroke="#191970" points="2693.1839,-345.2978 2702.2981,-339.896 2691.8045,-338.4351 2693.1839,-345.2978"/>
+<path fill="none" stroke="#191970" d="M1549.9688,-380.3906C1565.9649,-371.8361 1589.8723,-359.0509 1609.953,-348.3121"/>
+<polygon fill="#191970" stroke="#191970" points="1611.7002,-351.3469 1618.8678,-343.5446 1608.399,-345.1741 1611.7002,-351.3469"/>
 </g>
 <!-- Node6&#45;&gt;Node10 -->
-<g id="edge62" class="edge">
+<g id="edge58" class="edge">
 <title>Node6&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M2448.6982,-380.421C2437.781,-356.5807 2407.4128,-293.112 2373,-246 2348.8904,-212.9933 2342.207,-204.1679 2310,-179 2304.9828,-175.0794 2215.8785,-125.4466 2210,-123 2175.2482,-108.5363 2134.4616,-96.9356 2102.6359,-89.0021"/>
-<polygon fill="#191970" stroke="#191970" points="2103.182,-85.5326 2092.6367,-86.5561 2101.5187,-92.3321 2103.182,-85.5326"/>
+<path fill="none" stroke="#191970" d="M1531.398,-380.3126C1530.7509,-365.5133 1530.5621,-336.5158 1537,-313 1563.6906,-215.507 1573.7079,-172.2116 1662,-123 1703.1789,-100.048 2005.1514,-85.268 2144.2271,-79.6075"/>
+<polygon fill="#191970" stroke="#191970" points="2144.5045,-83.0992 2154.3556,-79.1997 2144.2228,-76.1049 2144.5045,-83.0992"/>
 </g>
 <!-- Node6&#45;&gt;Node11 -->
 <g id="edge34" class="edge">
 <title>Node6&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M2503.116,-380.447C2581.0054,-362.5638 2728.444,-315.83 2789,-210 2825.4703,-146.263 2746.7223,-72.5124 2700.8801,-36.9138"/>
-<polygon fill="#191970" stroke="#191970" points="2702.8168,-33.9895 2692.7385,-30.7217 2698.5793,-39.5612 2702.8168,-33.9895"/>
+<path fill="none" stroke="#191970" d="M1481.4082,-380.4684C1394.3103,-362.9963 1221.6441,-323.3462 1183,-277 1163.394,-253.4864 1170.5801,-240.405 1167,-210 1165.3888,-196.3168 1159.9159,-190.8171 1167,-179 1216.9419,-95.6915 1325.3858,-52.4617 1398.8115,-31.8746"/>
+<polygon fill="#191970" stroke="#191970" points="1399.7548,-35.2452 1408.4813,-29.237 1397.9127,-28.4919 1399.7548,-35.2452"/>
 </g>
 <!-- Node6&#45;&gt;Node16 -->
 <g id="edge87" class="edge">
 <title>Node6&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M2513.7578,-387.1445C2604.7129,-382.0914 2771.33,-369.5992 2825,-344 2902.4509,-307.0579 2903.7545,-271.1051 2964,-210 3025.1503,-147.9773 3020.8921,-107.5036 3098,-67 3151.5785,-38.8561 3332.8406,-23.1021 3407.4762,-17.6765"/>
-<polygon fill="#191970" stroke="#191970" points="3407.9599,-21.1511 3417.6865,-16.9507 3407.4635,-14.1687 3407.9599,-21.1511"/>
+<path fill="none" stroke="#191970" d="M1471.2204,-384.0031C1397.9959,-376.165 1279.7329,-361.3712 1239,-344 1052.0012,-264.2515 1061.5352,-147.8271 875,-67 826.2403,-45.8721 670.5815,-26.6317 602.4522,-18.9879"/>
+<polygon fill="#191970" stroke="#191970" points="602.624,-15.4856 592.2992,-17.8622 601.8526,-22.443 602.624,-15.4856"/>
 </g>
 <!-- Node6&#45;&gt;Node17 -->
 <g id="edge88" class="edge">
 <title>Node6&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M2454.252,-380.322C2456.3332,-365.5348 2461.078,-336.553 2469,-313 2485.1611,-264.9511 2506.8371,-259.4496 2518,-210 2526.859,-170.7561 2519.0426,-153.6652 2493,-123 2463.7156,-88.5175 2450.2993,-83.0433 2408,-67 2351.3308,-45.5065 2176.8693,-27.2152 2093.8269,-19.4651"/>
-<polygon fill="#191970" stroke="#191970" points="2093.9693,-15.9634 2083.6898,-18.5291 2093.3256,-22.9338 2093.9693,-15.9634"/>
+<path fill="none" stroke="#191970" d="M1592.5752,-387.598C1748.3755,-381.1807 2154.8761,-362.8395 2213,-344 2260.9476,-328.4589 2361.8296,-247.0524 2396,-210 2428.7219,-174.5183 2427.5267,-157.7738 2461,-123 2496.3006,-86.328 2543.9707,-50.5604 2571.6098,-30.9335"/>
+<polygon fill="#191970" stroke="#191970" points="2573.6714,-33.7625 2579.8386,-25.1476 2569.6451,-28.0363 2573.6714,-33.7625"/>
 </g>
 <!-- Node6&#45;&gt;Node20 -->
 <g id="edge89" class="edge">
 <title>Node6&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M2435.0782,-380.3682C2364.0076,-342.3425 2101.4796,-203.5346 2011,-179 1913.7468,-152.6286 1603.1515,-138.3665 1499.8061,-134.2612"/>
-<polygon fill="#191970" stroke="#191970" points="1499.7606,-130.7568 1489.6315,-133.8634 1499.4871,-137.7515 1499.7606,-130.7568"/>
+<path fill="none" stroke="#191970" d="M1533.0242,-380.4781C1534.9551,-365.3992 1540.0661,-335.4371 1552,-313 1589.0032,-243.4298 1658.0235,-178.4814 1691.6239,-149.2446"/>
+<polygon fill="#191970" stroke="#191970" points="1694.0555,-151.7699 1699.3622,-142.5999 1689.4953,-146.4592 1694.0555,-151.7699"/>
 </g>
 <!-- Node28 -->
 <g id="node20" class="node">
 <title>Node28</title>
 <g id="a_node20"><a xlink:href="data__type_8h.html" target="_top" xlink:title="tvm/runtime/data_type.h">
-<polygon fill="#ffffff" stroke="#000000" points="2642,-185 2642,-204 2780,-204 2780,-185 2642,-185"/>
-<text text-anchor="middle" x="2711" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/data_type.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1260,-185 1260,-204 1398,-204 1398,-185 1260,-185"/>
+<text text-anchor="middle" x="1329" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/data_type.h</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node28 -->
 <g id="edge35" class="edge">
 <title>Node6&#45;&gt;Node28</title>
-<path fill="none" stroke="#191970" d="M2456.3821,-380.2816C2465.8911,-354.3922 2495.3838,-283.2024 2544,-246 2569.8693,-226.2042 2603.413,-213.9545 2633.644,-206.4032"/>
-<polygon fill="#191970" stroke="#191970" points="2634.8242,-209.7209 2643.7534,-204.0183 2633.2169,-202.908 2634.8242,-209.7209"/>
+<path fill="none" stroke="#191970" d="M1501.8358,-380.4874C1481.1765,-372.9212 1454.0037,-360.8038 1434,-344 1388.835,-306.0598 1353.8773,-244.3444 1338.1326,-213.4211"/>
+<polygon fill="#191970" stroke="#191970" points="1341.13,-211.5881 1333.5426,-204.1933 1334.8625,-214.7056 1341.13,-211.5881"/>
 </g>
 <!-- Node6&#45;&gt;Node29 -->
 <g id="edge29" class="edge">
 <title>Node6&#45;&gt;Node29</title>
-<path fill="none" stroke="#191970" d="M2464.4348,-380.4936C2481.9624,-365.9307 2516.5386,-337.2378 2546,-313 2558.0268,-303.1056 2571.3784,-292.1825 2582.6834,-282.9515"/>
-<polygon fill="#191970" stroke="#191970" points="2584.9709,-285.6024 2590.5053,-276.5679 2580.5449,-280.1791 2584.9709,-285.6024"/>
+<path fill="none" stroke="#191970" d="M1498.0846,-380.4406C1470.1622,-372.1197 1429.8152,-359.0518 1396,-344 1355.0517,-325.7731 1310.4847,-299.8267 1281.2853,-281.9212"/>
+<polygon fill="#191970" stroke="#191970" points="1283.0846,-278.9188 1272.7378,-276.6399 1279.4052,-284.8738 1283.0846,-278.9188"/>
 </g>
 <!-- Node6&#45;&gt;Node25 -->
 <g id="edge36" class="edge">
 <title>Node6&#45;&gt;Node25</title>
-<path fill="none" stroke="#191970" d="M2436.7613,-380.3679C2423.8386,-372.05 2405.9931,-359.0227 2394,-344 2363.9811,-306.3978 2384.5239,-277.322 2348,-246 2296.3541,-201.7097 2106.8602,-162.7462 2004.1869,-144.3072"/>
-<polygon fill="#191970" stroke="#191970" points="2004.6858,-140.8411 1994.2271,-142.534 2003.4588,-147.7327 2004.6858,-140.8411"/>
+<path fill="none" stroke="#191970" d="M1592.6813,-388.901C1747.2897,-385.683 2153.0272,-374.5048 2284,-344 2431.5794,-309.6274 2579.168,-192.86 2630.2381,-149.4394"/>
+<polygon fill="#191970" stroke="#191970" points="2632.8114,-151.8428 2638.1137,-142.6702 2628.2486,-146.5342 2632.8114,-151.8428"/>
 </g>
 <!-- Node31 -->
 <g id="node24" class="node">
 <title>Node31</title>
 <g id="a_node24"><a xlink:href="ndarray_8h.html" target="_top" xlink:title="A device&#45;independent managed NDArray abstraction. ">
-<polygon fill="#ffffff" stroke="#ff0000" points="1820.5,-252 1820.5,-271 1945.5,-271 1945.5,-252 1820.5,-252"/>
-<text text-anchor="middle" x="1883" y="-259" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/ndarray.h</text>
+<polygon fill="#ffffff" stroke="#ff0000" points="1628.5,-252 1628.5,-271 1753.5,-271 1753.5,-252 1628.5,-252"/>
+<text text-anchor="middle" x="1691" y="-259" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/ndarray.h</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node31 -->
 <g id="edge40" class="edge">
 <title>Node6&#45;&gt;Node31</title>
-<path fill="none" stroke="#191970" d="M2410.623,-380.4466C2308.1682,-357.3493 2047.2518,-298.5287 1935.3079,-273.2922"/>
-<polygon fill="#191970" stroke="#191970" points="1935.7935,-269.8139 1925.2686,-271.029 1934.254,-276.6426 1935.7935,-269.8139"/>
+<path fill="none" stroke="#191970" d="M1535.9094,-380.4968C1542.8561,-364.6299 1558.7424,-332.5596 1581,-313 1600.7308,-295.6609 1627.3045,-283.0023 1649.3901,-274.5745"/>
+<polygon fill="#191970" stroke="#191970" points="1650.6742,-277.8317 1658.8634,-271.1096 1648.2696,-271.2577 1650.6742,-277.8317"/>
 </g>
 <!-- Node6&#45;&gt;Node40 -->
-<g id="edge63" class="edge">
+<g id="edge59" class="edge">
 <title>Node6&#45;&gt;Node40</title>
-<path fill="none" stroke="#191970" d="M2392.2942,-384.3519C2268.9313,-372.8741 1989.6995,-346.8941 1860.2537,-334.8504"/>
-<polygon fill="#191970" stroke="#191970" points="1860.3539,-331.3447 1850.0727,-333.9031 1859.7054,-338.3146 1860.3539,-331.3447"/>
+<path fill="none" stroke="#191970" d="M1592.5531,-383.9348C1707.4979,-372.4216 1956.5988,-347.471 2077.4642,-335.3647"/>
+<polygon fill="#191970" stroke="#191970" points="2078.0977,-338.8189 2087.6991,-334.3396 2077.4,-331.8537 2078.0977,-338.8189"/>
 </g>
 <!-- Node8 -->
 <g id="node9" class="node">
 <title>Node8</title>
 <g id="a_node9"><a xlink:href="functor_8h.html" target="_top" xlink:title="Defines the Functor data structures. ">
-<polygon fill="#ffffff" stroke="#ff0000" points="2400.5,-185 2400.5,-204 2509.5,-204 2509.5,-185 2400.5,-185"/>
-<text text-anchor="middle" x="2455" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/functor.h</text>
+<polygon fill="#ffffff" stroke="#ff0000" points="1758.5,-185 1758.5,-204 1867.5,-204 1867.5,-185 1758.5,-185"/>
+<text text-anchor="middle" x="1813" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/functor.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node8 -->
 <g id="edge8" class="edge">
 <title>Node7&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M2753.9284,-313.3616C2746.7847,-294.4813 2731.8944,-262.6634 2708,-246 2678.1607,-225.1907 2584.4501,-210.0657 2519.8591,-201.7825"/>
-<polygon fill="#191970" stroke="#191970" points="2520.1156,-198.2873 2509.757,-200.512 2519.242,-205.2325 2520.1156,-198.2873"/>
+<path fill="none" stroke="#191970" d="M1703.6608,-315.1229C1740.291,-305.3481 1783.4033,-291.3445 1796,-277 1811.103,-259.8015 1814.0929,-232.7947 1814.1359,-214.4018"/>
+<polygon fill="#191970" stroke="#191970" points="1817.63,-214.1302 1813.8638,-204.2274 1810.6325,-214.3174 1817.63,-214.1302"/>
 </g>
 <!-- Node7&#45;&gt;Node16 -->
 <g id="edge28" class="edge">
 <title>Node7&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M2786.0655,-313.4578C2822.215,-292.7034 2887.3449,-252.9499 2936,-210 2999.0659,-154.3292 2985.998,-107.0031 3060,-67 3119.9731,-34.5805 3327.1982,-21.0719 3407.6821,-16.9655"/>
-<polygon fill="#191970" stroke="#191970" points="3407.9167,-20.4582 3417.7316,-16.4684 3407.5708,-13.4668 3407.9167,-20.4582"/>
+<path fill="none" stroke="#191970" d="M1590.18,-326.8483C1482.6248,-322.9665 1253.719,-310.8808 1183,-277 1063.6791,-219.8344 1090.8343,-125.1704 972,-67 906.8407,-35.104 685.8168,-21.1774 602.3087,-16.9669"/>
+<polygon fill="#191970" stroke="#191970" points="602.3043,-13.4625 592.1449,-16.4685 601.9614,-20.4541 602.3043,-13.4625"/>
 </g>
 <!-- Node21 -->
 <g id="node17" class="node">
 <title>Node21</title>
 <g id="a_node17"><a xlink:href="array_8h.html" target="_top" xlink:title="Runtime Array container types. ">
-<polygon fill="#ffffff" stroke="#ff0000" points="1160,-246.5 1160,-276.5 1286,-276.5 1286,-246.5 1160,-246.5"/>
-<text text-anchor="start" x="1168" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/container</text>
-<text text-anchor="middle" x="1223" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/array.h</text>
+<polygon fill="#ffffff" stroke="#ff0000" points="2724,-246.5 2724,-276.5 2850,-276.5 2850,-246.5 2724,-246.5"/>
+<text text-anchor="start" x="2732" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/container</text>
+<text text-anchor="middle" x="2787" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/array.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node21 -->
 <g id="edge18" class="edge">
 <title>Node7&#45;&gt;Node21</title>
-<path fill="none" stroke="#191970" d="M2702.0517,-326.0159C2465.6406,-315.7037 1561.5852,-276.269 1296.4775,-264.7051"/>
-<polygon fill="#191970" stroke="#191970" points="1296.3405,-261.1959 1286.1975,-264.2567 1296.0354,-268.1892 1296.3405,-261.1959"/>
+<path fill="none" stroke="#191970" d="M1703.5328,-325.1775C1892.5027,-314.0713 2502.196,-278.2385 2713.8274,-265.8005"/>
+<polygon fill="#191970" stroke="#191970" points="2714.1239,-269.2892 2723.9013,-265.2084 2713.7131,-262.3013 2714.1239,-269.2892"/>
 </g>
 <!-- Node7&#45;&gt;Node28 -->
 <g id="edge23" class="edge">
 <title>Node7&#45;&gt;Node28</title>
-<path fill="none" stroke="#191970" d="M2758.5916,-313.3787C2757.6901,-296.4267 2754.8518,-268.3826 2746,-246 2741.1299,-233.6854 2732.9064,-221.3639 2725.654,-211.8619"/>
-<polygon fill="#191970" stroke="#191970" points="2728.3625,-209.6447 2719.3907,-204.0093 2722.89,-214.0096 2728.3625,-209.6447"/>
+<path fill="none" stroke="#191970" d="M1611.1395,-313.389C1548.6699,-287.0653 1420.8572,-233.2071 1361.1138,-208.0322"/>
+<polygon fill="#191970" stroke="#191970" points="1362.3664,-204.762 1351.792,-204.1042 1359.6481,-211.2127 1362.3664,-204.762"/>
 </g>
 <!-- Node8&#45;&gt;Node10 -->
 <g id="edge9" class="edge">
 <title>Node8&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M2430.0997,-184.9428C2391.4938,-170.3435 2314.6883,-142.1674 2248,-123 2200.8739,-109.4552 2146.5961,-97.1215 2106.643,-88.6426"/>
-<polygon fill="#191970" stroke="#191970" points="2107.3137,-85.2072 2096.8071,-86.5716 2105.8714,-92.057 2107.3137,-85.2072"/>
+<path fill="none" stroke="#191970" d="M1834.0134,-184.976C1867.6347,-170.0394 1935.8627,-140.9599 1996,-123 2045.514,-108.2128 2102.7177,-96.3319 2146.1013,-88.351"/>
+<polygon fill="#191970" stroke="#191970" points="2146.7639,-91.788 2155.9776,-86.5574 2145.5131,-84.9006 2146.7639,-91.788"/>
 </g>
 <!-- Node8&#45;&gt;Node17 -->
 <g id="edge15" class="edge">
 <title>Node8&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M2462.7844,-184.7578C2473.5381,-170.0401 2490.1011,-141.857 2476,-123 2430.0708,-61.5804 2193.8242,-30.401 2093.8116,-19.7894"/>
-<polygon fill="#191970" stroke="#191970" points="2094.0283,-16.2932 2083.7198,-18.7397 2093.304,-23.2556 2094.0283,-16.2932"/>
+<path fill="none" stroke="#191970" d="M1826.6278,-184.8367C1848.5197,-169.7092 1893.3023,-140.3728 1935,-123 2024.5619,-85.6852 2050.666,-85.032 2146,-67 2292.1369,-39.3588 2468.0865,-24.3815 2549.1289,-18.4943"/>
+<polygon fill="#191970" stroke="#191970" points="2549.7345,-21.9601 2559.4596,-17.756 2549.2355,-14.9779 2549.7345,-21.9601"/>
 </g>
 <!-- Node8&#45;&gt;Node18 -->
 <g id="edge16" class="edge">
 <title>Node8&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M2437.0165,-184.8532C2387.6739,-159.0284 2245.2971,-88.8067 2117,-67 1947.0447,-38.1127 671.7864,-19.0526 450.6372,-15.9477"/>
-<polygon fill="#191970" stroke="#191970" points="450.6774,-12.448 440.6295,-15.808 450.5796,-19.4473 450.6774,-12.448"/>
+<path fill="none" stroke="#191970" d="M1867.6008,-188.0353C2030.6922,-168.7898 2528.5722,-110.5045 2942,-67 3129.3455,-47.2859 3354.3715,-26.1988 3437.2767,-18.5171"/>
+<polygon fill="#191970" stroke="#191970" points="3437.7094,-21.9921 3447.3443,-17.5854 3437.0643,-15.0219 3437.7094,-21.9921"/>
 </g>
 <!-- Node8&#45;&gt;Node20 -->
 <g id="edge17" class="edge">
 <title>Node8&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M2400.4183,-191.1059C2219.8756,-179.879 1645.2204,-144.1446 1499.7286,-135.0974"/>
-<polygon fill="#191970" stroke="#191970" points="1499.8229,-131.5966 1489.6249,-134.4691 1499.3884,-138.5831 1499.8229,-131.5966"/>
+<path fill="none" stroke="#191970" d="M1797.0625,-184.8906C1780.5949,-174.9616 1754.6742,-159.333 1735.5796,-147.8201"/>
+<polygon fill="#191970" stroke="#191970" points="1737.1966,-144.7081 1726.8256,-142.5419 1733.5822,-150.7027 1737.1966,-144.7081"/>
 </g>
 <!-- Node10&#45;&gt;Node11 -->
 <g id="edge10" class="edge">
 <title>Node10&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M2108.64,-71.1031C2222.6521,-59.8302 2471.28,-35.2472 2596.2066,-22.8952"/>
-<polygon fill="#191970" stroke="#191970" points="2596.8365,-26.35 2606.4436,-21.883 2596.1477,-19.384 2596.8365,-26.35"/>
+<path fill="none" stroke="#191970" d="M2154.3013,-72.0453C2020.1828,-60.914 1695.2454,-33.9455 1547.8844,-21.7151"/>
+<polygon fill="#191970" stroke="#191970" points="1547.8416,-18.1996 1537.5864,-20.8604 1547.2626,-25.1756 1547.8416,-18.1996"/>
 </g>
 <!-- Node15 -->
 <g id="node12" class="node">
 <title>Node15</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="1473.5,-6 1473.5,-25 1598.5,-25 1598.5,-6 1473.5,-6"/>
-<text text-anchor="middle" x="1536" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/logging.h</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="2151.5,-6 2151.5,-25 2276.5,-25 2276.5,-6 2151.5,-6"/>
+<text text-anchor="middle" x="2214" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/logging.h</text>
 </g>
 <!-- Node10&#45;&gt;Node15 -->
 <g id="edge11" class="edge">
 <title>Node10&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M1989.4,-69.855C1894.9542,-58.5325 1711.1624,-36.499 1608.9715,-24.248"/>
-<polygon fill="#191970" stroke="#191970" points="1609.084,-20.7365 1598.7384,-23.0213 1608.2507,-27.6868 1609.084,-20.7365"/>
+<path fill="none" stroke="#191970" d="M2214,-67.3906C2214,-58.8657 2214,-46.1392 2214,-35.4235"/>
+<polygon fill="#191970" stroke="#191970" points="2217.5001,-35.2448 2214,-25.2449 2210.5001,-35.2449 2217.5001,-35.2448"/>
 </g>
 <!-- Node10&#45;&gt;Node16 -->
 <g id="edge12" class="edge">
 <title>Node10&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M2108.7695,-74.3574C2347.263,-63.813 3226.6578,-24.9325 3407.3967,-16.9415"/>
-<polygon fill="#191970" stroke="#191970" points="3407.7517,-20.4293 3417.5873,-16.4909 3407.4424,-13.4361 3407.7517,-20.4293"/>
+<path fill="none" stroke="#191970" d="M2154.0296,-74.7566C1886.2426,-64.739 804.1586,-24.2596 602.4577,-16.7142"/>
+<polygon fill="#191970" stroke="#191970" points="602.3531,-13.2079 592.2292,-16.3316 602.0913,-20.203 602.3531,-13.2079"/>
 </g>
 <!-- Node10&#45;&gt;Node17 -->
 <g id="edge13" class="edge">
 <title>Node10&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M2049,-67.3906C2049,-58.8657 2049,-46.1392 2049,-35.4235"/>
-<polygon fill="#191970" stroke="#191970" points="2052.5001,-35.2448 2049,-25.2449 2045.5001,-35.2449 2052.5001,-35.2448"/>
+<path fill="none" stroke="#191970" d="M2272.9581,-67.4581C2349.2988,-55.103 2480.6695,-33.8416 2549.2981,-22.7346"/>
+<polygon fill="#191970" stroke="#191970" points="2550.0429,-26.1597 2559.3552,-21.107 2548.9245,-19.2497 2550.0429,-26.1597"/>
 </g>
 <!-- Node10&#45;&gt;Node18 -->
 <g id="edge14" class="edge">
 <title>Node10&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M1989.1741,-74.1675C1944.4956,-72.0857 1881.9319,-69.2411 1827,-67 1277.0579,-44.5639 606.1793,-21.8098 451.0737,-16.6052"/>
-<polygon fill="#191970" stroke="#191970" points="450.9179,-13.0981 440.8062,-16.261 450.6833,-20.0941 450.9179,-13.0981"/>
+<path fill="none" stroke="#191970" d="M2273.7345,-74.0751C2495.6689,-63.2081 3268.6639,-25.3584 3437.3332,-17.0995"/>
+<polygon fill="#191970" stroke="#191970" points="3437.5231,-20.5945 3447.34,-16.6095 3437.1807,-13.6029 3437.5231,-20.5945"/>
 </g>
 <!-- Node21&#45;&gt;Node18 -->
 <g id="edge21" class="edge">
 <title>Node21&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M1159.7502,-259.0394C984.979,-251.9865 506.5675,-230.8633 480,-210 425.3382,-167.0745 418.0398,-75.7806 417.6169,-35.4102"/>
-<polygon fill="#191970" stroke="#191970" points="421.1173,-35.2587 417.65,-25.2474 414.1174,-35.2359 421.1173,-35.2587"/>
+<path fill="none" stroke="#191970" d="M2850.0011,-256.4596C2903.4657,-250.4308 2981.2604,-237.4582 3044,-210 3104.3487,-183.5882 3105.6474,-153.5701 3164,-123 3258.1452,-73.6786 3379.8122,-38.6476 3437.2365,-23.6466"/>
+<polygon fill="#191970" stroke="#191970" points="3438.381,-26.966 3447.1902,-21.0797 3436.633,-20.1878 3438.381,-26.966"/>
 </g>
 <!-- Node21&#45;&gt;Node20 -->
 <g id="edge22" class="edge">
 <title>Node21&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M1253.4048,-246.4097C1272.9525,-236.4913 1298.7608,-222.9898 1321,-210 1342.9289,-197.1914 1346.8129,-191.3561 1369,-179 1390.3125,-167.131 1415.188,-155.3741 1434.4119,-146.7173"/>
-<polygon fill="#191970" stroke="#191970" points="1435.9186,-149.8777 1443.6272,-142.6095 1433.0685,-143.4842 1435.9186,-149.8777"/>
+<path fill="none" stroke="#191970" d="M2723.7464,-259.112C2603.6679,-254.0425 2334.6035,-240.1141 2110,-210 2105.4139,-209.3851 1840.157,-158.0224 1744.7347,-139.5365"/>
+<polygon fill="#191970" stroke="#191970" points="1745.2252,-136.0665 1734.742,-137.6006 1743.8938,-142.9387 1745.2252,-136.0665"/>
 </g>
 <!-- Node21&#45;&gt;Node22 -->
 <g id="edge19" class="edge">
 <title>Node21&#45;&gt;Node22</title>
-<path fill="none" stroke="#191970" d="M1161.8018,-246.4829C1123.6763,-236.8037 1073.7302,-223.5344 1030,-210 964.3673,-189.6868 889.0436,-162.1141 846.3295,-146.0707"/>
-<polygon fill="#191970" stroke="#191970" points="847.5533,-142.7917 836.9615,-142.5404 845.0848,-149.342 847.5533,-142.7917"/>
+<path fill="none" stroke="#191970" d="M2788.7796,-246.2548C2791.4971,-222.9744 2796.6816,-178.5607 2799.6873,-152.8117"/>
+<polygon fill="#191970" stroke="#191970" points="2803.1804,-153.0742 2800.8635,-142.7358 2796.2276,-152.2625 2803.1804,-153.0742"/>
 </g>
 <!-- Node23 -->
 <g id="node19" class="node">
 <title>Node23</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="1366,-123.5 1366,-142.5 1424,-142.5 1424,-123.5 1366,-123.5"/>
-<text text-anchor="middle" x="1395" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">memory</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="2470,-123.5 2470,-142.5 2528,-142.5 2528,-123.5 2470,-123.5"/>
+<text text-anchor="middle" x="2499" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">memory</text>
 </g>
 <!-- Node21&#45;&gt;Node23 -->
 <g id="edge20" class="edge">
 <title>Node21&#45;&gt;Node23</title>
-<path fill="none" stroke="#191970" d="M1224.9379,-246.2343C1228.0669,-227.8171 1235.9426,-197.0813 1255,-179 1262.5602,-171.827 1317.2119,-155.1499 1355.9466,-143.973"/>
-<polygon fill="#191970" stroke="#191970" points="1357.2558,-147.2388 1365.9045,-141.1191 1355.3272,-140.5097 1357.2558,-147.2388"/>
+<path fill="none" stroke="#191970" d="M2759.7785,-246.4959C2727.7866,-229.1516 2672.8558,-200.268 2624,-179 2595.5491,-166.6147 2562.5802,-154.5747 2537.6466,-145.9209"/>
+<polygon fill="#191970" stroke="#191970" points="2538.7662,-142.6048 2528.1715,-142.6609 2536.4887,-149.224 2538.7662,-142.6048"/>
 </g>
 <!-- Node28&#45;&gt;Node11 -->
 <g id="edge24" class="edge">
 <title>Node28&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M2712.0976,-184.9229C2714.2334,-163.2789 2717.625,-109.1921 2704,-67 2700.803,-57.1 2695.2201,-47.235 2689.5455,-38.8281"/>
-<polygon fill="#191970" stroke="#191970" points="2692.3615,-36.749 2683.695,-30.6547 2686.6695,-40.8234 2692.3615,-36.749"/>
+<path fill="none" stroke="#191970" d="M1336.7421,-184.8762C1358.8304,-157.4191 1422.6049,-78.1439 1454.45,-38.5586"/>
+<polygon fill="#191970" stroke="#191970" points="1457.1932,-40.7325 1460.7343,-30.7469 1451.739,-36.3448 1457.1932,-40.7325"/>
 </g>
 <!-- Node28&#45;&gt;Node15 -->
 <g id="edge25" class="edge">
 <title>Node28&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M2679.8554,-184.9295C2634.8829,-171.1313 2549.1259,-144.9005 2476,-123 2391.6651,-97.7425 2372.6513,-82.5523 2286,-67 2157.3908,-43.9171 1771.1519,-25.4374 1608.9666,-18.4812"/>
-<polygon fill="#191970" stroke="#191970" points="1608.7529,-14.969 1598.6129,-18.0397 1608.4547,-21.9626 1608.7529,-14.969"/>
+<path fill="none" stroke="#191970" d="M1354.377,-184.8902C1391.7745,-170.8197 1463.9676,-144.004 1526,-123 1604.553,-96.4021 1622.7644,-83.6975 1704,-67 1857.6471,-35.4187 2041.4882,-22.912 2141.1058,-18.1849"/>
+<polygon fill="#191970" stroke="#191970" points="2141.5325,-21.669 2151.3605,-17.7117 2141.2098,-14.6764 2141.5325,-21.669"/>
 </g>
 <!-- Node28&#45;&gt;Node16 -->
 <g id="edge26" class="edge">
 <title>Node28&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M2719.0243,-184.9253C2740.3985,-160.197 2801.6899,-94.2333 2869,-67 2968.0173,-26.9382 3302.3622,-17.852 3407.8404,-15.9615"/>
-<polygon fill="#191970" stroke="#191970" points="3407.94,-19.4604 3417.8792,-15.7912 3407.8212,-12.4614 3407.94,-19.4604"/>
+<path fill="none" stroke="#191970" d="M1314.1058,-184.9043C1275.266,-160.4173 1166.9612,-95.5364 1067,-67 978.9504,-41.8641 698.1289,-23.1619 602.3591,-17.3763"/>
+<polygon fill="#191970" stroke="#191970" points="602.3234,-13.868 592.1325,-16.7653 601.9059,-20.8556 602.3234,-13.868"/>
 </g>
 <!-- Node28&#45;&gt;Node17 -->
 <g id="edge27" class="edge">
 <title>Node28&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M2710.8891,-184.8365C2710.0336,-160.4753 2704.0921,-96.4044 2666,-67 2620.9531,-32.2269 2228.2364,-19.7429 2093.8645,-16.4669"/>
-<polygon fill="#191970" stroke="#191970" points="2093.6086,-12.9599 2083.528,-16.2207 2093.4418,-19.9579 2093.6086,-12.9599"/>
+<path fill="none" stroke="#191970" d="M1367.4002,-184.9578C1404.8619,-175.3666 1463.3037,-159.652 1513,-143 1536.0858,-135.2645 1540.383,-128.9183 1564,-123 1755.6292,-74.9784 2377.2808,-30.1853 2549.4427,-18.4658"/>
+<polygon fill="#191970" stroke="#191970" points="2549.6832,-21.9576 2559.4235,-17.7892 2549.2097,-14.9737 2549.6832,-21.9576"/>
 </g>
 <!-- Node29&#45;&gt;Node8 -->
 <g id="edge30" class="edge">
 <title>Node29&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M2574.4394,-246.4639C2548.0182,-234.969 2511.9021,-219.2561 2486.3209,-208.1266"/>
-<polygon fill="#191970" stroke="#191970" points="2487.6408,-204.884 2477.0747,-204.1039 2484.8481,-211.3028 2487.6408,-204.884"/>
+<path fill="none" stroke="#191970" d="M1305.6608,-254.769C1411.1703,-242.2351 1637.1121,-215.3945 1748.3773,-202.1768"/>
+<polygon fill="#191970" stroke="#191970" points="1748.9382,-205.6349 1758.4555,-200.9796 1748.1124,-198.6838 1748.9382,-205.6349"/>
 </g>
 <!-- Node29&#45;&gt;Node16 -->
 <g id="edge33" class="edge">
 <title>Node29&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M2665.7519,-254.1499C2703.1255,-247.2622 2751.8323,-234.2294 2789,-210 2858.2653,-164.8463 2834.9148,-105.6665 2908,-67 2952.2035,-43.6136 3299.1988,-23.0952 3407.6939,-17.1978"/>
-<polygon fill="#191970" stroke="#191970" points="3407.9219,-20.6907 3417.7191,-16.6577 3407.5452,-13.7008 3407.9219,-20.6907"/>
+<path fill="none" stroke="#191970" d="M1222.3573,-246.4062C1205.9176,-236.6981 1184.6684,-223.4254 1167,-210 1091.8501,-152.8971 1095.884,-106.1432 1010,-67 937.0331,-33.744 691.0033,-20.4956 602.2578,-16.7255"/>
+<polygon fill="#191970" stroke="#191970" points="602.3729,-13.2273 592.2371,-16.312 602.0842,-20.2214 602.3729,-13.2273"/>
 </g>
 <!-- Node29&#45;&gt;Node28 -->
 <g id="edge31" class="edge">
 <title>Node29&#45;&gt;Node28</title>
-<path fill="none" stroke="#191970" d="M2631.8908,-246.4639C2648.5425,-235.526 2671.0083,-220.769 2687.7442,-209.7759"/>
-<polygon fill="#191970" stroke="#191970" points="2689.9425,-212.5195 2696.3791,-204.1039 2686.0994,-206.6688 2689.9425,-212.5195"/>
+<path fill="none" stroke="#191970" d="M1267.1532,-246.2967C1279.8596,-235.6551 1296.8087,-221.4602 1309.7502,-210.6217"/>
+<polygon fill="#191970" stroke="#191970" points="1312.1718,-213.159 1317.5911,-204.055 1307.6773,-207.7924 1312.1718,-213.159"/>
 </g>
 <!-- Node29&#45;&gt;Node30 -->
 <g id="edge32" class="edge">
 <title>Node29&#45;&gt;Node30</title>
-<path fill="none" stroke="#191970" d="M2552.4237,-257.6082C2375.4119,-245.4318 1834.637,-208.2327 1677.9594,-197.4551"/>
-<polygon fill="#191970" stroke="#191970" points="1677.9935,-193.9493 1667.7769,-196.7547 1677.5131,-200.9328 1677.9935,-193.9493"/>
+<path fill="none" stroke="#191970" d="M1239.9234,-246.2967C1233.9937,-236.3645 1226.2162,-223.3371 1219.9445,-212.8321"/>
+<polygon fill="#191970" stroke="#191970" points="1222.8358,-210.8471 1214.7045,-204.055 1216.8254,-214.4354 1222.8358,-210.8471"/>
 </g>
 <!-- Node25&#45;&gt;Node10 -->
 <g id="edge37" class="edge">
 <title>Node25&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M1956.2535,-123.3733C1974.0712,-114.4644 2000.7747,-101.1127 2020.9594,-91.0203"/>
-<polygon fill="#191970" stroke="#191970" points="2022.6187,-94.1038 2029.9978,-86.5011 2019.4882,-87.8428 2022.6187,-94.1038"/>
+<path fill="none" stroke="#191970" d="M2584.3458,-124.6767C2503.8039,-114.3081 2366.7191,-96.6604 2283.8363,-85.9904"/>
+<polygon fill="#191970" stroke="#191970" points="2284.1214,-82.4983 2273.7563,-84.6928 2283.2275,-89.441 2284.1214,-82.4983"/>
 </g>
 <!-- Node25&#45;&gt;Node17 -->
 <g id="edge38" class="edge">
 <title>Node25&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M1941.9044,-123.2966C1949.0617,-109.7263 1963.3443,-84.7526 1980,-67 1993.0882,-53.0498 2010.333,-40.1777 2024.3083,-30.7917"/>
-<polygon fill="#191970" stroke="#191970" points="2026.4855,-33.5501 2032.9434,-25.1509 2022.6572,-27.6897 2026.4855,-33.5501"/>
+<path fill="none" stroke="#191970" d="M2644.4991,-123.3845C2635.4345,-104.0192 2614.8324,-60.0055 2602.933,-34.584"/>
+<polygon fill="#191970" stroke="#191970" points="2605.9724,-32.8215 2598.5631,-25.2484 2599.6326,-35.7891 2605.9724,-32.8215"/>
 </g>
 <!-- Node25&#45;&gt;Node18 -->
 <g id="edge39" class="edge">
 <title>Node25&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M1896.9817,-123.4974C1832.4036,-108.6018 1701.0132,-80.1053 1588,-67 1358.7502,-40.4157 616.0259,-20.4817 450.7818,-16.3087"/>
-<polygon fill="#191970" stroke="#191970" points="450.8288,-12.8089 440.7441,-16.0567 450.6531,-19.8067 450.8288,-12.8089"/>
+<path fill="none" stroke="#191970" d="M2707.6446,-123.4912C2789.8825,-110.2584 2944.187,-85.799 3076,-67 3209.8648,-47.9084 3369.7226,-27.8603 3437.2888,-19.5131"/>
+<polygon fill="#191970" stroke="#191970" points="3437.8258,-22.9735 3447.3223,-18.2759 3436.969,-16.0261 3437.8258,-22.9735"/>
 </g>
 <!-- Node31&#45;&gt;Node10 -->
-<g id="edge58" class="edge">
+<g id="edge54" class="edge">
 <title>Node31&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M1877.2798,-251.869C1863.5932,-227.4387 1832.3005,-162.2168 1863,-123 1877.4704,-104.5149 1932.5245,-92.43 1979.0125,-85.307"/>
-<polygon fill="#191970" stroke="#191970" points="1979.7068,-88.7425 1989.088,-83.8186 1978.6838,-81.8177 1979.7068,-88.7425"/>
+<path fill="none" stroke="#191970" d="M1685.6028,-251.6609C1672.4124,-226.1548 1642.1461,-157.491 1678,-123 1710.9149,-91.3362 2006.4586,-81.2041 2144.0749,-78.1857"/>
+<polygon fill="#191970" stroke="#191970" points="2144.1799,-81.6844 2154.1031,-77.9723 2144.0309,-74.686 2144.1799,-81.6844"/>
 </g>
 <!-- Node31&#45;&gt;Node11 -->
 <g id="edge41" class="edge">
 <title>Node31&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M1913.8905,-251.8565C2032.0871,-214.9576 2456.8221,-82.3626 2612.9174,-33.6324"/>
-<polygon fill="#191970" stroke="#191970" points="2614.3019,-36.8668 2622.8045,-30.5458 2612.2158,-30.1849 2614.3019,-36.8668"/>
+<path fill="none" stroke="#191970" d="M1682.4541,-251.8565C1650.7715,-216.1045 1539.4749,-90.513 1493.306,-38.4141"/>
+<polygon fill="#191970" stroke="#191970" points="1495.7293,-35.8714 1486.4775,-30.7085 1490.4904,-40.514 1495.7293,-35.8714"/>
 </g>
 <!-- Node31&#45;&gt;Node18 -->
-<g id="edge60" class="edge">
+<g id="edge56" class="edge">
 <title>Node31&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M1870.3543,-251.7798C1847.3089,-234.537 1796.3786,-198.5734 1748,-179 1642.4473,-136.2946 1610.4141,-141.1167 1498,-123 1087.7195,-56.8791 582.7719,-24.8987 450.7918,-17.3095"/>
-<polygon fill="#191970" stroke="#191970" points="450.7384,-13.8009 440.5556,-16.7271 450.3406,-20.7896 450.7384,-13.8009"/>
+<path fill="none" stroke="#191970" d="M1753.5487,-259.6535C2011.6381,-251.9602 2981.6651,-222.2844 3011,-210 3029.5613,-202.2272 3028.2066,-191.4702 3044,-179 3122.7434,-116.8257 3145.5397,-100.8145 3240,-67 3308.122,-42.614 3391.8691,-27.3455 3437.1556,-20.2336"/>
+<polygon fill="#191970" stroke="#191970" points="3437.9247,-23.6566 3447.2779,-18.6799 3436.8626,-16.7376 3437.9247,-23.6566"/>
 </g>
 <!-- Node31&#45;&gt;Node20 -->
-<g id="edge61" class="edge">
+<g id="edge57" class="edge">
 <title>Node31&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M1855.5311,-251.8359C1829.7619,-242.3871 1790.4412,-226.9769 1758,-210 1735.4992,-198.225 1733.5851,-188.4171 1710,-179 1638.5393,-150.4669 1548.105,-139.3598 1499.8991,-135.2499"/>
-<polygon fill="#191970" stroke="#191970" points="1499.9606,-131.7437 1489.7128,-134.4329 1499.4009,-138.7212 1499.9606,-131.7437"/>
+<path fill="none" stroke="#191970" d="M1686.5552,-251.6203C1680.1213,-235.9061 1669.832,-204.3983 1678,-179 1681.3946,-168.4445 1688.2058,-158.2592 1694.7631,-150.1676"/>
+<polygon fill="#191970" stroke="#191970" points="1697.447,-152.4149 1701.3508,-142.5654 1692.1569,-147.8307 1697.447,-152.4149"/>
 </g>
 <!-- Node31&#45;&gt;Node28 -->
-<g id="edge57" class="edge">
+<g id="edge53" class="edge">
 <title>Node31&#45;&gt;Node28</title>
-<path fill="none" stroke="#191970" d="M1945.574,-256.4366C2094.1045,-244.4179 2467.7288,-214.185 2631.7312,-200.9143"/>
-<polygon fill="#191970" stroke="#191970" points="2632.0677,-204.3986 2641.7528,-200.1033 2631.5031,-197.4214 2632.0677,-204.3986"/>
+<path fill="none" stroke="#191970" d="M1639.5187,-251.9717C1573.9365,-239.8335 1460.7143,-218.8781 1390.6153,-205.9039"/>
+<polygon fill="#191970" stroke="#191970" points="1391.0665,-202.4281 1380.5965,-204.0496 1389.7925,-209.3112 1391.0665,-202.4281"/>
 </g>
 <!-- Node31&#45;&gt;Node30 -->
-<g id="edge59" class="edge">
+<g id="edge55" class="edge">
 <title>Node31&#45;&gt;Node30</title>
-<path fill="none" stroke="#191970" d="M1847.731,-251.9717C1802.9109,-239.863 1725.612,-218.9799 1677.5622,-205.9986"/>
-<polygon fill="#191970" stroke="#191970" points="1678.3418,-202.5839 1667.775,-203.3545 1676.5161,-209.3416 1678.3418,-202.5839"/>
+<path fill="none" stroke="#191970" d="M1628.2494,-258.8306C1542.1456,-254.114 1383.0148,-241.6115 1251,-210 1247.8254,-209.2398 1244.5619,-208.3119 1241.3242,-207.2917"/>
+<polygon fill="#191970" stroke="#191970" points="1242.3977,-203.9598 1231.8031,-204.0297 1240.1289,-210.5819 1242.3977,-203.9598"/>
 </g>
-<!-- Node32 -->
-<g id="node25" class="node">
-<title>Node32</title>
-<g id="a_node25"><a xlink:href="map_8h.html" target="_top" xlink:title="Runtime Map container types. ">
-<polygon fill="#ffffff" stroke="#ff0000" points="522,-179.5 522,-209.5 648,-209.5 648,-179.5 522,-179.5"/>
-<text text-anchor="start" x="530" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/container</text>
-<text text-anchor="middle" x="585" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/map.h</text>
-</a>
-</g>
-</g>
-<!-- Node31&#45;&gt;Node32 -->
+<!-- Node31&#45;&gt;Node34 -->
 <g id="edge42" class="edge">
-<title>Node31&#45;&gt;Node32</title>
-<path fill="none" stroke="#191970" d="M1820.363,-254.1563C1793.7652,-251.2529 1762.4,-248.1118 1734,-246 1523.5254,-230.3492 877.1743,-205.4292 658.3237,-197.2203"/>
-<polygon fill="#191970" stroke="#191970" points="658.3529,-193.719 648.2288,-196.8421 658.0908,-200.7141 658.3529,-193.719"/>
+<title>Node31&#45;&gt;Node34</title>
+<path fill="none" stroke="#191970" d="M1753.7438,-258.1315C1963.677,-246.8611 2640.9258,-210.5024 2865.719,-198.4342"/>
+<polygon fill="#191970" stroke="#191970" points="2865.9618,-201.9263 2875.7598,-197.8951 2865.5865,-194.9363 2865.9618,-201.9263"/>
 </g>
-<!-- Node31&#45;&gt;Node35 -->
-<g id="edge46" class="edge">
-<title>Node31&#45;&gt;Node35</title>
-<path fill="none" stroke="#191970" d="M1820.3205,-254.6654C1793.7156,-251.8459 1762.3567,-248.63 1734,-246 1531.8951,-227.2557 1293.0813,-208.7975 1175.2707,-199.9363"/>
-<polygon fill="#191970" stroke="#191970" points="1175.516,-196.445 1165.2819,-199.1862 1174.9917,-203.4253 1175.516,-196.445"/>
-</g>
-<!-- Node32&#45;&gt;Node18 -->
+<!-- Node34&#45;&gt;Node10 -->
 <g id="edge45" class="edge">
-<title>Node32&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M578.9491,-179.4813C568.0025,-153.8074 542.7782,-100.9686 508,-67 491.3303,-50.7184 468.5093,-37.7354 450.019,-28.8778"/>
-<polygon fill="#191970" stroke="#191970" points="451.3466,-25.6358 440.7999,-24.6262 448.415,-31.9924 451.3466,-25.6358"/>
+<title>Node34&#45;&gt;Node10</title>
+<path fill="none" stroke="#191970" d="M2924.3653,-179.2825C2906.8364,-162.1711 2875.7165,-135.187 2843,-123 2791.7212,-103.8984 2436.975,-86.5792 2283.977,-79.9064"/>
+<polygon fill="#191970" stroke="#191970" points="2283.8986,-76.3998 2273.7563,-79.4634 2283.5954,-83.3933 2283.8986,-76.3998"/>
 </g>
-<!-- Node32&#45;&gt;Node22 -->
+<!-- Node34&#45;&gt;Node15 -->
 <g id="edge43" class="edge">
-<title>Node32&#45;&gt;Node22</title>
-<path fill="none" stroke="#191970" d="M640.5304,-179.4554C680.4825,-168.6314 733.5338,-154.2585 769.9892,-144.3818"/>
-<polygon fill="#191970" stroke="#191970" points="771.07,-147.7152 779.8068,-141.7219 769.2395,-140.9588 771.07,-147.7152"/>
+<title>Node34&#45;&gt;Node15</title>
+<path fill="none" stroke="#191970" d="M2937.7513,-179.4639C2935.6052,-163.289 2929.7815,-137.8908 2914,-123 2848.1057,-60.8249 2806.9655,-84.1158 2718,-67 2566.1764,-37.7912 2385.2268,-24.4133 2286.7297,-18.8973"/>
+<polygon fill="#191970" stroke="#191970" points="2286.764,-15.394 2276.5872,-18.3409 2286.3805,-22.3835 2286.764,-15.394"/>
 </g>
-<!-- Node32&#45;&gt;Node33 -->
-<g id="edge44" class="edge">
-<title>Node32&#45;&gt;Node33</title>
-<path fill="none" stroke="#191970" d="M605.5169,-179.2977C617.9982,-170.0495 633.9159,-158.2551 646.5614,-148.8853"/>
-<polygon fill="#191970" stroke="#191970" points="648.7596,-151.6126 654.7106,-142.8469 644.5922,-145.9882 648.7596,-151.6126"/>
+<!-- Node34&#45;&gt;Node16 -->
+<g id="edge48" class="edge">
+<title>Node34&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M2930.3687,-179.4336C2919.7397,-162.464 2899.985,-135.6131 2875,-123 2816.0183,-93.2243 2348.9437,-71.106 2283,-67 1938.0231,-45.5201 808.2122,-20.6086 602.3442,-16.1878"/>
+<polygon fill="#191970" stroke="#191970" points="602.2635,-12.6854 592.1908,-15.9703 602.1136,-19.6838 602.2635,-12.6854"/>
 </g>
-<!-- Node35&#45;&gt;Node10 -->
-<g id="edge49" class="edge">
-<title>Node35&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M1165.0917,-182.5784C1207.7541,-173.6929 1265.0258,-160.1496 1314,-143 1333.8928,-136.034 1336.5826,-128.2322 1357,-123 1473.2245,-93.2159 1827.8818,-81.9268 1979.2933,-78.387"/>
-<polygon fill="#191970" stroke="#191970" points="1979.4859,-81.8836 1989.403,-78.1551 1979.3253,-74.8854 1979.4859,-81.8836"/>
+<!-- Node34&#45;&gt;Node17 -->
+<g id="edge51" class="edge">
+<title>Node34&#45;&gt;Node17</title>
+<path fill="none" stroke="#191970" d="M2946.864,-179.4023C2959.3284,-153.1312 2979.5376,-98.7824 2952,-67 2931.7335,-43.6094 2730.3556,-25.7019 2638.8429,-18.705"/>
+<polygon fill="#191970" stroke="#191970" points="2639.0035,-15.2072 2628.7685,-17.9449 2638.4768,-22.1874 2639.0035,-15.2072"/>
 </g>
-<!-- Node35&#45;&gt;Node15 -->
-<g id="edge47" class="edge">
-<title>Node35&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M1138.6286,-179.3928C1221.7227,-145.1213 1423.4545,-61.9185 1502.9831,-29.1176"/>
-<polygon fill="#191970" stroke="#191970" points="1504.5879,-32.2418 1512.4979,-25.1932 1501.9188,-25.7706 1504.5879,-32.2418"/>
+<!-- Node34&#45;&gt;Node18 -->
+<g id="edge50" class="edge">
+<title>Node34&#45;&gt;Node18</title>
+<path fill="none" stroke="#191970" d="M2954.2559,-179.2513C2982.8171,-151.7224 3047.5027,-94.0744 3114,-67 3172.5549,-43.1593 3361.1845,-24.8146 3437.5007,-18.1859"/>
+<polygon fill="#191970" stroke="#191970" points="3437.8341,-21.6702 3447.4987,-17.3289 3437.2363,-14.6958 3437.8341,-21.6702"/>
 </g>
-<!-- Node35&#45;&gt;Node16 -->
+<!-- Node34&#45;&gt;Node20 -->
 <g id="edge52" class="edge">
-<title>Node35&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1165.1093,-192.1557C1312.9549,-186.3941 1693.1939,-170.0113 2010,-143 2307.284,-117.6532 2379.8563,-93.9424 2677,-67 2959.547,-41.3811 3302.0231,-22.6485 3407.5149,-17.156"/>
-<polygon fill="#191970" stroke="#191970" points="3408.0055,-20.6354 3417.8111,-16.6229 3407.6435,-13.6447 3408.0055,-20.6354"/>
-</g>
-<!-- Node35&#45;&gt;Node17 -->
-<g id="edge55" class="edge">
-<title>Node35&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M1153.3834,-179.4383C1185.6526,-169.6908 1228.0181,-156.3644 1265,-143 1287.1218,-135.0057 1291.3931,-129.4972 1314,-123 1568.5071,-49.8547 1887.612,-24.8872 2003.9419,-17.8699"/>
-<polygon fill="#191970" stroke="#191970" points="2004.4587,-21.3457 2014.2358,-17.2643 2004.0475,-14.3578 2004.4587,-21.3457"/>
+<title>Node34&#45;&gt;Node20</title>
+<path fill="none" stroke="#191970" d="M2875.9898,-191.3444C2654.0185,-180.2277 1912.6998,-143.1014 1744.944,-134.7"/>
+<polygon fill="#191970" stroke="#191970" points="1744.8979,-131.1934 1734.7353,-134.1887 1744.5477,-138.1846 1744.8979,-131.1934"/>
 </g>
-<!-- Node35&#45;&gt;Node18 -->
-<g id="edge54" class="edge">
-<title>Node35&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M1051.6024,-179.4299C1001.4116,-164.5632 922.091,-141.4499 853,-123 703.2807,-83.0193 523.1743,-40.1686 450.6261,-23.1226"/>
-<polygon fill="#191970" stroke="#191970" points="451.2543,-19.675 440.7192,-20.7982 449.6553,-26.4899 451.2543,-19.675"/>
-</g>
-<!-- Node35&#45;&gt;Node20 -->
-<g id="edge56" class="edge">
-<title>Node35&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M1165.1934,-185.7436C1242.2485,-174.8894 1369.045,-156.4149 1432.3505,-142.8317"/>
-<polygon fill="#191970" stroke="#191970" points="1433.3144,-146.2028 1442.3133,-140.6108 1431.7913,-139.3705 1433.3144,-146.2028"/>
-</g>
-<!-- Node35&#45;&gt;Node22 -->
-<g id="edge50" class="edge">
-<title>Node35&#45;&gt;Node22</title>
-<path fill="none" stroke="#191970" d="M1038.7166,-181.0796C982.7036,-169.2009 902.535,-152.1997 854.0601,-141.9196"/>
-<polygon fill="#191970" stroke="#191970" points="854.7258,-138.4831 844.2172,-139.8323 853.2736,-145.3308 854.7258,-138.4831"/>
+<!-- Node34&#45;&gt;Node22 -->
+<g id="edge46" class="edge">
+<title>Node34&#45;&gt;Node22</title>
+<path fill="none" stroke="#191970" d="M2905.486,-179.4554C2883.2288,-169.464 2854.2353,-156.4487 2832.6015,-146.7372"/>
+<polygon fill="#191970" stroke="#191970" points="2833.7865,-143.4327 2823.2301,-142.5303 2830.9197,-149.8187 2833.7865,-143.4327"/>
 </g>
-<!-- Node35&#45;&gt;Node23 -->
-<g id="edge51" class="edge">
-<title>Node35&#45;&gt;Node23</title>
-<path fill="none" stroke="#191970" d="M1165.0472,-181.7022C1226.9782,-169.0966 1317.1006,-150.6514 1352,-143 1353.2634,-142.723 1354.547,-142.4391 1355.8428,-142.1504"/>
-<polygon fill="#191970" stroke="#191970" points="1356.8984,-145.5 1365.8784,-139.8777 1355.3522,-138.6729 1356.8984,-145.5"/>
+<!-- Node34&#45;&gt;Node23 -->
+<g id="edge47" class="edge">
+<title>Node34&#45;&gt;Node23</title>
+<path fill="none" stroke="#191970" d="M2875.9587,-185.6885C2783.7034,-172.7938 2614.6119,-149.1594 2538.2566,-138.487"/>
+<polygon fill="#191970" stroke="#191970" points="2538.504,-134.9876 2528.1157,-137.0696 2537.5349,-141.9202 2538.504,-134.9876"/>
 </g>
-<!-- Node35&#45;&gt;Node25 -->
-<g id="edge48" class="edge">
-<title>Node35&#45;&gt;Node25</title>
-<path fill="none" stroke="#191970" d="M1165.103,-189.8523C1316.4128,-178.7079 1699.3609,-150.5028 1862.042,-138.5209"/>
-<polygon fill="#191970" stroke="#191970" points="1862.7183,-141.9806 1872.4342,-137.7554 1862.2041,-134.9995 1862.7183,-141.9806"/>
+<!-- Node34&#45;&gt;Node25 -->
+<g id="edge44" class="edge">
+<title>Node34&#45;&gt;Node25</title>
+<path fill="none" stroke="#191970" d="M2875.7166,-181.0796C2824.5269,-170.2238 2753.1627,-155.0897 2704.2521,-144.7173"/>
+<polygon fill="#191970" stroke="#191970" points="2704.6799,-141.2302 2694.1713,-142.5794 2703.2277,-148.0779 2704.6799,-141.2302"/>
 </g>
-<!-- Node35&#45;&gt;Node33 -->
-<g id="edge53" class="edge">
-<title>Node35&#45;&gt;Node33</title>
-<path fill="none" stroke="#191970" d="M1038.8927,-185.5574C954.3479,-173.5769 805.5925,-152.4976 724.5364,-141.0115"/>
-<polygon fill="#191970" stroke="#191970" points="724.9102,-137.5296 714.518,-139.5918 723.928,-144.4603 724.9102,-137.5296"/>
+<!-- Node34&#45;&gt;Node36 -->
+<g id="edge49" class="edge">
+<title>Node34&#45;&gt;Node36</title>
+<path fill="none" stroke="#191970" d="M3002.1866,-180.6215C3051.4749,-169.7957 3119.1603,-154.9291 3165.726,-144.7013"/>
+<polygon fill="#191970" stroke="#191970" points="3166.6032,-148.0921 3175.6195,-142.5282 3165.1015,-141.2551 3166.6032,-148.0921"/>
 </g>
 <!-- Node40&#45;&gt;Node10 -->
 <g id="edge78" class="edge">
 <title>Node40&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M1850.0389,-318.3215C1898.0011,-308.9101 1961.2992,-293.8622 1981,-277 2035.6386,-230.2341 2046.4701,-137.7561 2048.5476,-97.0419"/>
-<polygon fill="#191970" stroke="#191970" points="2052.0544,-96.9268 2048.9357,-86.8014 2045.0594,-96.6617 2052.0544,-96.9268"/>
+<path fill="none" stroke="#191970" d="M2162.7185,-313.3479C2187.1204,-291.2568 2230.4241,-252.1555 2238,-246 2258.9733,-228.959 2274.7956,-234.1107 2287,-210 2293.2223,-197.7073 2291.2107,-192.1186 2287,-179 2276.0521,-144.892 2249.0318,-112.5016 2231.1151,-93.7049"/>
+<polygon fill="#191970" stroke="#191970" points="2233.5672,-91.2066 2224.0673,-86.516 2228.5687,-96.1071 2233.5672,-91.2066"/>
 </g>
 <!-- Node40&#45;&gt;Node11 -->
-<g id="edge64" class="edge">
+<g id="edge60" class="edge">
 <title>Node40&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M1850.1793,-317.0591C1894.2291,-307.8285 1955.9946,-293.6645 2009,-277 2248.4897,-201.706 2524.7809,-81.2297 2628.6383,-34.7015"/>
-<polygon fill="#191970" stroke="#191970" points="2630.1654,-37.8525 2637.8546,-30.5637 2627.2983,-31.4666 2630.1654,-37.8525"/>
+<path fill="none" stroke="#191970" d="M2131.1905,-313.2224C2113.6155,-295.6211 2082.9109,-266.4965 2053,-246 1999.3812,-209.2575 1982.5558,-205.0401 1923,-179 1784.7658,-118.5586 1616.34,-61.6344 1530.0229,-33.623"/>
+<polygon fill="#191970" stroke="#191970" points="1531.0072,-30.2629 1520.4153,-30.5146 1528.8524,-36.923 1531.0072,-30.2629"/>
 </g>
 <!-- Node40&#45;&gt;Node15 -->
 <g id="edge67" class="edge">
 <title>Node40&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M1733.7005,-313.7296C1705.0542,-305.1835 1670.6293,-292.935 1642,-277 1621.4389,-265.5558 1571.3693,-230.6026 1560,-210 1528.5536,-153.015 1530.7028,-72.5881 1533.798,-35.5731"/>
-<polygon fill="#191970" stroke="#191970" points="1537.3253,-35.4535 1534.7948,-25.1653 1530.3572,-34.7861 1537.3253,-35.4535"/>
+<path fill="none" stroke="#191970" d="M2204.0095,-315.7056C2241.4049,-306.2017 2285.1809,-292.2823 2297,-277 2354.2255,-203.0063 2331.7991,-146.8027 2283,-67 2273.4685,-51.4129 2257.3096,-38.9701 2243.0246,-30.2223"/>
+<polygon fill="#191970" stroke="#191970" points="2244.4069,-26.979 2233.9963,-25.0114 2240.9076,-33.0417 2244.4069,-26.979"/>
 </g>
 <!-- Node40&#45;&gt;Node16 -->
 <g id="edge82" class="edge">
 <title>Node40&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1850.0004,-327.9517C2020.5077,-325.893 2517.9999,-316.566 2675,-277 2743.4482,-259.7502 2757.7031,-245.0057 2819,-210 2916.4176,-154.3663 2922.1331,-106.8524 3027,-67 3096.8743,-40.4458 3323.5736,-23.1745 3407.9621,-17.5262"/>
-<polygon fill="#191970" stroke="#191970" points="3408.2375,-21.0157 3417.9856,-16.8654 3407.777,-14.0309 3408.2375,-21.0157"/>
+<path fill="none" stroke="#191970" d="M2087.8797,-325.5456C1969.8012,-319.0985 1705.7072,-302.29 1619,-277 1589.8053,-268.4847 1585.4639,-259.0604 1558,-246 1363.6182,-153.5618 1317.724,-115.4244 1108,-67 1010.638,-44.5195 702.8774,-23.7975 602.2115,-17.469"/>
+<polygon fill="#191970" stroke="#191970" points="602.2512,-13.9647 592.0526,-16.8351 601.8152,-20.9511 602.2512,-13.9647"/>
 </g>
 <!-- Node40&#45;&gt;Node17 -->
 <g id="edge84" class="edge">
 <title>Node40&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M1750.5734,-313.4513C1727.5572,-304.3169 1698.8416,-291.6127 1675,-277 1669.9843,-273.9258 1595.521,-215.3153 1593,-210 1587.0958,-197.5514 1585.0704,-190.2671 1593,-179 1642.0689,-109.2785 1899.4366,-47.4398 2004.3853,-24.7301"/>
-<polygon fill="#191970" stroke="#191970" points="2005.3058,-28.1123 2014.3493,-22.5927 2003.8376,-21.268 2005.3058,-28.1123"/>
+<path fill="none" stroke="#191970" d="M2204.1161,-318.8856C2338.2334,-295.3626 2662.5199,-230.3877 2723,-143 2755.844,-95.5438 2675.5372,-50.6863 2627.2635,-29.0312"/>
+<polygon fill="#191970" stroke="#191970" points="2628.6436,-25.8148 2618.0789,-25.0157 2625.8394,-32.2286 2628.6436,-25.8148"/>
 </g>
 <!-- Node40&#45;&gt;Node18 -->
 <g id="edge85" class="edge">
 <title>Node40&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M1733.776,-316.5299C1641.2694,-298.0343 1454.8284,-262.8843 1295,-246 1208.5004,-236.8622 585.6979,-257.7567 513,-210 481.2269,-189.1276 440.3393,-79.7648 424.5886,-34.8172"/>
-<polygon fill="#191970" stroke="#191970" points="427.8031,-33.4035 421.2245,-25.0986 421.1882,-35.6933 427.8031,-33.4035"/>
+<path fill="none" stroke="#191970" d="M2204.2891,-325.9996C2278.1961,-322.8517 2409.5469,-317.3319 2522,-313 2577.8277,-310.8494 3483.9155,-312.5681 3527,-277 3556.0163,-253.0458 3546,-232.1265 3546,-194.5 3546,-194.5 3546,-194.5 3546,-133 3546,-91.4563 3512.0901,-52.986 3489.5719,-32.0193"/>
+<polygon fill="#191970" stroke="#191970" points="3491.6556,-29.1865 3481.875,-25.1133 3486.9808,-34.3968 3491.6556,-29.1865"/>
 </g>
 <!-- Node40&#45;&gt;Node20 -->
 <g id="edge86" class="edge">
 <title>Node40&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M1789.411,-313.4578C1785.7662,-295.8159 1777.7308,-266.3945 1762,-246 1744.8323,-223.7426 1731.9904,-227.5084 1710,-210 1694.0021,-197.2627 1694.1623,-188.3969 1676,-179 1618.7018,-149.3547 1543.0409,-138.7713 1499.9364,-135.0237"/>
-<polygon fill="#191970" stroke="#191970" points="1499.956,-131.5143 1489.7101,-134.2107 1499.4012,-138.4923 1499.956,-131.5143"/>
+<path fill="none" stroke="#191970" d="M2123.1861,-313.3547C2077.9409,-283.8867 1972.9168,-218.2916 1877,-179 1832.6098,-160.8159 1778.6748,-147.3595 1744.5844,-139.8455"/>
+<polygon fill="#191970" stroke="#191970" points="1745.1877,-136.3952 1734.6742,-137.7057 1743.7102,-143.2375 1745.1877,-136.3952"/>
 </g>
 <!-- Node40&#45;&gt;Node21 -->
-<g id="edge65" class="edge">
+<g id="edge61" class="edge">
 <title>Node40&#45;&gt;Node21</title>
-<path fill="none" stroke="#191970" d="M1733.781,-321.6447C1629.4405,-309.3585 1410.827,-283.6167 1296.3927,-270.142"/>
-<polygon fill="#191970" stroke="#191970" points="1296.6629,-266.6497 1286.3222,-268.9562 1295.8442,-273.6017 1296.6629,-266.6497"/>
+<path fill="none" stroke="#191970" d="M2204.015,-322.436C2321.036,-310.2045 2585.1377,-282.5995 2713.7958,-269.1516"/>
+<polygon fill="#191970" stroke="#191970" points="2714.363,-272.6115 2723.9449,-268.0908 2713.6352,-265.6494 2714.363,-272.6115"/>
 </g>
 <!-- Node40&#45;&gt;Node23 -->
 <g id="edge81" class="edge">
 <title>Node40&#45;&gt;Node23</title>
-<path fill="none" stroke="#191970" d="M1733.8885,-317.8642C1695.811,-309.6328 1645.578,-296.3379 1604,-277 1527.7576,-241.5397 1449.049,-178.9309 1413.9153,-149.3516"/>
-<polygon fill="#191970" stroke="#191970" points="1415.8357,-146.3903 1405.9499,-142.5796 1411.3017,-151.7235 1415.8357,-146.3903"/>
+<path fill="none" stroke="#191970" d="M2204.3859,-318.8806C2241.8281,-311.1211 2290.6188,-297.9702 2330,-277 2394.3766,-242.72 2455.9118,-180.4492 2483.6383,-150.2903"/>
+<polygon fill="#191970" stroke="#191970" points="2486.4103,-152.4438 2490.5364,-142.6854 2481.2254,-147.7409 2486.4103,-152.4438"/>
 </g>
 <!-- Node40&#45;&gt;Node28 -->
 <g id="edge66" class="edge">
 <title>Node40&#45;&gt;Node28</title>
-<path fill="none" stroke="#191970" d="M1850.0225,-320.4871C1922.2147,-310.4824 2049.2494,-292.7629 2158,-277 2330.4002,-252.0113 2532.8484,-221.5149 2638.4938,-205.513"/>
-<polygon fill="#191970" stroke="#191970" points="2639.0483,-208.969 2648.4111,-204.0103 2637.9996,-202.048 2639.0483,-208.969"/>
+<path fill="none" stroke="#191970" d="M2087.7741,-325.0822C1964.4276,-317.5259 1680.3898,-298.3676 1586,-277 1547.1875,-268.2138 1539.7563,-258.5723 1502,-246 1458.5671,-231.5374 1408.3709,-216.8112 1373.2724,-206.8314"/>
+<polygon fill="#191970" stroke="#191970" points="1373.9161,-203.3761 1363.3408,-204.0196 1372.0091,-210.1114 1373.9161,-203.3761"/>
 </g>
 <!-- Node40&#45;&gt;Node30 -->
 <g id="edge79" class="edge">
 <title>Node40&#45;&gt;Node30</title>
-<path fill="none" stroke="#191970" d="M1784.3447,-313.4601C1774.6262,-295.5498 1756.3992,-265.6004 1734,-246 1715.3307,-229.6634 1690.5694,-216.785 1670.4811,-207.9924"/>
-<polygon fill="#191970" stroke="#191970" points="1671.616,-204.6724 1661.0421,-204.007 1668.8932,-211.1212 1671.616,-204.6724"/>
+<path fill="none" stroke="#191970" d="M2087.9012,-327.4876C1973.9426,-324.7094 1713.4261,-314.4441 1498,-277 1385.9354,-257.5216 1359.3503,-244.6134 1251,-210 1248.4503,-209.1855 1245.8266,-208.3096 1243.1949,-207.4037"/>
+<polygon fill="#191970" stroke="#191970" points="1244.3421,-204.097 1233.7474,-204.0468 1241.9984,-210.693 1244.3421,-204.097"/>
 </g>
 <!-- Node40&#45;&gt;Node31 -->
 <g id="edge77" class="edge">
 <title>Node40&#45;&gt;Node31</title>
-<path fill="none" stroke="#191970" d="M1812.6493,-313.2967C1827.3781,-302.4524 1847.1186,-287.9182 1861.9396,-277.006"/>
-<polygon fill="#191970" stroke="#191970" points="1864.0447,-279.8025 1870.0224,-271.055 1859.8944,-274.1655 1864.0447,-279.8025"/>
+<path fill="none" stroke="#191970" d="M2087.9118,-319.9463C2005.3268,-307.7855 1854.0282,-285.5064 1763.9771,-272.2461"/>
+<polygon fill="#191970" stroke="#191970" points="1764.2491,-268.7485 1753.8459,-270.7542 1763.2293,-275.6738 1764.2491,-268.7485"/>
 </g>
 <!-- Node41 -->
-<g id="node29" class="node">
+<g id="node28" class="node">
 <title>Node41</title>
-<g id="a_node29"><a xlink:href="runtime_2module_8h.html" target="_top" xlink:title="Runtime container of the functions generated by TVM, This is used to support dynamically link...">
-<polygon fill="#ffffff" stroke="#ff0000" points="1876,-185 1876,-204 2002,-204 2002,-185 1876,-185"/>
-<text text-anchor="middle" x="1939" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/module.h</text>
+<g id="a_node28"><a xlink:href="map_8h.html" target="_top" xlink:title="Runtime Map container types. ">
+<polygon fill="#ffffff" stroke="#ff0000" points="3210,-246.5 3210,-276.5 3336,-276.5 3336,-246.5 3210,-246.5"/>
+<text text-anchor="start" x="3218" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/container</text>
+<text text-anchor="middle" x="3273" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/map.h</text>
 </a>
 </g>
 </g>
 <!-- Node40&#45;&gt;Node41 -->
-<g id="edge68" class="edge">
+<g id="edge62" class="edge">
 <title>Node40&#45;&gt;Node41</title>
-<path fill="none" stroke="#191970" d="M1850.3778,-315.7375C1888.5027,-306.6207 1933.1962,-293.1383 1945,-277 1958.5064,-258.5339 1949.7769,-231.6489 1943.1045,-213.6409"/>
-<polygon fill="#191970" stroke="#191970" points="1946.3591,-212.351 1939.5973,-204.1945 1939.7968,-214.7875 1946.3591,-212.351"/>
+<path fill="none" stroke="#191970" d="M2204.2192,-325.0389C2393.3785,-313.7934 2990.4959,-278.2948 3199.7136,-265.8569"/>
+<polygon fill="#191970" stroke="#191970" points="3200.1994,-269.3343 3209.9741,-265.2469 3199.7839,-262.3466 3200.1994,-269.3343"/>
+</g>
+<!-- Node42 -->
+<g id="node29" class="node">
+<title>Node42</title>
+<g id="a_node29"><a xlink:href="runtime_2module_8h.html" target="_top" xlink:title="Runtime container of the functions generated by TVM, This is used to support dynamically link...">
+<polygon fill="#ffffff" stroke="#ff0000" points="2152,-185 2152,-204 2278,-204 2278,-185 2152,-185"/>
+<text text-anchor="middle" x="2215" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/module.h</text>
+</a>
+</g>
 </g>
 <!-- Node40&#45;&gt;Node42 -->
-<g id="edge80" class="edge">
+<g id="edge68" class="edge">
 <title>Node40&#45;&gt;Node42</title>
-<path fill="none" stroke="#191970" d="M1850.1746,-325.8735C2097.2416,-314.7189 3055.518,-271.4544 3243.7916,-262.9542"/>
-<polygon fill="#191970" stroke="#191970" points="3244.043,-266.4465 3253.8749,-262.4989 3243.7272,-259.4536 3244.043,-266.4465"/>
+<path fill="none" stroke="#191970" d="M2149.3177,-313.389C2159.1356,-288.6393 2184.2956,-239.5495 2200.7382,-212.8438"/>
+<polygon fill="#191970" stroke="#191970" points="2203.8931,-214.4085 2206.357,-204.1042 2198.005,-210.623 2203.8931,-214.4085"/>
 </g>
-<!-- Node43 -->
+<!-- Node40&#45;&gt;Node43 -->
+<g id="edge80" class="edge">
+<title>Node40&#45;&gt;Node43</title>
+<path fill="none" stroke="#191970" d="M2087.7347,-325.578C1858.0033,-314.0571 1018.9074,-271.9766 842.6292,-263.1363"/>
+<polygon fill="#191970" stroke="#191970" points="842.6031,-259.6307 832.4403,-262.6254 842.2524,-266.6219 842.6031,-259.6307"/>
+</g>
+<!-- Node44 -->
 <g id="node31" class="node">
-<title>Node43</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="1684.5,-252 1684.5,-271 1725.5,-271 1725.5,-252 1684.5,-252"/>
-<text text-anchor="middle" x="1705" y="-259" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tuple</text>
+<title>Node44</title>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="2246.5,-252 2246.5,-271 2287.5,-271 2287.5,-252 2246.5,-252"/>
+<text text-anchor="middle" x="2267" y="-259" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tuple</text>
 </g>
-<!-- Node40&#45;&gt;Node43 -->
+<!-- Node40&#45;&gt;Node44 -->
 <g id="edge83" class="edge">
-<title>Node40&#45;&gt;Node43</title>
-<path fill="none" stroke="#191970" d="M1772.2584,-313.2967C1758.3085,-302.5537 1739.6565,-288.1895 1725.5332,-277.3129"/>
-<polygon fill="#191970" stroke="#191970" points="1727.4656,-274.3835 1717.4072,-271.055 1723.1945,-279.9295 1727.4656,-274.3835"/>
+<title>Node40&#45;&gt;Node44</title>
+<path fill="none" stroke="#191970" d="M2173.1548,-313.4639C2193.3656,-302.2728 2220.7964,-287.0838 2240.7799,-276.0186"/>
+<polygon fill="#191970" stroke="#191970" points="2242.6027,-279.0101 2249.6556,-271.1039 2239.2117,-272.8862 2242.6027,-279.0101"/>
+</g>
+<!-- Node41&#45;&gt;Node18 -->
+<g id="edge65" class="edge">
+<title>Node41&#45;&gt;Node18</title>
+<path fill="none" stroke="#191970" d="M3285.0267,-246.4819C3319.558,-203.3616 3418.8981,-79.3125 3455.8936,-33.1151"/>
+<polygon fill="#191970" stroke="#191970" points="3458.7168,-35.189 3462.2357,-25.1956 3453.2529,-30.8134 3458.7168,-35.189"/>
+</g>
+<!-- Node41&#45;&gt;Node22 -->
+<g id="edge63" class="edge">
+<title>Node41&#45;&gt;Node22</title>
+<path fill="none" stroke="#191970" d="M3229.3085,-246.4373C3177.5779,-228.908 3088.6358,-199.7234 3011,-179 2953.6297,-163.6861 2886.4332,-149.5644 2844.0402,-141.1151"/>
+<polygon fill="#191970" stroke="#191970" points="2844.5686,-137.6519 2834.0793,-139.1433 2843.2092,-144.5186 2844.5686,-137.6519"/>
+</g>
+<!-- Node41&#45;&gt;Node36 -->
+<g id="edge64" class="edge">
+<title>Node41&#45;&gt;Node36</title>
+<path fill="none" stroke="#191970" d="M3266.5934,-246.2548C3256.7225,-222.7656 3237.8106,-177.7623 3227.0363,-152.1235"/>
+<polygon fill="#191970" stroke="#191970" points="3230.1922,-150.5989 3223.0913,-142.7358 3223.7388,-153.3108 3230.1922,-150.5989"/>
 </g>
-<!-- Node41&#45;&gt;Node10 -->
+<!-- Node42&#45;&gt;Node10 -->
 <g id="edge71" class="edge">
-<title>Node41&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M1956.0147,-184.9271C1971.4348,-175.6519 1994.1114,-160.4541 2010,-143 2022.8329,-128.9027 2033.5145,-109.9192 2040.4348,-95.9304"/>
-<polygon fill="#191970" stroke="#191970" points="2043.6576,-97.303 2044.7861,-86.7685 2037.3345,-94.3 2043.6576,-97.303"/>
+<title>Node42&#45;&gt;Node10</title>
+<path fill="none" stroke="#191970" d="M2214.9182,-184.8845C2214.7548,-165.6913 2214.3854,-122.286 2214.1682,-96.7663"/>
+<polygon fill="#191970" stroke="#191970" points="2217.668,-96.7182 2214.083,-86.7484 2210.6683,-96.7778 2217.668,-96.7182"/>
 </g>
-<!-- Node41&#45;&gt;Node11 -->
+<!-- Node42&#45;&gt;Node11 -->
 <g id="edge69" class="edge">
-<title>Node41&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M1964.0172,-184.8655C2025.8632,-161.3928 2191.2838,-100.7077 2334,-67 2423.0318,-45.9719 2527.4038,-31.5623 2596.1364,-23.4447"/>
-<polygon fill="#191970" stroke="#191970" points="2596.9055,-26.8788 2606.4329,-22.2442 2596.0948,-19.9259 2596.9055,-26.8788"/>
+<title>Node42&#45;&gt;Node11</title>
+<path fill="none" stroke="#191970" d="M2176.7967,-184.9975C2090.7038,-163.6167 1874.9184,-110.2158 1694,-67 1645.2979,-55.3666 1590.4799,-42.5903 1547.6237,-32.6735"/>
+<polygon fill="#191970" stroke="#191970" points="1548.3666,-29.253 1537.8351,-30.41 1546.7895,-36.073 1548.3666,-29.253"/>
 </g>
-<!-- Node41&#45;&gt;Node16 -->
+<!-- Node42&#45;&gt;Node16 -->
 <g id="edge73" class="edge">
-<title>Node41&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M2002.0665,-186.4036C2078.3598,-176.5306 2210.674,-159.1568 2324,-143 2547.3946,-111.1508 2601.8883,-93.3338 2826,-67 3048.0172,-40.9123 3316.712,-23.0982 3407.9329,-17.4339"/>
-<polygon fill="#191970" stroke="#191970" points="3408.154,-20.9271 3417.9197,-16.8185 3407.7234,-13.9403 3408.154,-20.9271"/>
+<title>Node42&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M2163.6058,-184.9949C2033.4603,-161.2809 1680.107,-99.1112 1383,-67 1080.2253,-34.2762 711.5982,-20.1661 602.1133,-16.5087"/>
+<polygon fill="#191970" stroke="#191970" points="602.1596,-13.0084 592.05,-16.1778 601.9295,-20.0046 602.1596,-13.0084"/>
 </g>
-<!-- Node41&#45;&gt;Node20 -->
+<!-- Node42&#45;&gt;Node20 -->
 <g id="edge75" class="edge">
-<title>Node41&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M1894.7314,-184.935C1884.0457,-182.8073 1872.6399,-180.6859 1862,-179 1728.655,-157.8715 1568.6027,-142.234 1499.9634,-135.9868"/>
-<polygon fill="#191970" stroke="#191970" points="1500.0243,-132.4781 1489.7502,-135.0653 1499.3952,-139.4498 1500.0243,-132.4781"/>
+<title>Node42&#45;&gt;Node20</title>
+<path fill="none" stroke="#191970" d="M2171.1468,-184.9521C2160.3442,-182.7994 2148.7816,-180.6623 2138,-179 2118.6006,-176.0089 1842.1284,-146.8066 1744.688,-136.5441"/>
+<polygon fill="#191970" stroke="#191970" points="1744.8189,-133.0387 1734.5074,-135.4722 1744.0859,-140.0002 1744.8189,-133.0387"/>
 </g>
-<!-- Node41&#45;&gt;Node23 -->
+<!-- Node42&#45;&gt;Node23 -->
 <g id="edge72" class="edge">
-<title>Node41&#45;&gt;Node23</title>
-<path fill="none" stroke="#191970" d="M1875.8454,-191.2423C1781.6207,-185.6843 1598.6144,-172.2016 1434.6311,-143.0602"/>
-<polygon fill="#191970" stroke="#191970" points="1434.8192,-139.5379 1424.357,-141.2092 1433.5779,-146.4269 1434.8192,-139.5379"/>
+<title>Node42&#45;&gt;Node23</title>
+<path fill="none" stroke="#191970" d="M2259.0634,-184.9581C2313.9834,-173.0652 2407.0111,-152.9201 2459.6419,-141.523"/>
+<polygon fill="#191970" stroke="#191970" points="2460.5734,-144.9025 2469.6061,-139.3652 2459.0919,-138.061 2460.5734,-144.9025"/>
 </g>
-<!-- Node41&#45;&gt;Node25 -->
+<!-- Node42&#45;&gt;Node25 -->
 <g id="edge70" class="edge">
-<title>Node41&#45;&gt;Node25</title>
-<path fill="none" stroke="#191970" d="M1938.6875,-184.8906C1938.4103,-176.3657 1937.9964,-163.6392 1937.6479,-152.9235"/>
-<polygon fill="#191970" stroke="#191970" points="1941.1402,-152.6258 1937.3169,-142.7449 1934.1439,-152.8534 1941.1402,-152.6258"/>
+<title>Node42&#45;&gt;Node25</title>
+<path fill="none" stroke="#191970" d="M2278.1073,-185.5574C2356.7247,-174.4169 2490.8647,-155.4086 2574.4622,-143.5624"/>
+<polygon fill="#191970" stroke="#191970" points="2574.9894,-147.0227 2584.3994,-142.1542 2574.0072,-140.092 2574.9894,-147.0227"/>
 </g>
-<!-- Node41&#45;&gt;Node33 -->
+<!-- Node42&#45;&gt;Node36 -->
 <g id="edge74" class="edge">
-<title>Node41&#45;&gt;Node33</title>
-<path fill="none" stroke="#191970" d="M1875.7803,-190.4343C1822.5178,-187.0905 1744.2966,-182.3706 1676,-179 1273.949,-159.1577 1172.6026,-170.4605 771,-143 755.9997,-141.9743 739.7995,-140.5506 724.7869,-139.0986"/>
-<polygon fill="#191970" stroke="#191970" points="724.9083,-135.5937 714.6127,-138.0935 724.2201,-142.5598 724.9083,-135.5937"/>
+<title>Node42&#45;&gt;Node36</title>
+<path fill="none" stroke="#191970" d="M2278.185,-190.6296C2460.9191,-179.4362 2988.0405,-147.1474 3162.3138,-136.4723"/>
+<polygon fill="#191970" stroke="#191970" points="3162.5357,-139.9654 3172.303,-135.8604 3162.1077,-132.9785 3162.5357,-139.9654"/>
 </g>
-<!-- Node41&#45;&gt;Node40 -->
+<!-- Node42&#45;&gt;Node40 -->
 <g id="edge76" class="edge">
-<title>Node41&#45;&gt;Node40</title>
-<path fill="none" stroke="#191970" d="M1950.4683,-204.1945C1963.4939,-220.7717 1979.1572,-254.9097 1963,-277 1950.661,-293.8701 1902.3816,-307.838 1860.1865,-316.9506"/>
-<polygon fill="#191970" stroke="#191970" points="1859.247,-313.5714 1850.1772,-319.0477 1860.6824,-320.4227 1859.247,-313.5714"/>
+<title>Node42&#45;&gt;Node40</title>
+<path fill="none" stroke="#191970" d="M2213.7521,-204.1042C2206.4497,-224.967 2181.2457,-274.9475 2163.4882,-304.8187"/>
+<polygon fill="#191970" stroke="#191970" points="2160.4781,-303.0323 2158.2444,-313.389 2166.4491,-306.6857 2160.4781,-303.0323"/>
 </g>
-<!-- Node44&#45;&gt;Node8 -->
+<!-- Node45&#45;&gt;Node8 -->
 <g id="edge91" class="edge">
-<title>Node44&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M2750.1961,-380.3555C2730.5443,-373.42 2707.8093,-362.0302 2694,-344 2667.023,-308.7773 2705.7631,-277.9692 2675,-246 2653.7674,-223.9349 2576.6066,-209.6286 2519.6323,-201.8242"/>
-<polygon fill="#191970" stroke="#191970" points="2519.9793,-198.3396 2509.6047,-200.4885 2519.055,-205.2783 2519.9793,-198.3396"/>
+<title>Node45&#45;&gt;Node8</title>
+<path fill="none" stroke="#191970" d="M1309.7833,-380.414C1366.9143,-365.2473 1482.3528,-335.1671 1581,-313 1661.0246,-295.0176 1694.6188,-323.7662 1762,-277 1784.2933,-261.5273 1798.7294,-232.8412 1806.3662,-213.7095"/>
+<polygon fill="#191970" stroke="#191970" points="1809.6947,-214.8009 1809.9161,-204.2084 1803.1374,-212.3509 1809.6947,-214.8009"/>
 </g>
-<!-- Node45 -->
+<!-- Node46 -->
 <g id="node33" class="node">
-<title>Node45</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="2910,-319 2910,-338 2970,-338 2970,-319 2910,-319"/>
-<text text-anchor="middle" x="2940" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">iostream</text>
+<title>Node46</title>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="826,-319 826,-338 886,-338 886,-319 826,-319"/>
+<text text-anchor="middle" x="856" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">iostream</text>
 </g>
-<!-- Node44&#45;&gt;Node45 -->
+<!-- Node45&#45;&gt;Node46 -->
 <g id="edge92" class="edge">
-<title>Node44&#45;&gt;Node45</title>
-<path fill="none" stroke="#191970" d="M2811.75,-380.3906C2837.2939,-370.0554 2878.1009,-353.5447 2906.811,-341.9284"/>
-<polygon fill="#191970" stroke="#191970" points="2908.4596,-345.0371 2916.4168,-338.0419 2905.834,-338.5481 2908.4596,-345.0371"/>
+<title>Node45&#45;&gt;Node46</title>
+<path fill="none" stroke="#191970" d="M1209.1461,-380.4581C1121.7204,-367.5952 968.6844,-345.0792 896.2239,-334.4181"/>
+<polygon fill="#191970" stroke="#191970" points="896.538,-330.9267 886.135,-332.9337 895.519,-337.8522 896.538,-330.9267"/>
 </g>
-<!-- Node46&#45;&gt;Node4 -->
+<!-- Node47&#45;&gt;Node4 -->
 <g id="edge105" class="edge">
-<title>Node46&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M1942.2108,-552.9398C2004.4368,-544.9863 2127.7664,-528.7332 2232,-512 2233.4673,-511.7644 2234.9559,-511.5213 2236.4579,-511.2723"/>
-<polygon fill="#191970" stroke="#191970" points="2237.2142,-514.6939 2246.4835,-509.5626 2236.0375,-507.7935 2237.2142,-514.6939"/>
+<title>Node47&#45;&gt;Node4</title>
+<path fill="none" stroke="#191970" d="M1734,-548.2455C1734,-540.9382 1734,-530.6944 1734,-521.7046"/>
+<polygon fill="#191970" stroke="#191970" points="1737.5001,-521.6426 1734,-511.6427 1730.5001,-521.6427 1737.5001,-521.6426"/>
 </g>
-<!-- Node46&#45;&gt;Node5 -->
+<!-- Node47&#45;&gt;Node5 -->
 <g id="edge106" class="edge">
-<title>Node46&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M1942.055,-549.1403C2004.7246,-535.4979 2129.8835,-509.1341 2237,-492 2347.1463,-474.3812 2476.5255,-459.7799 2550.328,-452.0232"/>
-<polygon fill="#191970" stroke="#191970" points="2550.7831,-455.4948 2560.3652,-450.9745 2550.0556,-448.5327 2550.7831,-455.4948"/>
+<title>Node47&#45;&gt;Node5</title>
+<path fill="none" stroke="#191970" d="M1721.2963,-548.4509C1695.5652,-529.1094 1637.0789,-485.1465 1605.7408,-461.5904"/>
+<polygon fill="#191970" stroke="#191970" points="1607.7681,-458.7358 1597.6715,-455.5249 1603.5621,-464.3313 1607.7681,-458.7358"/>
 </g>
-<!-- Node46&#45;&gt;Node10 -->
+<!-- Node47&#45;&gt;Node10 -->
 <g id="edge109" class="edge">
-<title>Node46&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M1861.8195,-555.667C1661.8051,-542.6492 792.4389,-468.7779 1030,-179 1090.1601,-105.6165 1758.6357,-83.6916 1979.0027,-78.4333"/>
-<polygon fill="#191970" stroke="#191970" points="1979.2383,-81.9289 1989.1535,-78.1954 1979.0742,-74.9308 1979.2383,-81.9289"/>
+<title>Node47&#45;&gt;Node10</title>
+<path fill="none" stroke="#191970" d="M1759.0425,-548.4891C1856.9305,-511.205 2210.4512,-375.512 2254,-344 2318.9657,-296.9906 2346.5209,-256.7776 2327,-179 2320.1266,-151.614 2316.8225,-143.1073 2297,-123 2283.4641,-109.2696 2264.9581,-98.4795 2248.855,-90.8109"/>
+<polygon fill="#191970" stroke="#191970" points="2250.2596,-87.6048 2239.7072,-86.6578 2247.3658,-93.9787 2250.2596,-87.6048"/>
 </g>
-<!-- Node46&#45;&gt;Node16 -->
+<!-- Node47&#45;&gt;Node16 -->
 <g id="edge110" class="edge">
-<title>Node46&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1942.0315,-557.3516C2055.9692,-555.1288 2391.6368,-545.9579 2668,-512 2802.6239,-495.4582 2837.0127,-491.2075 2968,-456 3091.5204,-422.7995 3226,-456.4045 3226,-328.5 3226,-328.5 3226,-328.5 3226,-133 3226,-51.0328 3348.1226,-25.8524 3407.8589,-18.4384"/>
-<polygon fill="#191970" stroke="#191970" points="3408.3681,-21.9031 3417.9043,-17.2867 3407.5706,-14.9486 3408.3681,-21.9031"/>
+<title>Node47&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M1693.7207,-556.6966C1574.8821,-552.5829 1227.1695,-538.5484 1117,-512 994.286,-482.4286 646,-320.7268 646,-194.5 646,-194.5 646,-194.5 646,-133 646,-91.4563 612.0901,-52.986 589.5719,-32.0193"/>
+<polygon fill="#191970" stroke="#191970" points="591.6556,-29.1865 581.875,-25.1133 586.9808,-34.3968 591.6556,-29.1865"/>
 </g>
-<!-- Node46&#45;&gt;Node21 -->
+<!-- Node47&#45;&gt;Node21 -->
 <g id="edge107" class="edge">
-<title>Node46&#45;&gt;Node21</title>
-<path fill="none" stroke="#191970" d="M1887.2115,-548.4072C1853.1871,-526.59 1766.3336,-472.3343 1689,-436 1612.4199,-400.0197 1380.1946,-316.9334 1275.3528,-279.8959"/>
-<polygon fill="#191970" stroke="#191970" points="1276.5096,-276.5927 1265.9148,-276.5646 1274.1797,-283.1936 1276.5096,-276.5927"/>
+<title>Node47&#45;&gt;Node21</title>
+<path fill="none" stroke="#191970" d="M1771.647,-548.4811C1865.133,-524.7139 2115.2503,-460.3331 2322,-400 2445.4669,-363.9703 2474.5967,-349.2471 2598,-313 2638.1162,-301.2167 2683.2907,-288.8736 2719.4132,-279.2259"/>
+<polygon fill="#191970" stroke="#191970" points="2720.5877,-282.5352 2729.3498,-276.5789 2718.7858,-275.771 2720.5877,-282.5352"/>
 </g>
-<!-- Node46&#45;&gt;Node28 -->
+<!-- Node47&#45;&gt;Node28 -->
 <g id="edge108" class="edge">
-<title>Node46&#45;&gt;Node28</title>
-<path fill="none" stroke="#191970" d="M1942.1945,-555.7348C2121.7559,-545.3877 2845.6488,-501.1756 2936,-456 2971.9973,-438.0014 2998,-430.2462 2998,-390 2998,-390 2998,-390 2998,-328.5 2998,-276.5698 2841.7793,-228.3267 2759.8517,-206.5969"/>
-<polygon fill="#191970" stroke="#191970" points="2760.5653,-203.1659 2750.0048,-204.018 2758.7917,-209.9375 2760.5653,-203.1659"/>
+<title>Node47&#45;&gt;Node28</title>
+<path fill="none" stroke="#191970" d="M1693.8498,-555.3419C1548.9445,-545.3468 1059.0858,-507.9231 1014,-456 910.805,-337.1553 1141.9469,-268.6816 1183,-246 1214.1766,-228.7751 1252.1989,-215.5831 1281.6251,-206.8643"/>
+<polygon fill="#191970" stroke="#191970" points="1282.6189,-210.2204 1291.2526,-204.0796 1280.6739,-203.496 1282.6189,-210.2204"/>
 </g>
-<!-- Node47&#45;&gt;Node4 -->
+<!-- Node48&#45;&gt;Node4 -->
 <g id="edge128" class="edge">
-<title>Node47&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M3055.3215,-828.4131C3104.4582,-801.5119 3231.956,-723.1605 3179,-660 3069.8896,-529.8644 2510.0607,-506.8511 2337.6219,-502.8358"/>
-<polygon fill="#191970" stroke="#191970" points="2337.6211,-499.3351 2327.546,-502.6128 2337.4661,-506.3333 2337.6211,-499.3351"/>
+<title>Node48&#45;&gt;Node4</title>
+<path fill="none" stroke="#191970" d="M407.9063,-828.3544C423.9375,-809.945 456,-767.8901 456,-726 456,-726 456,-726 456,-670 456,-543.9672 1445.6481,-509.6536 1683.1945,-503.2326"/>
+<polygon fill="#191970" stroke="#191970" points="1683.3809,-506.729 1693.2844,-502.9645 1683.1949,-499.7315 1683.3809,-506.729"/>
 </g>
-<!-- Node47&#45;&gt;Node5 -->
+<!-- Node48&#45;&gt;Node5 -->
 <g id="edge129" class="edge">
-<title>Node47&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M3066.0882,-828.4263C3087.6222,-820.553 3117.0743,-808.0847 3140,-792 3168.3039,-772.1419 3179.9248,-767.5808 3194,-736 3204.1578,-713.2088 3197.1105,-704.9364 3198,-680 3198.3169,-671.1168 3201.3013,-668.2531 3198,-660 3159.7055,-564.2637 3130.465,-537.6304 3038,-492 2974.7467,-460.7852 2772.065,-450.5933 2669.9679,-447.3928"/>
-<polygon fill="#191970" stroke="#191970" points="2669.9152,-443.8898 2659.8144,-447.0873 2669.7045,-450.8866 2669.9152,-443.8898"/>
+<title>Node48&#45;&gt;Node5</title>
+<path fill="none" stroke="#191970" d="M399.2341,-828.3047C400.3313,-800.1134 406.5677,-716.5844 442,-660 462.7785,-626.8173 474.2103,-619.8724 510,-604 695.2905,-521.8253 1327.0551,-466.2726 1525.1123,-450.5547"/>
+<polygon fill="#191970" stroke="#191970" points="1525.6283,-454.025 1535.322,-449.7493 1525.0777,-447.0466 1525.6283,-454.025"/>
 </g>
-<!-- Node47&#45;&gt;Node16 -->
+<!-- Node48&#45;&gt;Node16 -->
 <g id="edge156" class="edge">
-<title>Node47&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M3086.5572,-835.5411C3249.4516,-826.8072 3758,-794.0877 3758,-726 3758,-726 3758,-726 3758,-133 3758,-98.6999 3746.2206,-86.496 3718,-67 3678.4057,-39.6466 3536.368,-23.9818 3472.0499,-18.1476"/>
-<polygon fill="#191970" stroke="#191970" points="3472.3312,-14.6589 3462.0618,-17.2643 3471.7145,-21.6317 3472.3312,-14.6589"/>
+<title>Node48&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M349.4699,-833.0943C287.6658,-823.9262 190,-798.0411 190,-726 190,-726 190,-726 190,-558 190,-481.4471 152,-466.5529 152,-390 152,-390 152,-390 152,-133 152,-98.4675 164.0271,-85.79 193,-67 249.7555,-30.192 456.9912,-19.3167 537.608,-16.4389"/>
+<polygon fill="#191970" stroke="#191970" points="537.8,-19.9346 547.6758,-16.0981 537.5631,-12.9386 537.8,-19.9346"/>
 </g>
-<!-- Node47&#45;&gt;Node20 -->
+<!-- Node48&#45;&gt;Node20 -->
 <g id="edge157" class="edge">
-<title>Node47&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M2987.1578,-835.324C2778.8869,-823.819 1989,-776.8343 1989,-726 1989,-726 1989,-726 1989,-670 1989,-480.9146 2071.3234,-394.2852 1954,-246 1939.0656,-227.1245 1771.3902,-184.6762 1748,-179 1659.6056,-157.5488 1553.1598,-143.2271 1499.8734,-136.8272"/>
-<polygon fill="#191970" stroke="#191970" points="1499.9821,-133.3158 1489.6404,-135.6175 1499.1603,-140.2674 1499.9821,-133.3158"/>
+<title>Node48&#45;&gt;Node20</title>
+<path fill="none" stroke="#191970" d="M382.0159,-828.368C354.6905,-811.4638 304,-773.6798 304,-726 304,-726 304,-726 304,-614 304,-487.0426 630.3432,-308.2354 741,-246 822.3407,-200.2525 848.3953,-196.8243 940,-179 1084.5077,-150.8819 1548.3365,-137.1572 1677.3954,-133.821"/>
+<polygon fill="#191970" stroke="#191970" points="1677.5641,-137.3179 1687.4717,-133.5641 1677.3857,-130.3202 1677.5641,-137.3179"/>
 </g>
-<!-- Node48 -->
+<!-- Node49 -->
 <g id="node36" class="node">
-<title>Node48</title>
+<title>Node49</title>
 <g id="a_node36"><a xlink:href="tir_2expr_8h.html" target="_top" xlink:title="TIR expressions. ">
-<polygon fill="#ffffff" stroke="#000000" points="2731.5,-772.5 2731.5,-791.5 2814.5,-791.5 2814.5,-772.5 2731.5,-772.5"/>
-<text text-anchor="middle" x="2773" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/tir/expr.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1267.5,-772.5 1267.5,-791.5 1350.5,-791.5 1350.5,-772.5 1267.5,-772.5"/>
+<text text-anchor="middle" x="1309" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/tir/expr.h</text>
 </a>
 </g>
 </g>
-<!-- Node47&#45;&gt;Node48 -->
+<!-- Node48&#45;&gt;Node49 -->
 <g id="edge130" class="edge">
-<title>Node47&#45;&gt;Node48</title>
-<path fill="none" stroke="#191970" d="M2991.9167,-828.4369C2945.5829,-818.6085 2873.5292,-803.3244 2824.8608,-793.0008"/>
-<polygon fill="#191970" stroke="#191970" points="2825.3567,-789.5282 2814.8481,-790.8769 2823.9042,-796.3758 2825.3567,-789.5282"/>
+<title>Node48&#45;&gt;Node49</title>
+<path fill="none" stroke="#191970" d="M448.5718,-834.9494C606.4435,-825.2342 1096.5074,-795.0765 1257.3101,-785.1809"/>
+<polygon fill="#191970" stroke="#191970" points="1257.6526,-788.6666 1267.4187,-784.5588 1257.2226,-781.6798 1257.6526,-788.6666"/>
 </g>
-<!-- Node48&#45;&gt;Node3 -->
+<!-- Node49&#45;&gt;Node3 -->
 <g id="edge131" class="edge">
-<title>Node48&#45;&gt;Node3</title>
-<path fill="none" stroke="#191970" d="M2731.2101,-775.6689C2648.4037,-762.5238 2458.1636,-729.3266 2304,-680 2256.0657,-664.6628 2202.2242,-642.0734 2169.4665,-627.7015"/>
-<polygon fill="#191970" stroke="#191970" points="2170.5686,-624.3621 2160.0071,-623.5222 2167.7397,-630.765 2170.5686,-624.3621"/>
+<title>Node49&#45;&gt;Node3</title>
+<path fill="none" stroke="#191970" d="M1343.7139,-772.4862C1448.43,-743.7875 1761.1184,-658.0915 1877.612,-626.1651"/>
+<polygon fill="#191970" stroke="#191970" points="1878.5686,-629.532 1887.2878,-623.5133 1876.7183,-622.781 1878.5686,-629.532"/>
 </g>
-<!-- Node48&#45;&gt;Node5 -->
+<!-- Node49&#45;&gt;Node5 -->
 <g id="edge133" class="edge">
-<title>Node48&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M2814.7708,-778.4555C2867.7185,-772.9967 2954.4774,-760.4952 2974,-736 3041.5893,-651.1951 3045.7138,-573.3469 2974,-492 2954.2434,-469.5895 2767.949,-455.3208 2669.8233,-449.2965"/>
-<polygon fill="#191970" stroke="#191970" points="2669.9409,-445.7973 2659.748,-448.6879 2669.5188,-452.7846 2669.9409,-445.7973"/>
+<title>Node49&#45;&gt;Node5</title>
+<path fill="none" stroke="#191970" d="M1267.2397,-774.3499C1174.0068,-756.2932 959.6085,-708.8542 993,-660 1055.7949,-568.1264 1393.3304,-486.9968 1528.7423,-457.6596"/>
+<polygon fill="#191970" stroke="#191970" points="1529.4814,-461.0808 1538.5211,-455.5551 1528.0085,-454.2375 1529.4814,-461.0808"/>
 </g>
-<!-- Node48&#45;&gt;Node8 -->
+<!-- Node49&#45;&gt;Node8 -->
 <g id="edge132" class="edge">
-<title>Node48&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M2814.5014,-775.9036C2869.5931,-765.1951 2960,-737.3603 2960,-670 2960,-670 2960,-670 2960,-558 2960,-419.0464 2438.7516,-510.8773 2355,-400 2307.2333,-336.7625 2394.8809,-247.1044 2435.7123,-210.7505"/>
-<polygon fill="#191970" stroke="#191970" points="2438.1904,-213.2333 2443.4251,-204.022 2433.5887,-207.9584 2438.1904,-213.2333"/>
+<title>Node49&#45;&gt;Node8</title>
+<path fill="none" stroke="#191970" d="M1350.6498,-776.0396C1438.1659,-763.6529 1647.6391,-734.7263 1824,-716 1918.6932,-705.9453 2166.4622,-723.8323 2251,-680 2308.6924,-650.0869 2322.7701,-629.0659 2345,-568 2399.3415,-418.7233 2184.3406,-448.4837 2041,-380 2004.7188,-362.666 1991.0701,-366.8726 1958,-344 1908.1091,-309.4934 1905.2389,-289.5394 1863,-246 1851.9082,-234.5667 1839.4268,-221.7109 1829.7091,-211.7038"/>
+<polygon fill="#191970" stroke="#191970" points="1832.0653,-209.1061 1822.5876,-204.3707 1827.0436,-213.9829 1832.0653,-209.1061"/>
 </g>
-<!-- Node48&#45;&gt;Node11 -->
+<!-- Node49&#45;&gt;Node11 -->
 <g id="edge134" class="edge">
-<title>Node48&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M2814.7231,-780.6442C2963.9273,-775.6257 3463.5789,-757.2908 3490,-736 3528.1512,-705.2568 3507.5885,-573.5146 3506,-548 3496.8644,-401.2616 3499.0327,-318.2719 3371,-246 3160.0603,-126.9288 2878.2842,-57.9102 2745.8036,-30.0335"/>
-<polygon fill="#191970" stroke="#191970" points="2746.2613,-26.5537 2735.7573,-27.9384 2744.8321,-33.4063 2746.2613,-26.5537"/>
+<title>Node49&#45;&gt;Node11</title>
+<path fill="none" stroke="#191970" d="M1267.4771,-780.7515C1108.8498,-775.8327 548.424,-757.0299 517,-736 487.2096,-716.0633 487.147,-695.7323 490,-660 502.5968,-502.2343 479.4162,-442.7816 570,-313 627.0822,-231.2169 659.5368,-220.9913 750,-179 971.8402,-76.026 1262.7654,-35.8343 1397.9395,-21.9601"/>
+<polygon fill="#191970" stroke="#191970" points="1398.584,-25.413 1408.1831,-20.9287 1397.8827,-18.4482 1398.584,-25.413"/>
 </g>
-<!-- Node48&#45;&gt;Node16 -->
+<!-- Node49&#45;&gt;Node16 -->
 <g id="edge153" class="edge">
-<title>Node48&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M2814.6063,-781.5201C2997.3787,-778.8733 3720,-762.5559 3720,-670 3720,-670 3720,-670 3720,-133 3720,-101.7875 3719.6648,-87.3519 3696,-67 3662.7641,-38.417 3533.6521,-23.6293 3472.4849,-18.1056"/>
-<polygon fill="#191970" stroke="#191970" points="3472.5043,-14.594 3462.2375,-17.2099 3471.8947,-21.5675 3472.5043,-14.594"/>
+<title>Node49&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M1267.4998,-781.3923C1111.2833,-778.8692 563.9188,-767.8194 493,-736 399.7516,-694.162 190,-492.2041 190,-390 190,-390 190,-390 190,-133 190,-101.7875 189.7859,-86.6952 214,-67 263.2779,-26.9184 459.0435,-18.0178 537.3647,-16.0526"/>
+<polygon fill="#191970" stroke="#191970" points="537.6917,-19.5461 547.6092,-15.8188 537.5319,-12.5479 537.6917,-19.5461"/>
 </g>
-<!-- Node48&#45;&gt;Node18 -->
+<!-- Node49&#45;&gt;Node18 -->
 <g id="edge155" class="edge">
-<title>Node48&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M2731.194,-781.6146C2443.4872,-778.897 765.0846,-761.9694 661,-736 467.3801,-687.6913 377.6031,-643.7558 310,-456 250.7381,-291.4105 293.0112,-224.0809 370,-67 376.6213,-53.4905 387.9728,-41.0657 397.9748,-31.806"/>
-<polygon fill="#191970" stroke="#191970" points="400.3997,-34.3342 405.5907,-25.0982 395.773,-29.0812 400.3997,-34.3342"/>
+<title>Node49&#45;&gt;Node18</title>
+<path fill="none" stroke="#191970" d="M1350.5214,-781.7581C1622.2694,-780.0814 3138.707,-769.2564 3230,-736 3395.9854,-675.5345 3812,-371.1557 3812,-194.5 3812,-194.5 3812,-194.5 3812,-133 3812,-84.4659 3769.2336,-86.9735 3725,-67 3650.0278,-33.1467 3552.6587,-21.3959 3502.7119,-17.4332"/>
+<polygon fill="#191970" stroke="#191970" points="3502.7412,-13.9259 3492.5109,-16.681 3502.2264,-20.907 3502.7412,-13.9259"/>
 </g>
-<!-- Node48&#45;&gt;Node21 -->
+<!-- Node49&#45;&gt;Node21 -->
 <g id="edge135" class="edge">
-<title>Node48&#45;&gt;Node21</title>
-<path fill="none" stroke="#191970" d="M2731.3301,-779.0052C2540.7105,-765.1988 1756.5163,-707.206 1650,-680 1497.028,-640.9284 1438.5079,-632.9263 1337,-512 1281.1337,-445.4465 1265.1532,-426.2059 1237,-344 1230.6291,-325.3972 1227.0814,-303.4035 1225.1525,-286.8047"/>
-<polygon fill="#191970" stroke="#191970" points="1228.624,-286.3488 1224.1053,-276.7659 1221.6618,-287.0751 1228.624,-286.3488"/>
+<title>Node49&#45;&gt;Node21</title>
+<path fill="none" stroke="#191970" d="M1350.7611,-779.9159C1456.8136,-774.3599 1734.452,-758.0979 1824,-736 1846.438,-730.4629 1849.5199,-721.3636 1872,-716 2083.5404,-665.5279 2151.5562,-742.0319 2360,-680 2507.9573,-635.9686 2542.1198,-606.7383 2664,-512 2695.7756,-487.3006 2726,-486.2462 2726,-446 2726,-446 2726,-446 2726,-390 2726,-350.0162 2750.4005,-309.2078 2768.3367,-284.6118"/>
+<polygon fill="#191970" stroke="#191970" points="2771.1388,-286.7089 2774.3608,-276.6159 2765.5479,-282.4968 2771.1388,-286.7089"/>
 </g>
-<!-- Node48&#45;&gt;Node22 -->
+<!-- Node49&#45;&gt;Node22 -->
 <g id="edge150" class="edge">
-<title>Node48&#45;&gt;Node22</title>
-<path fill="none" stroke="#191970" d="M2731.3297,-781.71C2446.5441,-779.6485 797.1907,-766.4081 756,-736 624.3439,-638.8078 642.8634,-542.5221 662,-380 669.1602,-319.1899 663.9161,-299.33 694,-246 717.6644,-204.05 761.8516,-168.0346 788.9246,-148.5376"/>
-<polygon fill="#191970" stroke="#191970" points="791.2333,-151.1927 797.3954,-142.5741 787.2037,-145.4688 791.2333,-151.1927"/>
+<title>Node49&#45;&gt;Node22</title>
+<path fill="none" stroke="#191970" d="M1350.6479,-778.8212C1442.8386,-771.7221 1671.1143,-753.7986 1862,-736 2103.1253,-713.5169 2169.4831,-740.4049 2404,-680 2465.7136,-664.1043 2479.9361,-654.2998 2536,-624 2661.1429,-556.3664 2802,-588.25 2802,-446 2802,-446 2802,-446 2802,-390 2802,-321.1685 2874.9326,-312.9622 2859,-246 2850.4493,-210.0627 2828.5462,-172.5919 2814.5162,-151.101"/>
+<polygon fill="#191970" stroke="#191970" points="2817.3432,-149.0321 2808.8736,-142.6667 2811.5251,-152.9244 2817.3432,-149.0321"/>
 </g>
-<!-- Node48&#45;&gt;Node28 -->
+<!-- Node49&#45;&gt;Node28 -->
 <g id="edge138" class="edge">
-<title>Node48&#45;&gt;Node28</title>
-<path fill="none" stroke="#191970" d="M2814.5745,-779.5831C2962.4296,-770.4418 3454,-735.1507 3454,-670 3454,-670 3454,-670 3454,-614 3454,-509.9392 3503.2897,-475.5186 3462,-380 3428.7056,-302.9775 3405.3793,-280.7446 3329,-246 3281.1303,-224.2243 2946.3386,-205.6887 2790.4817,-198.132"/>
-<polygon fill="#191970" stroke="#191970" points="2790.1842,-194.6137 2780.0274,-197.6286 2789.8474,-201.6056 2790.1842,-194.6137"/>
+<title>Node49&#45;&gt;Node28</title>
+<path fill="none" stroke="#191970" d="M1267.3871,-780.7399C1180.0057,-776.5491 973.0289,-758.4203 822,-680 715.77,-624.8411 693.5223,-554.8179 708,-436 718.5217,-349.6489 688.4917,-302.0701 755,-246 797.1615,-210.4556 1195.343,-217.322 1250,-210 1258.1744,-208.9049 1266.7776,-207.4912 1275.1778,-205.9638"/>
+<polygon fill="#191970" stroke="#191970" points="1276.1028,-209.3511 1285.2808,-204.0582 1274.8054,-202.4724 1276.1028,-209.3511"/>
 </g>
-<!-- Node48&#45;&gt;Node32 -->
-<g id="edge136" class="edge">
-<title>Node48&#45;&gt;Node32</title>
-<path fill="none" stroke="#191970" d="M2731.4892,-781.7053C2449.4335,-779.6234 822.4968,-766.3287 723,-736 581.408,-692.8397 486,-650.024 486,-502 486,-502 486,-502 486,-446 486,-352.6709 509.1274,-329.9032 550,-246 554.7084,-236.3346 561.0408,-226.4065 567.0248,-217.8784"/>
-<polygon fill="#191970" stroke="#191970" points="570.0143,-219.7179 573.0519,-209.5679 564.3476,-215.6082 570.0143,-219.7179"/>
+<!-- Node49&#45;&gt;Node34 -->
+<g id="edge137" class="edge">
+<title>Node49&#45;&gt;Node34</title>
+<path fill="none" stroke="#191970" d="M1350.7238,-780.7151C1516.289,-775.2196 2142.7676,-750.661 2653,-680 2811.6127,-658.0341 2992,-718.1265 2992,-558 2992,-558 2992,-558 2992,-502 2992,-395.5699 2960.7848,-271.3906 2946.2661,-219.3886"/>
+<polygon fill="#191970" stroke="#191970" points="2949.6137,-218.3641 2943.5188,-209.6979 2942.8791,-220.2734 2949.6137,-218.3641"/>
 </g>
-<!-- Node48&#45;&gt;Node33 -->
+<!-- Node49&#45;&gt;Node36 -->
 <g id="edge154" class="edge">
-<title>Node48&#45;&gt;Node33</title>
-<path fill="none" stroke="#191970" d="M2731.4281,-781.6337C2459.0245,-779.1583 933.8379,-764.1191 729,-736 629.4683,-722.3368 578.0569,-753.9019 510,-680 359.1587,-516.204 366.1324,-346.3683 513,-179 526.1714,-163.9901 572.5833,-151.4551 611.2166,-143.2808"/>
-<polygon fill="#191970" stroke="#191970" points="612.268,-146.6379 621.358,-141.1951 610.8579,-139.7813 612.268,-146.6379"/>
+<title>Node49&#45;&gt;Node36</title>
+<path fill="none" stroke="#191970" d="M1350.8038,-781.5845C1592.9841,-779.0793 2810.9166,-765.1087 2975,-736 3094.7722,-714.7522 3220,-735.6423 3220,-614 3220,-614 3220,-614 3220,-446 3220,-356.7109 3193.9551,-335.0107 3201,-246 3203.6147,-212.9646 3210.4649,-175.0009 3214.9204,-152.5592"/>
+<polygon fill="#191970" stroke="#191970" points="3218.3801,-153.1091 3216.9416,-142.6124 3211.5203,-151.7151 3218.3801,-153.1091"/>
 </g>
-<!-- Node48&#45;&gt;Node35 -->
-<g id="edge137" class="edge">
-<title>Node48&#45;&gt;Node35</title>
-<path fill="none" stroke="#191970" d="M2731.353,-781.0786C2610.3646,-778.0994 2248.5524,-767.0495 1950,-736 1785.8861,-718.9321 1743.5042,-718.2503 1583,-680 1505.207,-661.4609 1484.8868,-656.9085 1412,-624 1396.0215,-616.7857 1393.8952,-611.3961 1378,-604 1334.4134,-583.7189 1318.1065,-591.1981 1276,-568 1240.7991,-548.6065 1233.5471,-540.289 1205,-512 1182.3205,-489.5256 1177.4276,-482.7532 1160,-456 1129.7308,-409.5335 1120.1525,-397.3457 1105,-344 1096.8058,-315.1519 1098.7809,-306.9 [...]
-<polygon fill="#191970" stroke="#191970" points="1102.3936,-220.0223 1099.9854,-209.7048 1095.4339,-219.2722 1102.3936,-220.0223"/>
+<!-- Node49&#45;&gt;Node41 -->
+<g id="edge136" class="edge">
+<title>Node49&#45;&gt;Node41</title>
+<path fill="none" stroke="#191970" d="M1350.6941,-781.8504C1620.2437,-780.7751 3108.2026,-773.1678 3196,-736 3261.4081,-708.3104 3282.5288,-689.5002 3310,-624 3359.7279,-505.4329 3307.1752,-346.6461 3283.4026,-286.2346"/>
+<polygon fill="#191970" stroke="#191970" points="3286.5718,-284.7345 3279.5911,-276.7645 3280.078,-287.3482 3286.5718,-284.7345"/>
 </g>
-<!-- Node48&#45;&gt;Node42 -->
+<!-- Node49&#45;&gt;Node43 -->
 <g id="edge152" class="edge">
-<title>Node48&#45;&gt;Node42</title>
-<path fill="none" stroke="#191970" d="M2814.6491,-780.4938C2960.636,-775.0528 3441.7705,-755.6949 3468,-736 3492.9596,-717.2586 3492,-701.2125 3492,-670 3492,-670 3492,-670 3492,-502 3492,-391.1577 3363.433,-308.196 3304.6788,-276.0702"/>
-<polygon fill="#191970" stroke="#191970" points="3306.0174,-272.8169 3295.5495,-271.1815 3302.7128,-278.9878 3306.0174,-272.8169"/>
+<title>Node49&#45;&gt;Node43</title>
+<path fill="none" stroke="#191970" d="M1267.4872,-781.2224C1139.6141,-778.5066 753.0585,-767.8122 632,-736 566.2455,-718.7208 494,-737.9869 494,-670 494,-670 494,-670 494,-614 494,-442.9663 702.8092,-317.0675 780.9502,-275.9413"/>
+<polygon fill="#191970" stroke="#191970" points="782.9633,-278.8403 790.2328,-271.1328 779.7435,-272.6247 782.9633,-278.8403"/>
 </g>
-<!-- Node48&#45;&gt;Node45 -->
+<!-- Node49&#45;&gt;Node46 -->
 <g id="edge151" class="edge">
-<title>Node48&#45;&gt;Node45</title>
-<path fill="none" stroke="#191970" d="M2814.8762,-780.3501C2925.707,-774.9909 3222.0372,-753.8847 3278,-680 3387.4377,-535.5152 3077.4306,-386.8563 2973.004,-342.0581"/>
-<polygon fill="#191970" stroke="#191970" points="2974.1336,-338.7354 2963.5609,-338.0507 2971.399,-345.1792 2974.1336,-338.7354"/>
+<title>Node49&#45;&gt;Node46</title>
+<path fill="none" stroke="#191970" d="M1267.4545,-777.0836C1203.5609,-769.1334 1084.4277,-752.6573 1045,-736 881.7062,-667.0121 722,-679.2687 722,-502 722,-502 722,-502 722,-446 722,-393.834 780.121,-359.4156 819.8073,-341.9944"/>
+<polygon fill="#191970" stroke="#191970" points="821.3509,-345.142 829.2052,-338.0314 818.6309,-338.6921 821.3509,-345.142"/>
 </g>
-<!-- Node49 -->
+<!-- Node50 -->
 <g id="node37" class="node">
-<title>Node49</title>
+<title>Node50</title>
 <g id="a_node37"><a xlink:href="buffer_8h.html" target="_top" xlink:title="Symbolic n&#45;dimensional array, to represent a memory buffer. ">
-<polygon fill="#ffffff" stroke="#000000" points="2542.5,-716.5 2542.5,-735.5 2631.5,-735.5 2631.5,-716.5 2542.5,-716.5"/>
-<text text-anchor="middle" x="2587" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/tir/buffer.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1366.5,-716.5 1366.5,-735.5 1455.5,-735.5 1455.5,-716.5 1366.5,-716.5"/>
+<text text-anchor="middle" x="1411" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/tir/buffer.h</text>
 </a>
 </g>
 </g>
-<!-- Node48&#45;&gt;Node49 -->
+<!-- Node49&#45;&gt;Node50 -->
 <g id="edge139" class="edge">
-<title>Node48&#45;&gt;Node49</title>
-<path fill="none" stroke="#191970" d="M2741.0255,-772.3733C2709.8287,-762.9807 2662.229,-748.6496 2628.2068,-738.4064"/>
-<polygon fill="#191970" stroke="#191970" points="2629.1418,-735.0327 2618.5573,-735.5011 2627.1237,-741.7355 2629.1418,-735.0327"/>
+<title>Node49&#45;&gt;Node50</title>
+<path fill="none" stroke="#191970" d="M1326.767,-772.2455C1342.7095,-763.4928 1366.3259,-750.527 1384.4989,-740.5496"/>
+<polygon fill="#191970" stroke="#191970" points="1386.3552,-743.5233 1393.4366,-735.6427 1382.9863,-737.3873 1386.3552,-743.5233"/>
 </g>
-<!-- Node50 -->
+<!-- Node51 -->
 <g id="node38" class="node">
-<title>Node50</title>
+<title>Node51</title>
 <g id="a_node38"><a xlink:href="var_8h.html" target="_top" xlink:title="Variables in the TIR. ">
-<polygon fill="#ffffff" stroke="#000000" points="3092.5,-660.5 3092.5,-679.5 3169.5,-679.5 3169.5,-660.5 3092.5,-660.5"/>
-<text text-anchor="middle" x="3131" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/tir/var.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1002.5,-660.5 1002.5,-679.5 1079.5,-679.5 1079.5,-660.5 1002.5,-660.5"/>
+<text text-anchor="middle" x="1041" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/tir/var.h</text>
 </a>
 </g>
 </g>
-<!-- Node48&#45;&gt;Node50 -->
+<!-- Node49&#45;&gt;Node51 -->
 <g id="edge149" class="edge">
-<title>Node48&#45;&gt;Node50</title>
-<path fill="none" stroke="#191970" d="M2814.538,-777.7478C2881.1771,-770.4864 3008.6806,-754.6575 3050,-736 3075.6226,-724.4303 3099.909,-702.6791 3115.0859,-687.3149"/>
-<polygon fill="#191970" stroke="#191970" points="3117.7538,-689.5897 3122.1509,-679.9504 3112.7023,-684.7437 3117.7538,-689.5897"/>
+<title>Node49&#45;&gt;Node51</title>
+<path fill="none" stroke="#191970" d="M1286.1505,-772.4509C1238.3856,-752.4895 1127.8681,-706.3031 1073.0397,-683.3897"/>
+<polygon fill="#191970" stroke="#191970" points="1074.368,-680.1515 1063.7917,-679.5249 1071.6688,-686.6102 1074.368,-680.1515"/>
 </g>
-<!-- Node49&#45;&gt;Node3 -->
+<!-- Node50&#45;&gt;Node3 -->
 <g id="edge140" class="edge">
-<title>Node49&#45;&gt;Node3</title>
-<path fill="none" stroke="#191970" d="M2542.2548,-716.6367C2500.432,-707.7363 2436.3087,-693.7095 2381,-680 2310.9545,-662.6377 2230.1898,-640.098 2181.9336,-626.3589"/>
-<polygon fill="#191970" stroke="#191970" points="2182.7219,-622.9441 2172.1453,-623.5657 2180.801,-629.6754 2182.7219,-622.9441"/>
+<title>Node50&#45;&gt;Node3</title>
+<path fill="none" stroke="#191970" d="M1454.5676,-716.4509C1549.1877,-695.7123 1772.9582,-646.6667 1872.6246,-624.822"/>
+<polygon fill="#191970" stroke="#191970" points="1873.4251,-628.2297 1882.4438,-622.6698 1871.9263,-621.392 1873.4251,-628.2297"/>
 </g>
-<!-- Node49&#45;&gt;Node16 -->
+<!-- Node50&#45;&gt;Node16 -->
 <g id="edge148" class="edge">
-<title>Node49&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M2631.8527,-725.5579C2751.915,-723.8939 3078.3176,-716.0843 3179,-680 3258.8385,-651.3861 3428.5051,-516.4425 3488,-456 3530.3753,-412.9498 3536.9486,-397.4986 3565,-344 3598.6454,-279.8329 3630,-266.953 3630,-194.5 3630,-194.5 3630,-194.5 3630,-133 3630,-59.7342 3526.5415,-30.6153 3472.3116,-20.3846"/>
-<polygon fill="#191970" stroke="#191970" points="3472.6253,-16.8856 3462.1673,-18.5828 3471.4011,-23.7778 3472.6253,-16.8856"/>
+<title>Node50&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M1366.3657,-721.8537C1289.8184,-714.5717 1128.6346,-698.4905 993,-680 839.5182,-659.0764 793.3086,-680.2983 649,-624 430.6512,-538.8168 266,-495.8766 266,-261.5 266,-261.5 266,-261.5 266,-133 266,-98.2309 279.2858,-86.6057 308,-67 345.0183,-41.7245 475.6221,-25.2471 537.2927,-18.6992"/>
+<polygon fill="#191970" stroke="#191970" points="538.0351,-22.141 547.6204,-17.6273 537.3125,-15.1784 538.0351,-22.141"/>
 </g>
-<!-- Node49&#45;&gt;Node21 -->
+<!-- Node50&#45;&gt;Node21 -->
 <g id="edge141" class="edge">
-<title>Node49&#45;&gt;Node21</title>
-<path fill="none" stroke="#191970" d="M2563.1486,-716.4962C2501.8917,-692.5826 2333.5511,-629.9765 2187,-604 2043.2437,-578.5188 1664.3744,-627.3839 1531,-568 1458.6332,-535.7793 1297.7113,-350.1429 1242.2369,-284.4948"/>
-<polygon fill="#191970" stroke="#191970" points="1244.8328,-282.1438 1235.7129,-276.7514 1239.4795,-286.6541 1244.8328,-282.1438"/>
+<title>Node50&#45;&gt;Node21</title>
+<path fill="none" stroke="#191970" d="M1455.5066,-725.0214C1618.3018,-721.2425 2175.8375,-706.4769 2251,-680 2412.0062,-623.2835 2431.7552,-565.1538 2563,-456 2633.5694,-397.3088 2640.8197,-370.9488 2712,-313 2725.3639,-302.1203 2740.9591,-291.1601 2754.4565,-282.1641"/>
+<polygon fill="#191970" stroke="#191970" points="2756.5486,-284.9773 2762.9787,-276.5567 2752.701,-279.1296 2756.5486,-284.9773"/>
 </g>
-<!-- Node49&#45;&gt;Node35 -->
+<!-- Node50&#45;&gt;Node34 -->
 <g id="edge142" class="edge">
-<title>Node49&#45;&gt;Node35</title>
-<path fill="none" stroke="#191970" d="M2542.4537,-725.3888C2380.6611,-722.9239 1824.4709,-712.2472 1650,-680 1640.17,-678.1831 1316.3385,-573.5136 1308,-568 1199.1065,-495.9974 1168.4933,-464.3852 1118,-344 1100.8252,-303.0522 1099.4106,-250.512 1100.3947,-219.8658"/>
-<polygon fill="#191970" stroke="#191970" points="1103.9021,-219.7707 1100.8411,-209.6277 1096.9087,-219.4657 1103.9021,-219.7707"/>
+<title>Node50&#45;&gt;Node34</title>
+<path fill="none" stroke="#191970" d="M1455.6488,-725.1708C1610.8807,-722.0522 2126.4512,-709.6583 2289,-680 2409.9215,-657.9369 2725.4076,-595.0771 2816,-512 2904.1815,-431.1337 2929.812,-279.6687 2936.6789,-219.7902"/>
+<polygon fill="#191970" stroke="#191970" points="2940.1733,-220.0279 2937.7536,-209.7131 2933.2128,-219.2855 2940.1733,-220.0279"/>
 </g>
-<!-- Node49&#45;&gt;Node50 -->
+<!-- Node50&#45;&gt;Node51 -->
 <g id="edge143" class="edge">
-<title>Node49&#45;&gt;Node50</title>
-<path fill="none" stroke="#191970" d="M2631.5178,-721.4173C2732.3277,-711.0398 2977.4109,-685.8106 3082.1856,-675.025"/>
-<polygon fill="#191970" stroke="#191970" points="3082.5862,-678.5024 3092.1752,-673.9967 3081.8693,-671.5392 3082.5862,-678.5024"/>
+<title>Node50&#45;&gt;Node51</title>
+<path fill="none" stroke="#191970" d="M1366.3694,-719.2451C1296.5721,-708.6812 1162.107,-688.3297 1089.8179,-677.3887"/>
+<polygon fill="#191970" stroke="#191970" points="1090.0298,-673.8809 1079.6186,-675.845 1088.9822,-680.8021 1090.0298,-673.8809"/>
 </g>
-<!-- Node50&#45;&gt;Node3 -->
+<!-- Node51&#45;&gt;Node3 -->
 <g id="edge144" class="edge">
-<title>Node50&#45;&gt;Node3</title>
-<path fill="none" stroke="#191970" d="M3092.4169,-667.8219C2937.7198,-659.089 2362.3961,-626.6111 2188.8638,-616.8149"/>
-<polygon fill="#191970" stroke="#191970" points="2188.9202,-613.3126 2178.7388,-616.2433 2188.5256,-620.3015 2188.9202,-613.3126"/>
+<title>Node51&#45;&gt;Node3</title>
+<path fill="none" stroke="#191970" d="M1079.7066,-667.5396C1221.5739,-658.522 1713.0555,-627.2814 1871.9954,-617.1785"/>
+<polygon fill="#191970" stroke="#191970" points="1872.6585,-620.6435 1882.4163,-616.5161 1872.2144,-613.6576 1872.6585,-620.6435"/>
 </g>
-<!-- Node50&#45;&gt;Node5 -->
+<!-- Node51&#45;&gt;Node5 -->
 <g id="edge145" class="edge">
-<title>Node50&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M3127.777,-660.1109C3117.0887,-629.0761 3079.5953,-533.2309 3012,-492 2983.4161,-474.5648 2774.4474,-457.5859 2669.6239,-450.0537"/>
-<polygon fill="#191970" stroke="#191970" points="2669.7326,-446.5527 2659.5091,-449.333 2669.235,-453.535 2669.7326,-446.5527"/>
+<title>Node51&#45;&gt;Node5</title>
+<path fill="none" stroke="#191970" d="M1064.375,-660.375C1150.7769,-624.7977 1452.2651,-500.6555 1552.3945,-459.4258"/>
+<polygon fill="#191970" stroke="#191970" points="1553.7979,-462.6331 1561.7121,-455.5891 1551.1327,-456.1603 1553.7979,-462.6331"/>
 </g>
-<!-- Node50&#45;&gt;Node16 -->
+<!-- Node51&#45;&gt;Node16 -->
 <g id="edge147" class="edge">
-<title>Node50&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M3145.0941,-660.3523C3176.3562,-639.0973 3254.1162,-587.0225 3322,-548 3352.3302,-530.5649 3363.645,-532.4913 3392,-512 3473.6115,-453.0218 3498.3905,-433.7699 3544,-344 3575.61,-281.7844 3592,-264.2852 3592,-194.5 3592,-194.5 3592,-194.5 3592,-133 3592,-101.7875 3589.695,-89.4399 3568,-67 3542.1986,-40.3127 3500.7299,-27.0636 3472.017,-20.7626"/>
-<polygon fill="#191970" stroke="#191970" points="3472.5646,-17.3025 3462.0683,-18.7436 3471.1723,-24.1627 3472.5646,-17.3025"/>
+<title>Node51&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M1002.4448,-668.6501C939.5171,-665.5726 811.3832,-655.6336 708,-624 654.0207,-607.4832 640.0552,-600.6418 594,-568 422.5362,-446.4743 304,-404.6627 304,-194.5 304,-194.5 304,-194.5 304,-133 304,-101.7875 304.4491,-87.4836 328,-67 359.0457,-39.9978 479.1503,-24.5685 537.6342,-18.5128"/>
+<polygon fill="#191970" stroke="#191970" points="538.2023,-21.9734 547.8019,-17.4905 537.5019,-15.0085 538.2023,-21.9734"/>
 </g>
-<!-- Node50&#45;&gt;Node28 -->
+<!-- Node51&#45;&gt;Node28 -->
 <g id="edge146" class="edge">
-<title>Node50&#45;&gt;Node28</title>
-<path fill="none" stroke="#191970" d="M3140.9328,-660.4294C3177.4284,-624.841 3302,-499.451 3302,-446 3302,-446 3302,-446 3302,-390 3302,-325.9614 3350.2891,-293.191 3307,-246 3272.7711,-208.6858 2944.8169,-198.3361 2790.5173,-195.5226"/>
-<polygon fill="#191970" stroke="#191970" points="2790.222,-192.017 2780.162,-195.3404 2790.0988,-199.0159 2790.222,-192.017"/>
+<title>Node51&#45;&gt;Node28</title>
+<path fill="none" stroke="#191970" d="M1026.536,-660.4567C954.7576,-612.0237 645.5041,-390.0888 779,-246 814.671,-207.4986 1197.9917,-217.0648 1250,-210 1258.1723,-208.8899 1266.7745,-207.468 1275.1741,-205.9371"/>
+<polygon fill="#191970" stroke="#191970" points="1276.1001,-209.3242 1285.2769,-204.0292 1274.8011,-202.4457 1276.1001,-209.3242"/>
 </g>
-<!-- Node51&#45;&gt;Node1 -->
+<!-- Node52&#45;&gt;Node1 -->
 <g id="edge159" class="edge">
-<title>Node51&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M1685,-940.4116C1685,-921.0538 1685,-875.9167 1685,-838 1685,-838 1685,-838 1685,-782 1685,-740.665 1565.3439,-701.4093 1496.4344,-682.2294"/>
-<polygon fill="#191970" stroke="#191970" points="1497.2255,-678.8172 1486.6559,-679.5474 1495.3739,-685.5679 1497.2255,-678.8172"/>
+<title>Node52&#45;&gt;Node1</title>
+<path fill="none" stroke="#191970" d="M1972.555,-946.7121C2122.7897,-935.8969 2570,-898.6123 2570,-838 2570,-838 2570,-838 2570,-782 2570,-747.9677 2584.5515,-710.5293 2594.6151,-688.7067"/>
+<polygon fill="#191970" stroke="#191970" points="2597.819,-690.1198 2598.9832,-679.5891 2591.5061,-687.0954 2597.819,-690.1198"/>
 </g>
-<!-- Node51&#45;&gt;Node3 -->
+<!-- Node52&#45;&gt;Node3 -->
 <g id="edge160" class="edge">
-<title>Node51&#45;&gt;Node3</title>
-<path fill="none" stroke="#191970" d="M1698.0977,-940.3065C1761.6539,-893.2694 2038.0963,-688.6776 2117.5625,-629.8656"/>
-<polygon fill="#191970" stroke="#191970" points="2119.8932,-632.4951 2125.8491,-623.7328 2115.7289,-626.8684 2119.8932,-632.4951"/>
+<title>Node52&#45;&gt;Node3</title>
+<path fill="none" stroke="#191970" d="M1936.5499,-940.4082C1958.136,-922.7155 2000,-882.6472 2000,-838 2000,-838 2000,-838 2000,-782 2000,-722.5498 1959.3209,-661.3492 1936.717,-631.9312"/>
+<polygon fill="#191970" stroke="#191970" points="1939.2896,-629.5412 1930.3474,-623.859 1933.7943,-633.8774 1939.2896,-629.5412"/>
 </g>
-<!-- Node51&#45;&gt;Node16 -->
+<!-- Node52&#45;&gt;Node16 -->
 <g id="edge212" class="edge">
-<title>Node51&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1733.6289,-948.9948C2044.1965,-942.4133 3740.0646,-903.9953 3833,-848 3862.1839,-830.4162 3872,-816.0718 3872,-782 3872,-782 3872,-782 3872,-133 3872,-98.6999 3860.723,-85.7479 3832,-67 3772.8041,-28.362 3555.1047,-18.5603 3472.2784,-16.2049"/>
-<polygon fill="#191970" stroke="#191970" points="3472.2786,-12.7038 3462.189,-15.9363 3472.0922,-19.7013 3472.2786,-12.7038"/>
+<title>Node52&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M1875.2903,-949.3018C1620.575,-945.5609 447.3908,-927.1913 287,-904 173.6901,-887.6162 38,-952.4882 38,-838 38,-838 38,-838 38,-133 38,-98.4675 49.7369,-85.3349 79,-67 117.8451,-42.6614 434.6472,-23.0365 537.724,-17.2435"/>
+<polygon fill="#191970" stroke="#191970" points="538.0524,-20.7308 547.8426,-16.6809 537.6637,-13.7416 538.0524,-20.7308"/>
 </g>
-<!-- Node51&#45;&gt;Node18 -->
+<!-- Node52&#45;&gt;Node18 -->
 <g id="edge213" class="edge">
-<title>Node51&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M1636.3884,-949.3772C1360.1151,-945.5265 0,-922.2893 0,-838 0,-838 0,-838 0,-133 0,-88.9305 34.0992,-85.7096 74,-67 128.9787,-41.2203 309.8733,-24.162 384.9193,-18.0321"/>
-<polygon fill="#191970" stroke="#191970" points="385.5082,-21.4962 395.196,-17.2072 384.948,-14.5186 385.5082,-21.4962"/>
+<title>Node52&#45;&gt;Node18</title>
+<path fill="none" stroke="#191970" d="M1972.5486,-949.8429C2274.9883,-948.5549 3888,-937.0426 3888,-838 3888,-838 3888,-838 3888,-133 3888,-86.2171 3848.8137,-85.8581 3806,-67 3751.8215,-43.1361 3576.1868,-25.0452 3502.7492,-18.3361"/>
+<polygon fill="#191970" stroke="#191970" points="3502.956,-14.8407 3492.6823,-17.4295 3502.3281,-21.8124 3502.956,-14.8407"/>
 </g>
-<!-- Node51&#45;&gt;Node30 -->
+<!-- Node52&#45;&gt;Node30 -->
 <g id="edge210" class="edge">
-<title>Node51&#45;&gt;Node30</title>
-<path fill="none" stroke="#191970" d="M1679.9357,-940.2905C1667.5853,-917.5036 1633.7012,-860.1044 1590,-828 1371.2522,-667.3001 1018,-885.4315 1018,-614 1018,-614 1018,-614 1018,-558 1018,-422.7452 1463.7069,-254.8199 1597.4832,-207.4642"/>
-<polygon fill="#191970" stroke="#191970" points="1599.0201,-210.6337 1607.2901,-204.0113 1596.6953,-204.0311 1599.0201,-210.6337"/>
+<title>Node52&#45;&gt;Node30</title>
+<path fill="none" stroke="#191970" d="M1875.1726,-949.1498C1591.1749,-943.9721 162.5047,-914.6623 100,-848 22.31,-765.1423 98.0542,-686.6171 176,-604 375.6435,-392.3916 448.5379,-339.5749 724,-246 805.5824,-218.2863 1063.9589,-202.0891 1166.4823,-196.6121"/>
+<polygon fill="#191970" stroke="#191970" points="1166.6782,-200.1067 1176.4803,-196.0857 1166.3101,-193.1164 1166.6782,-200.1067"/>
 </g>
-<!-- Node51&#45;&gt;Node47 -->
+<!-- Node52&#45;&gt;Node48 -->
 <g id="edge214" class="edge">
-<title>Node51&#45;&gt;Node47</title>
-<path fill="none" stroke="#191970" d="M1733.517,-945.9808C1940.5691,-928.8286 2749.9783,-861.7769 2977.3188,-842.944"/>
-<polygon fill="#191970" stroke="#191970" points="2977.7073,-846.4239 2987.3842,-842.1102 2977.1294,-839.4478 2977.7073,-846.4239"/>
+<title>Node52&#45;&gt;Node48</title>
+<path fill="none" stroke="#191970" d="M1875.4022,-947.0682C1761.1955,-940.1242 1466.8023,-921.9089 1221,-904 935.3667,-883.1891 594.219,-854.6027 458.7188,-843.0993"/>
+<polygon fill="#191970" stroke="#191970" points="458.8124,-839.5947 448.552,-842.2355 458.2197,-846.5696 458.8124,-839.5947"/>
 </g>
-<!-- Node52 -->
+<!-- Node53 -->
 <g id="node40" class="node">
-<title>Node52</title>
+<title>Node53</title>
 <g id="a_node40"><a xlink:href="ir_2module_8h.html" target="_top" xlink:title="IRModule that holds the functions and type definitions. ">
-<polygon fill="#ffffff" stroke="#000000" points="911.5,-772.5 911.5,-791.5 1006.5,-791.5 1006.5,-772.5 911.5,-772.5"/>
-<text text-anchor="middle" x="959" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/module.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="2754.5,-772.5 2754.5,-791.5 2849.5,-791.5 2849.5,-772.5 2754.5,-772.5"/>
+<text text-anchor="middle" x="2802" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/module.h</text>
 </a>
 </g>
 </g>
-<!-- Node51&#45;&gt;Node52 -->
+<!-- Node52&#45;&gt;Node53 -->
 <g id="edge161" class="edge">
-<title>Node51&#45;&gt;Node52</title>
-<path fill="none" stroke="#191970" d="M1636.0939,-942.2436C1584.7905,-933.8501 1501.9118,-919.5634 1431,-904 1271.6851,-869.0344 1084.7557,-817.5767 1002.0679,-794.2711"/>
-<polygon fill="#191970" stroke="#191970" points="1002.8499,-790.8551 992.275,-791.5052 1000.9471,-797.5916 1002.8499,-790.8551"/>
+<title>Node52&#45;&gt;Node53</title>
+<path fill="none" stroke="#191970" d="M1972.8351,-949.3563C2105.3701,-947.1722 2469.5287,-938.1468 2584,-904 2662.544,-880.5703 2743.9257,-825.2469 2781.1514,-797.8875"/>
+<polygon fill="#191970" stroke="#191970" points="2783.7048,-800.3499 2789.6356,-791.5706 2779.5244,-794.7353 2783.7048,-800.3499"/>
 </g>
-<!-- Node60 -->
+<!-- Node61 -->
 <g id="node45" class="node">
-<title>Node60</title>
+<title>Node61</title>
 <g id="a_node45"><a xlink:href="ir_2op_8h.html" target="_top" xlink:title="Primitive operators(builtin intrinsics) and registry for them. ">
-<polygon fill="#ffffff" stroke="#ff0000" points="1440,-884.5 1440,-903.5 1510,-903.5 1510,-884.5 1440,-884.5"/>
-<text text-anchor="middle" x="1475" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/op.h</text>
+<polygon fill="#ffffff" stroke="#ff0000" points="1889,-884.5 1889,-903.5 1959,-903.5 1959,-884.5 1889,-884.5"/>
+<text text-anchor="middle" x="1924" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/op.h</text>
 </a>
 </g>
 </g>
-<!-- Node51&#45;&gt;Node60 -->
+<!-- Node52&#45;&gt;Node61 -->
 <g id="edge193" class="edge">
-<title>Node51&#45;&gt;Node60</title>
-<path fill="none" stroke="#191970" d="M1648.8997,-940.3733C1613.2676,-930.8714 1558.6824,-916.3153 1520.1887,-906.0503"/>
-<polygon fill="#191970" stroke="#191970" points="1520.8439,-902.6028 1510.2797,-903.4079 1519.0402,-909.3664 1520.8439,-902.6028"/>
+<title>Node52&#45;&gt;Node61</title>
+<path fill="none" stroke="#191970" d="M1924,-940.2455C1924,-932.9382 1924,-922.6944 1924,-913.7046"/>
+<polygon fill="#191970" stroke="#191970" points="1927.5001,-913.6426 1924,-903.6427 1920.5001,-913.6427 1927.5001,-913.6426"/>
 </g>
-<!-- Node67 -->
+<!-- Node68 -->
 <g id="node49" class="node">
-<title>Node67</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="1575.5,-884.5 1575.5,-903.5 1618.5,-903.5 1618.5,-884.5 1575.5,-884.5"/>
-<text text-anchor="middle" x="1597" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">stack</text>
+<title>Node68</title>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="2028.5,-884.5 2028.5,-903.5 2071.5,-903.5 2071.5,-884.5 2028.5,-884.5"/>
+<text text-anchor="middle" x="2050" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">stack</text>
 </g>
-<!-- Node51&#45;&gt;Node67 -->
+<!-- Node52&#45;&gt;Node68 -->
 <g id="edge211" class="edge">
-<title>Node51&#45;&gt;Node67</title>
-<path fill="none" stroke="#191970" d="M1669.6716,-940.2455C1656.1697,-931.6534 1636.2878,-919.0014 1620.7314,-909.1018"/>
-<polygon fill="#191970" stroke="#191970" points="1622.4685,-906.0587 1612.1528,-903.6427 1618.7103,-911.9643 1622.4685,-906.0587"/>
+<title>Node52&#45;&gt;Node68</title>
+<path fill="none" stroke="#191970" d="M1945.6602,-940.3733C1965.9772,-931.3435 1996.564,-917.7494 2019.375,-907.6111"/>
+<polygon fill="#191970" stroke="#191970" points="2020.9059,-910.7609 2028.6225,-903.5011 2018.0628,-904.3642 2020.9059,-910.7609"/>
 </g>
-<!-- Node68 -->
+<!-- Node69 -->
 <g id="node50" class="node">
-<title>Node68</title>
+<title>Node69</title>
 <g id="a_node50"><a xlink:href="relay_2type_8h.html" target="_top" xlink:title="Relay typed AST nodes. ">
-<polygon fill="#ffffff" stroke="#ff0000" points="1848.5,-884.5 1848.5,-903.5 1901.5,-903.5 1901.5,-884.5 1848.5,-884.5"/>
-<text text-anchor="middle" x="1875" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">./type.h</text>
+<polygon fill="#ffffff" stroke="#ff0000" points="1230.5,-884.5 1230.5,-903.5 1283.5,-903.5 1283.5,-884.5 1230.5,-884.5"/>
+<text text-anchor="middle" x="1257" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">./type.h</text>
 </a>
 </g>
 </g>
-<!-- Node51&#45;&gt;Node68 -->
+<!-- Node52&#45;&gt;Node69 -->
 <g id="edge215" class="edge">
-<title>Node51&#45;&gt;Node68</title>
-<path fill="none" stroke="#191970" d="M1717.6622,-940.3733C1751.2681,-930.4684 1803.5074,-915.0715 1838.4653,-904.7681"/>
-<polygon fill="#191970" stroke="#191970" points="1839.6753,-908.0604 1848.2779,-901.876 1837.6963,-901.346 1839.6753,-908.0604"/>
+<title>Node52&#45;&gt;Node69</title>
+<path fill="none" stroke="#191970" d="M1875.4937,-945.9275C1748.2927,-935.248 1407.1407,-906.6055 1294.0172,-897.1079"/>
+<polygon fill="#191970" stroke="#191970" points="1294.0542,-893.5988 1283.7965,-896.2498 1293.4685,-900.5742 1294.0542,-893.5988"/>
 </g>
-<!-- Node52&#45;&gt;Node3 -->
+<!-- Node53&#45;&gt;Node3 -->
 <g id="edge170" class="edge">
-<title>Node52&#45;&gt;Node3</title>
-<path fill="none" stroke="#191970" d="M1006.7957,-781.3548C1116.3782,-779.2953 1393.9389,-770.7759 1623,-736 1801.59,-708.8866 2009.574,-651.657 2096.957,-626.4116"/>
-<polygon fill="#191970" stroke="#191970" points="2098.1314,-629.7153 2106.76,-623.5672 2096.1807,-622.9925 2098.1314,-629.7153"/>
+<title>Node53&#45;&gt;Node3</title>
+<path fill="none" stroke="#191970" d="M2754.4431,-777.9079C2642.1204,-767.5995 2352.0861,-737.2152 2116,-680 2100.4086,-676.2214 2010.4776,-645.0021 1958.7052,-626.8868"/>
+<polygon fill="#191970" stroke="#191970" points="1959.7956,-623.5603 1949.2007,-623.5584 1957.4819,-630.1669 1959.7956,-623.5603"/>
 </g>
-<!-- Node52&#45;&gt;Node16 -->
+<!-- Node53&#45;&gt;Node16 -->
 <g id="edge189" class="edge">
-<title>Node52&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1006.5167,-781.1515C1244.6952,-776.8292 2310.2675,-756.6585 2641,-736 2896.3823,-720.0481 2968.123,-750.8454 3214,-680 3437.4601,-615.6137 3682,-678.5511 3682,-446 3682,-446 3682,-446 3682,-133 3682,-91.8295 3652.3527,-88.0997 3617,-67 3570.9778,-39.5324 3509.4225,-25.9629 3472.3518,-19.8625"/>
-<polygon fill="#191970" stroke="#191970" points="3472.5479,-16.3509 3462.128,-18.2681 3471.4693,-23.2673 3472.5479,-16.3509"/>
+<title>Node53&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M2754.4366,-781.5602C2487.0455,-778.7931 1168.9279,-761.1823 772,-680 637.785,-652.5495 228,-526.9935 228,-390 228,-390 228,-390 228,-133 228,-95.9295 247.2815,-86.1874 279,-67 322.2471,-40.8386 471.3022,-24.4408 537.6763,-18.2745"/>
+<polygon fill="#191970" stroke="#191970" points="538.318,-21.7307 547.9602,-17.3399 537.6844,-14.7594 538.318,-21.7307"/>
 </g>
-<!-- Node52&#45;&gt;Node20 -->
+<!-- Node53&#45;&gt;Node20 -->
 <g id="edge192" class="edge">
-<title>Node52&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M963.587,-772.3931C967.6931,-763.2646 973.4474,-749.0343 976,-736 986.4262,-682.7599 980,-668.2514 980,-614 980,-614 980,-614 980,-558 980,-444.828 1064.6806,-443.8245 1118,-344 1139.6528,-303.4617 1119.1743,-279.156 1151,-246 1181.9796,-213.7254 1203.397,-226.4491 1245,-210 1278.9242,-196.5869 1286.6977,-191.4144 1321,-179 1341.6566,-171.5242 1396.6988,-154.339 1432.713,-143.2206"/>
-<polygon fill="#191970" stroke="#191970" points="1433.7967,-146.5492 1442.3219,-140.2586 1431.7346,-139.8598 1433.7967,-146.5492"/>
+<title>Node53&#45;&gt;Node20</title>
+<path fill="none" stroke="#191970" d="M2754.2529,-781.1119C2463.105,-774.4766 932.8724,-721.7349 742,-344 730.559,-321.3583 749.7692,-251.074 755,-246 771.6452,-229.8539 1143.985,-181.8402 1167,-179 1359.3721,-155.2603 1591.5469,-140.0943 1677.1705,-134.9534"/>
+<polygon fill="#191970" stroke="#191970" points="1677.5634,-138.4363 1687.338,-134.3489 1677.1479,-131.4487 1677.5634,-138.4363"/>
 </g>
-<!-- Node52&#45;&gt;Node21 -->
+<!-- Node53&#45;&gt;Node21 -->
 <g id="edge186" class="edge">
-<title>Node52&#45;&gt;Node21</title>
-<path fill="none" stroke="#191970" d="M911.0702,-776.553C858.4834,-769.6632 778.5312,-756.2058 756,-736 713.3075,-697.7137 714,-671.3454 714,-614 714,-614 714,-614 714,-502 714,-406.1971 1012.5032,-316.0847 1152.3219,-279.1309"/>
-<polygon fill="#191970" stroke="#191970" points="1153.3242,-282.4864 1162.1083,-276.5627 1151.5474,-275.7157 1153.3242,-282.4864"/>
+<title>Node53&#45;&gt;Node21</title>
+<path fill="none" stroke="#191970" d="M2849.7317,-781.3186C2941.5639,-779.2246 3138.817,-770.6992 3196,-736 3221.7142,-720.3964 3225.1659,-708.7515 3234,-680 3297.9676,-471.8097 2973.2664,-328.8116 2841.0198,-279.9978"/>
+<polygon fill="#191970" stroke="#191970" points="2842.056,-276.6502 2831.4621,-276.5105 2839.6566,-283.2262 2842.056,-276.6502"/>
 </g>
-<!-- Node52&#45;&gt;Node32 -->
-<g id="edge187" class="edge">
-<title>Node52&#45;&gt;Node32</title>
-<path fill="none" stroke="#191970" d="M911.2416,-781.3606C793.1377,-779.2606 490.1299,-770.5644 396,-736 348.7616,-718.6541 304,-720.3224 304,-670 304,-670 304,-670 304,-558 304,-398.7921 352.4987,-341.3445 480,-246 497.179,-233.1537 518.062,-222.1392 536.6659,-213.6326"/>
-<polygon fill="#191970" stroke="#191970" points="538.1561,-216.8004 545.8712,-209.539 535.3118,-210.4043 538.1561,-216.8004"/>
+<!-- Node53&#45;&gt;Node34 -->
+<g id="edge188" class="edge">
+<title>Node53&#45;&gt;Node34</title>
+<path fill="none" stroke="#191970" d="M2849.951,-780.73C2988.5151,-776.7518 3382.8658,-763.148 3434,-736 3466.9836,-718.4885 3486,-707.3439 3486,-670 3486,-670 3486,-670 3486,-390 3486,-378.8035 3355.0274,-250.9812 3345,-246 3288.1714,-217.7701 3112.9986,-203.8625 3012.288,-198.0339"/>
+<polygon fill="#191970" stroke="#191970" points="3012.365,-194.5328 3002.1831,-197.4617 3011.9692,-201.5216 3012.365,-194.5328"/>
 </g>
-<!-- Node52&#45;&gt;Node33 -->
+<!-- Node53&#45;&gt;Node36 -->
 <g id="edge190" class="edge">
-<title>Node52&#45;&gt;Node33</title>
-<path fill="none" stroke="#191970" d="M911.1297,-781.0954C772.8299,-778.1227 379.4601,-767.0044 331,-736 283.8943,-705.8621 228,-595.8414 228,-502 228,-502 228,-502 228,-261.5 228,-182.5307 492.4497,-148.7729 611.3166,-137.5879"/>
-<polygon fill="#191970" stroke="#191970" points="611.6915,-141.0683 621.3289,-136.6669 611.0503,-134.0978 611.6915,-141.0683"/>
+<title>Node53&#45;&gt;Node36</title>
+<path fill="none" stroke="#191970" d="M2849.723,-781.1324C2992.6445,-778.1956 3410.5963,-767.0197 3463,-736 3488.4617,-720.9283 3484.8004,-705.9582 3499,-680 3578.9827,-533.7838 3627.7499,-471.4246 3576,-313 3535.9467,-190.3828 3365.9156,-150.9333 3275.7232,-138.5197"/>
+<polygon fill="#191970" stroke="#191970" points="3276.033,-135.0304 3265.663,-137.2017 3275.1236,-141.9711 3276.033,-135.0304"/>
 </g>
-<!-- Node52&#45;&gt;Node35 -->
-<g id="edge188" class="edge">
-<title>Node52&#45;&gt;Node35</title>
-<path fill="none" stroke="#191970" d="M911.1125,-778.6132C805.5226,-769.8306 562,-741.7929 562,-670 562,-670 562,-670 562,-614 562,-523.7657 676,-536.2343 676,-446 676,-446 676,-446 676,-390 676,-298.9052 772.3286,-329.1771 847,-277 866.0178,-263.7112 867.975,-255.8093 889,-246 933.2066,-225.3752 986.5642,-212.4914 1028.8162,-204.7681"/>
-<polygon fill="#191970" stroke="#191970" points="1029.5168,-208.1986 1038.7535,-203.0088 1028.2964,-201.3058 1029.5168,-208.1986"/>
+<!-- Node53&#45;&gt;Node41 -->
+<g id="edge187" class="edge">
+<title>Node53&#45;&gt;Node41</title>
+<path fill="none" stroke="#191970" d="M2849.6974,-780.2001C2991.144,-774.6337 3399.6805,-756.8135 3419,-736 3425.0472,-729.4851 3419.2529,-724.8853 3419,-716 3416.9992,-645.6924 3410,-628.3361 3410,-558 3410,-558 3410,-558 3410,-390 3410,-338.7206 3358.3075,-301.9539 3318.428,-281.2192"/>
+<polygon fill="#191970" stroke="#191970" points="3319.8615,-278.0227 3309.3538,-276.6664 3316.7223,-284.2793 3319.8615,-278.0227"/>
 </g>
-<!-- Node52&#45;&gt;Node46 -->
+<!-- Node53&#45;&gt;Node47 -->
 <g id="edge179" class="edge">
-<title>Node52&#45;&gt;Node46</title>
-<path fill="none" stroke="#191970" d="M1006.7092,-779.0748C1155.2151,-769.4587 1607.3401,-736.1847 1742,-680 1801.8571,-655.0256 1859.0529,-602.1022 1885.9611,-574.9088"/>
-<polygon fill="#191970" stroke="#191970" points="1888.5504,-577.2667 1893.0176,-567.6597 1883.5344,-572.384 1888.5504,-577.2667"/>
+<title>Node53&#45;&gt;Node47</title>
+<path fill="none" stroke="#191970" d="M2754.2087,-780.1416C2662.5051,-776.0495 2455.7108,-764.2753 2284,-736 2179.7633,-718.8356 2154.7985,-708.2305 2053,-680 1972.6736,-657.7241 1951.6605,-654.2885 1874,-624 1833.9146,-608.3662 1789.2036,-586.4692 1761.3354,-572.26"/>
+<polygon fill="#191970" stroke="#191970" points="1762.7103,-569.0316 1752.2157,-567.5776 1759.5129,-575.2588 1762.7103,-569.0316"/>
 </g>
-<!-- Node53 -->
+<!-- Node54 -->
 <g id="node41" class="node">
-<title>Node53</title>
+<title>Node54</title>
 <g id="a_node41"><a xlink:href="ir_2adt_8h.html" target="_top" xlink:title="Algebraic data type definitions. ">
-<polygon fill="#ffffff" stroke="#ff0000" points="1659,-660.5 1659,-679.5 1733,-679.5 1733,-660.5 1659,-660.5"/>
-<text text-anchor="middle" x="1696" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/adt.h</text>
+<polygon fill="#ffffff" stroke="#ff0000" points="2168,-660.5 2168,-679.5 2242,-679.5 2242,-660.5 2168,-660.5"/>
+<text text-anchor="middle" x="2205" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/adt.h</text>
 </a>
 </g>
 </g>
-<!-- Node52&#45;&gt;Node53 -->
+<!-- Node53&#45;&gt;Node54 -->
 <g id="edge162" class="edge">
-<title>Node52&#45;&gt;Node53</title>
-<path fill="none" stroke="#191970" d="M1006.5059,-774.7806C1139.6278,-754.5505 1515.242,-697.4693 1648.4353,-677.2283"/>
-<polygon fill="#191970" stroke="#191970" points="1649.3528,-680.6291 1658.7134,-675.6664 1648.301,-673.7086 1649.3528,-680.6291"/>
+<title>Node53&#45;&gt;Node54</title>
+<path fill="none" stroke="#191970" d="M2781.1735,-772.4776C2748.1618,-757.8195 2681.4595,-729.9632 2622,-716 2490.4523,-685.1079 2330.5646,-674.8321 2252.5011,-671.5155"/>
+<polygon fill="#191970" stroke="#191970" points="2252.1739,-667.9995 2242.0406,-671.0923 2251.8909,-674.9938 2252.1739,-667.9995"/>
 </g>
-<!-- Node55 -->
+<!-- Node56 -->
 <g id="node42" class="node">
-<title>Node55</title>
+<title>Node56</title>
 <g id="a_node42"><a xlink:href="ir_2function_8h.html" target="_top" xlink:title="Function nodes. ">
-<polygon fill="#ffffff" stroke="#000000" points="765,-716.5 765,-735.5 863,-735.5 863,-716.5 765,-716.5"/>
-<text text-anchor="middle" x="814" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/function.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="2868,-716.5 2868,-735.5 2966,-735.5 2966,-716.5 2868,-716.5"/>
+<text text-anchor="middle" x="2917" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/function.h</text>
 </a>
 </g>
 </g>
-<!-- Node52&#45;&gt;Node55 -->
+<!-- Node53&#45;&gt;Node56 -->
 <g id="edge171" class="edge">
-<title>Node52&#45;&gt;Node55</title>
-<path fill="none" stroke="#191970" d="M934.0736,-772.3733C910.3798,-763.2226 874.5489,-749.3844 848.1932,-739.2057"/>
-<polygon fill="#191970" stroke="#191970" points="849.1906,-735.8389 838.6011,-735.5011 846.6686,-742.3689 849.1906,-735.8389"/>
+<title>Node53&#45;&gt;Node56</title>
+<path fill="none" stroke="#191970" d="M2821.7692,-772.3733C2840.1469,-763.4241 2867.7312,-749.9917 2888.4893,-739.8835"/>
+<polygon fill="#191970" stroke="#191970" points="2890.0304,-743.026 2897.4888,-735.5011 2886.9657,-736.7325 2890.0304,-743.026"/>
 </g>
-<!-- Node56 -->
+<!-- Node57 -->
 <g id="node43" class="node">
-<title>Node56</title>
+<title>Node57</title>
 <g id="a_node43"><a xlink:href="source__map_8h.html" target="_top" xlink:title="A map from source names to source code. ">
-<polygon fill="#ffffff" stroke="#ff0000" points="1540.5,-548.5 1540.5,-567.5 1681.5,-567.5 1681.5,-548.5 1540.5,-548.5"/>
-<text text-anchor="middle" x="1611" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/parser/source_map.h</text>
+<polygon fill="#ffffff" stroke="#ff0000" points="2138.5,-548.5 2138.5,-567.5 2279.5,-567.5 2279.5,-548.5 2138.5,-548.5"/>
+<text text-anchor="middle" x="2209" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/parser/source_map.h</text>
 </a>
 </g>
 </g>
-<!-- Node52&#45;&gt;Node56 -->
+<!-- Node53&#45;&gt;Node57 -->
 <g id="edge180" class="edge">
-<title>Node52&#45;&gt;Node56</title>
-<path fill="none" stroke="#191970" d="M971.2352,-772.4219C1010.9441,-741.9021 1140.8438,-646.4591 1265,-604 1312.5704,-587.7318 1443.8345,-573.2272 1530.3126,-565.0345"/>
-<polygon fill="#191970" stroke="#191970" points="1530.7367,-568.5101 1540.366,-564.0913 1530.0828,-561.5407 1530.7367,-568.5101"/>
+<title>Node53&#45;&gt;Node57</title>
+<path fill="none" stroke="#191970" d="M2802.2892,-772.2687C2802.6119,-741.7025 2799.0344,-647.0956 2745,-604 2710.2727,-576.3029 2431.1631,-564.3679 2290.0605,-560.0638"/>
+<polygon fill="#191970" stroke="#191970" points="2289.8327,-556.5555 2279.7325,-559.7549 2289.6233,-563.5524 2289.8327,-556.5555"/>
 </g>
-<!-- Node59 -->
+<!-- Node60 -->
 <g id="node44" class="node">
-<title>Node59</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="881,-716.5 881,-735.5 967,-735.5 967,-716.5 881,-716.5"/>
-<text text-anchor="middle" x="924" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">unordered_set</text>
+<title>Node60</title>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="3324,-716.5 3324,-735.5 3410,-735.5 3410,-716.5 3324,-716.5"/>
+<text text-anchor="middle" x="3367" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">unordered_set</text>
 </g>
-<!-- Node52&#45;&gt;Node59 -->
+<!-- Node53&#45;&gt;Node60 -->
 <g id="edge191" class="edge">
-<title>Node52&#45;&gt;Node59</title>
-<path fill="none" stroke="#191970" d="M952.9035,-772.2455C948.0855,-764.5367 941.2249,-753.5598 935.3968,-744.2348"/>
-<polygon fill="#191970" stroke="#191970" points="938.2947,-742.2677 930.0267,-735.6427 932.3587,-745.9777 938.2947,-742.2677"/>
+<title>Node53&#45;&gt;Node60</title>
+<path fill="none" stroke="#191970" d="M2849.7724,-779.0081C2939.9764,-773.0632 3141.4527,-758.3763 3310,-736 3311.2605,-735.8327 3312.5357,-735.6574 3313.821,-735.4755"/>
+<polygon fill="#191970" stroke="#191970" points="3314.4331,-738.9228 3323.7985,-733.969 3313.388,-732.0013 3314.4331,-738.9228"/>
 </g>
-<!-- Node53&#45;&gt;Node3 -->
+<!-- Node54&#45;&gt;Node3 -->
 <g id="edge163" class="edge">
-<title>Node53&#45;&gt;Node3</title>
-<path fill="none" stroke="#191970" d="M1733.2652,-662.3502C1737.8813,-661.5039 1742.5429,-660.6974 1747,-660 1869.5261,-640.8276 2014.7355,-625.7724 2089.3134,-618.5957"/>
-<polygon fill="#191970" stroke="#191970" points="2089.7365,-622.0713 2099.3582,-617.6357 2089.0705,-615.103 2089.7365,-622.0713"/>
+<title>Node54&#45;&gt;Node3</title>
+<path fill="none" stroke="#191970" d="M2167.7117,-662.6214C2117.41,-652.6677 2027.6818,-634.9123 1971.6945,-623.8335"/>
+<polygon fill="#191970" stroke="#191970" points="1972.1395,-620.3538 1961.6503,-621.846 1970.7806,-627.2206 1972.1395,-620.3538"/>
 </g>
-<!-- Node53&#45;&gt;Node5 -->
+<!-- Node54&#45;&gt;Node5 -->
 <g id="edge165" class="edge">
-<title>Node53&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M1733.2474,-660.8715C1877.4383,-625.5337 2398.9669,-497.7193 2561.3725,-457.9175"/>
-<polygon fill="#191970" stroke="#191970" points="2562.215,-461.3146 2571.0945,-455.5348 2560.5487,-454.5158 2562.215,-461.3146"/>
+<title>Node54&#45;&gt;Node5</title>
+<path fill="none" stroke="#191970" d="M2187.6024,-660.3521C2133.6584,-630.8251 1963.7733,-540.7398 1813,-492 1757.1573,-473.948 1691.2351,-461.5669 1644.6764,-454.236"/>
+<polygon fill="#191970" stroke="#191970" points="1645.169,-450.7707 1634.752,-452.7036 1644.1007,-457.6887 1645.169,-450.7707"/>
 </g>
-<!-- Node53&#45;&gt;Node10 -->
+<!-- Node54&#45;&gt;Node10 -->
 <g id="edge168" class="edge">
-<title>Node53&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M1662.4577,-660.4756C1601.1613,-642.9575 1467.0423,-604.1047 1355,-568 1199.4842,-517.8864 648.8987,-403.0427 694,-246 711.8028,-184.0108 715.1497,-155.2544 771,-123 823.5895,-92.6288 1720.0665,-80.5689 1979.3104,-77.7069"/>
-<polygon fill="#191970" stroke="#191970" points="1979.3949,-81.2063 1989.356,-77.5971 1979.3183,-74.2067 1979.3949,-81.2063"/>
+<title>Node54&#45;&gt;Node10</title>
+<path fill="none" stroke="#191970" d="M2206.4049,-660.1828C2208.9188,-646.0155 2215.4594,-619.8081 2231,-604 2260.3362,-574.1588 2283.6381,-591.8824 2318,-568 2345.8897,-548.6159 2357.5854,-543.6142 2370,-512 2433.7348,-349.6971 2441.8018,-246.7904 2319,-123 2303.7123,-107.5892 2282.391,-96.96 2262.9526,-89.8353"/>
+<polygon fill="#191970" stroke="#191970" points="2263.8944,-86.4581 2253.2998,-86.5182 2261.6194,-93.0782 2263.8944,-86.4581"/>
 </g>
-<!-- Node53&#45;&gt;Node16 -->
+<!-- Node54&#45;&gt;Node16 -->
 <g id="edge169" class="edge">
-<title>Node53&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1733.2231,-666.9412C1758.5317,-664.8929 1792.7786,-662.1824 1823,-660 2104.1215,-639.6992 2821.2546,-659.0402 3088,-568 3326.9357,-486.4512 3516,-446.9688 3516,-194.5 3516,-194.5 3516,-194.5 3516,-133 3516,-101.7875 3508.8301,-93.2863 3492,-67 3483.4831,-53.6978 3470.976,-41.1707 3460.3622,-31.8027"/>
-<polygon fill="#191970" stroke="#191970" points="3462.5967,-29.1085 3452.7123,-25.2941 3458.0607,-34.4399 3462.5967,-29.1085"/>
+<title>Node54&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M2167.9839,-669.329C1961.6675,-665.514 958.0768,-645.9509 822,-624 735.0876,-609.9799 705.7841,-616.0232 632,-568 455.8598,-453.3572 342,-404.6627 342,-194.5 342,-194.5 342,-194.5 342,-133 342,-46.0732 474.5702,-23.3944 537.5337,-17.5253"/>
+<polygon fill="#191970" stroke="#191970" points="538.0527,-20.994 547.7233,-16.6663 537.4646,-14.0188 538.0527,-20.994"/>
 </g>
-<!-- Node53&#45;&gt;Node21 -->
+<!-- Node54&#45;&gt;Node21 -->
 <g id="edge166" class="edge">
-<title>Node53&#45;&gt;Node21</title>
-<path fill="none" stroke="#191970" d="M1696.4235,-660.2254C1696.4753,-645.6186 1694.2206,-618.2877 1678,-604 1591.7809,-528.055 1518.8978,-629.7431 1422,-568 1313.228,-498.6907 1251.7177,-346.1752 1231.0004,-286.3124"/>
-<polygon fill="#191970" stroke="#191970" points="1234.2255,-284.9231 1227.7085,-276.5697 1227.5938,-287.1639 1234.2255,-284.9231"/>
+<title>Node54&#45;&gt;Node21</title>
+<path fill="none" stroke="#191970" d="M2209.9556,-660.499C2217.8497,-646.2495 2234.5976,-619.379 2256,-604 2295.7217,-575.4574 2318.0357,-593.1294 2360,-568 2503.2819,-482.1987 2492.523,-398.4746 2636,-313 2660.0539,-298.6702 2688.6555,-287.6272 2714.4629,-279.5097"/>
+<polygon fill="#191970" stroke="#191970" points="2715.6568,-282.8048 2724.2017,-276.5411 2713.6157,-276.109 2715.6568,-282.8048"/>
 </g>
-<!-- Node53&#45;&gt;Node35 -->
+<!-- Node54&#45;&gt;Node34 -->
 <g id="edge167" class="edge">
-<title>Node53&#45;&gt;Node35</title>
-<path fill="none" stroke="#191970" d="M1685.6586,-660.3528C1669.275,-645.6569 1635.7373,-617.906 1602,-604 1514.4507,-567.9136 1478.194,-607.2136 1392,-568 1284.4637,-519.0768 1256.302,-494.9482 1186,-400 1143.4712,-342.5616 1118.4811,-260.5147 1107.9351,-219.6445"/>
-<polygon fill="#191970" stroke="#191970" points="1111.2748,-218.5723 1105.4517,-209.7212 1104.4842,-220.2718 1111.2748,-218.5723"/>
+<title>Node54&#45;&gt;Node34</title>
+<path fill="none" stroke="#191970" d="M2232.403,-660.4528C2271.2405,-647.068 2344.6281,-622.3132 2408,-604 2524.1494,-570.4351 2566.3622,-583.3032 2664,-512 2781.0229,-426.5402 2802.1994,-392.277 2890,-277 2904.0067,-258.61 2917.2259,-235.9165 2926.3959,-218.9882"/>
+<polygon fill="#191970" stroke="#191970" points="2929.6965,-220.2359 2931.3024,-209.7635 2923.5163,-216.9487 2929.6965,-220.2359"/>
 </g>
-<!-- Node53&#45;&gt;Node46 -->
+<!-- Node54&#45;&gt;Node47 -->
 <g id="edge164" class="edge">
-<title>Node53&#45;&gt;Node46</title>
-<path fill="none" stroke="#191970" d="M1710.063,-660.4483C1730.0505,-647.0581 1768.0261,-622.2971 1802,-604 1824.1222,-592.0858 1849.8996,-580.2755 1869.7417,-571.6053"/>
-<polygon fill="#191970" stroke="#191970" points="1871.1762,-574.7983 1878.9636,-567.6146 1868.3961,-568.374 1871.1762,-574.7983"/>
+<title>Node54&#45;&gt;Node47</title>
+<path fill="none" stroke="#191970" d="M2167.7937,-661.9639C2120.6347,-651.6179 2042.0965,-633.8076 2014,-624 1994.1004,-617.0537 1991.0497,-610.5006 1971,-604 1908.0935,-583.6041 1832.7039,-570.8759 1784.1132,-564.1113"/>
+<polygon fill="#191970" stroke="#191970" points="1784.546,-560.638 1774.1654,-562.7577 1783.6022,-567.5741 1784.546,-560.638"/>
 </g>
-<!-- Node55&#45;&gt;Node1 -->
+<!-- Node56&#45;&gt;Node1 -->
 <g id="edge172" class="edge">
-<title>Node55&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M863.0007,-717.2283C866.0417,-716.7843 869.0599,-716.3699 872,-716 1066.0398,-691.5894 1298.5152,-677.7089 1398.85,-672.4557"/>
-<polygon fill="#191970" stroke="#191970" points="1399.1926,-675.9427 1408.9982,-671.9303 1398.8306,-668.9521 1399.1926,-675.9427"/>
+<title>Node56&#45;&gt;Node1</title>
+<path fill="none" stroke="#191970" d="M2867.7494,-717.1884C2809.4452,-706.757 2712.8754,-689.4793 2654.1716,-678.9764"/>
+<polygon fill="#191970" stroke="#191970" points="2654.4838,-675.4767 2644.0237,-677.1608 2653.2509,-682.3673 2654.4838,-675.4767"/>
 </g>
-<!-- Node55&#45;&gt;Node3 -->
+<!-- Node56&#45;&gt;Node3 -->
 <g id="edge173" class="edge">
-<title>Node55&#45;&gt;Node3</title>
-<path fill="none" stroke="#191970" d="M863.3002,-717.0533C866.2385,-716.659 869.155,-716.3028 872,-716 1256.8236,-675.0375 1358.8819,-734.6595 1742,-680 1778.7094,-674.7627 1786.6095,-667.1237 1823,-660 1916.5407,-641.6887 2026.9674,-627.2251 2089.4082,-619.7001"/>
-<polygon fill="#191970" stroke="#191970" points="2089.8652,-623.1705 2099.3791,-618.5084 2089.0344,-616.22 2089.8652,-623.1705"/>
+<title>Node56&#45;&gt;Node3</title>
+<path fill="none" stroke="#191970" d="M2867.7326,-724.0788C2710.555,-717.8011 2227.3364,-697.3024 2159,-680 2138.5676,-674.8266 2135.9118,-666.9113 2116,-660 2102.4061,-655.2816 2024.6219,-637.2851 1971.7716,-625.2506"/>
+<polygon fill="#191970" stroke="#191970" points="1972.4148,-621.8076 1961.8877,-623.0032 1970.8627,-628.6334 1972.4148,-621.8076"/>
 </g>
-<!-- Node55&#45;&gt;Node16 -->
+<!-- Node56&#45;&gt;Node16 -->
 <g id="edge177" class="edge">
-<title>Node55&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M863.2994,-717.045C866.2379,-716.6528 869.1547,-716.2993 872,-716 1281.1643,-672.9548 1386.0113,-698.8838 1797,-680 2266.9408,-658.4075 2395.3573,-728.6779 2854,-624 3182.2378,-549.0849 3478,-531.1784 3478,-194.5 3478,-194.5 3478,-194.5 3478,-133 3478,-96.7454 3461.4195,-57.1181 3450.163,-34.3929"/>
-<polygon fill="#191970" stroke="#191970" points="3453.1292,-32.5073 3445.4445,-25.2137 3446.9035,-35.7076 3453.1292,-32.5073"/>
+<title>Node56&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M2867.942,-723.9736C2742.1823,-718.6102 2398.0563,-702.8711 2112,-680 1537.8608,-634.0957 1362.6397,-723.7382 827,-512 647.8679,-441.1891 532,-387.12 532,-194.5 532,-194.5 532,-194.5 532,-133 532,-96.7454 548.5805,-57.1181 559.837,-34.3929"/>
+<polygon fill="#191970" stroke="#191970" points="563.0965,-35.7076 564.5555,-25.2137 556.8708,-32.5073 563.0965,-35.7076"/>
 </g>
-<!-- Node55&#45;&gt;Node17 -->
+<!-- Node56&#45;&gt;Node17 -->
 <g id="edge178" class="edge">
-<title>Node55&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M787.0583,-716.4794C705.9564,-686.0335 465.6003,-582.2158 399,-400 356.2767,-283.1107 328.6636,-178.6112 440,-123 636.4895,-24.8558 712.0619,-84.5078 931,-67 1145.1143,-49.878 1823.3031,-23.9171 2004.2579,-17.1562"/>
-<polygon fill="#191970" stroke="#191970" points="2004.6099,-20.6456 2014.4724,-16.7752 2004.3489,-13.6505 2004.6099,-20.6456"/>
+<title>Node56&#45;&gt;Node17</title>
+<path fill="none" stroke="#191970" d="M2966.0218,-722.6006C3013.0413,-717.84 3085.0911,-706.5465 3142,-680 3287.056,-612.3352 3302.1661,-559.8087 3424,-456 3521.1778,-373.1995 3687.7518,-354.2088 3620,-246 3512.6655,-74.5722 2822.5258,-27.2194 2638.8499,-17.5837"/>
+<polygon fill="#191970" stroke="#191970" points="2638.8998,-14.0818 2628.7336,-17.0646 2638.541,-21.0726 2638.8998,-14.0818"/>
 </g>
-<!-- Node55&#45;&gt;Node21 -->
+<!-- Node56&#45;&gt;Node21 -->
 <g id="edge174" class="edge">
-<title>Node55&#45;&gt;Node21</title>
-<path fill="none" stroke="#191970" d="M829.6768,-716.4175C855.4624,-699.3156 904,-660.8956 904,-614 904,-614 904,-614 904,-502 904,-432.7249 1098.238,-325.1234 1183.5791,-281.1905"/>
-<polygon fill="#191970" stroke="#191970" points="1185.3931,-284.1939 1192.7017,-276.5235 1182.2049,-277.9621 1185.3931,-284.1939"/>
-</g>
-<!-- Node55&#45;&gt;Node32 -->
-<g id="edge175" class="edge">
-<title>Node55&#45;&gt;Node32</title>
-<path fill="none" stroke="#191970" d="M805.7179,-716.3293C777.1168,-682.541 681.1301,-565.8375 624,-456 584.7297,-380.4996 571.3635,-360.7044 556,-277 553.5127,-263.4486 552.5056,-259.3273 556,-246 558.5228,-236.3784 563.2931,-226.6592 568.2472,-218.2958"/>
-<polygon fill="#191970" stroke="#191970" points="571.2183,-220.1459 573.5974,-209.8216 565.2993,-216.4089 571.2183,-220.1459"/>
+<title>Node56&#45;&gt;Node21</title>
+<path fill="none" stroke="#191970" d="M2922.4595,-716.4646C2932.7516,-697.5623 2954,-653.7274 2954,-614 2954,-614 2954,-614 2954,-558 2954,-542.5183 2842.0089,-353.5583 2801.4469,-285.6265"/>
+<polygon fill="#191970" stroke="#191970" points="2804.351,-283.6632 2796.2165,-276.8749 2798.3423,-287.2543 2804.351,-283.6632"/>
 </g>
-<!-- Node55&#45;&gt;Node35 -->
+<!-- Node56&#45;&gt;Node34 -->
 <g id="edge176" class="edge">
-<title>Node55&#45;&gt;Node35</title>
-<path fill="none" stroke="#191970" d="M810.4587,-716.2625C803.7827,-697.0058 790,-652.5786 790,-614 790,-614 790,-614 790,-502 790,-372.7438 827.6628,-327.4838 928,-246 956.4789,-222.8723 995.0537,-210.129 1028.6462,-203.1084"/>
-<polygon fill="#191970" stroke="#191970" points="1029.7504,-206.459 1038.8948,-201.1082 1028.4095,-199.5887 1029.7504,-206.459"/>
+<title>Node56&#45;&gt;Node34</title>
+<path fill="none" stroke="#191970" d="M2966.1641,-718.6273C3022.164,-707.119 3106,-679.0306 3106,-614 3106,-614 3106,-614 3106,-328.5 3106,-290.3133 3108.144,-273.8336 3082,-246 3063.5793,-226.3888 3037.1466,-214.2298 3012.0065,-206.6977"/>
+<polygon fill="#191970" stroke="#191970" points="3012.6574,-203.2459 3002.0851,-203.9362 3010.7804,-209.9895 3012.6574,-203.2459"/>
+</g>
+<!-- Node56&#45;&gt;Node41 -->
+<g id="edge175" class="edge">
+<title>Node56&#45;&gt;Node41</title>
+<path fill="none" stroke="#191970" d="M2966.2855,-720.2947C3018.8233,-713.286 3097.499,-699.8319 3120,-680 3143.4156,-659.3619 3144,-645.2125 3144,-614 3144,-614 3144,-614 3144,-390 3144,-339.8105 3193.6198,-302.4487 3231.3108,-281.3085"/>
+<polygon fill="#191970" stroke="#191970" points="3232.9891,-284.3799 3240.1141,-276.5386 3229.6543,-278.2253 3232.9891,-284.3799"/>
 </g>
-<!-- Node56&#45;&gt;Node4 -->
+<!-- Node57&#45;&gt;Node4 -->
 <g id="edge181" class="edge">
-<title>Node56&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M1681.7482,-552.1392C1818.6337,-540.7996 2116.735,-516.1048 2236.0926,-506.2172"/>
-<polygon fill="#191970" stroke="#191970" points="2236.7249,-509.6769 2246.4018,-505.3632 2236.1469,-502.7008 2236.7249,-509.6769"/>
+<title>Node57&#45;&gt;Node4</title>
+<path fill="none" stroke="#191970" d="M2138.4006,-549.6767C2041.5469,-538.2582 1869.8138,-518.0117 1784.7108,-507.9785"/>
+<polygon fill="#191970" stroke="#191970" points="1785.1137,-504.5019 1774.7727,-506.8069 1784.294,-511.4537 1785.1137,-504.5019"/>
 </g>
-<!-- Node56&#45;&gt;Node16 -->
+<!-- Node57&#45;&gt;Node16 -->
 <g id="edge183" class="edge">
-<title>Node56&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1681.5693,-554.5115C1811.2795,-547.8794 2096.2806,-532.2842 2336,-512 2453.7915,-502.0329 2750.6855,-486.106 2865,-456 3043.6142,-408.96 3188,-379.2046 3188,-194.5 3188,-194.5 3188,-194.5 3188,-133 3188,-95.6561 3208.7174,-87.3953 3240,-67 3292.2209,-32.9536 3365.7609,-21.3983 3407.5745,-17.4882"/>
-<polygon fill="#191970" stroke="#191970" points="3408.0672,-20.9591 3417.7377,-16.6311 3407.4789,-13.9839 3408.0672,-20.9591"/>
+<title>Node57&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M2160.0061,-548.4434C2088.5354,-534.7153 1951.408,-509.1787 1834,-492 1521.7751,-446.3164 1421.5496,-520.7071 1130,-400 902.4224,-305.7785 899.5668,-191.4371 687,-67 659.3931,-50.8388 625.7824,-36.55 601.6809,-27.1485"/>
+<polygon fill="#191970" stroke="#191970" points="602.8911,-23.8641 592.301,-23.5488 600.3831,-30.3994 602.8911,-23.8641"/>
 </g>
-<!-- Node56&#45;&gt;Node18 -->
+<!-- Node57&#45;&gt;Node18 -->
 <g id="edge184" class="edge">
-<title>Node56&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M1548.5709,-548.499C1336.0236,-515.2877 643.4572,-399.7246 458,-277 422.0861,-253.2343 406.6661,-248.8097 388,-210 375.0416,-183.0574 383.3347,-172.8671 382,-143 380.4857,-109.1131 378.3747,-99.2137 389,-67 392.857,-55.3064 399.4701,-43.2596 405.408,-33.7602"/>
-<polygon fill="#191970" stroke="#191970" points="408.4507,-35.5024 410.9938,-25.2173 402.5919,-31.6716 408.4507,-35.5024"/>
+<title>Node57&#45;&gt;Node18</title>
+<path fill="none" stroke="#191970" d="M2279.7102,-548.9143C2526.2735,-516.4033 3345.5956,-401.1677 3577,-277 3622.8308,-252.4079 3660,-246.5119 3660,-194.5 3660,-194.5 3660,-194.5 3660,-133 3660,-59.916 3557.0543,-30.7601 3502.7162,-20.4611"/>
+<polygon fill="#191970" stroke="#191970" points="3503.001,-16.9567 3492.5416,-18.6453 3501.7711,-23.8479 3503.001,-16.9567"/>
 </g>
-<!-- Node56&#45;&gt;Node20 -->
+<!-- Node57&#45;&gt;Node20 -->
 <g id="edge185" class="edge">
-<title>Node56&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M1606.4258,-548.3613C1597.8027,-529.278 1580,-485.1405 1580,-446 1580,-446 1580,-446 1580,-390 1580,-301.7176 1530.7096,-291.1728 1496,-210 1487.6588,-190.4931 1478.9441,-167.8299 1473.0705,-152.1655"/>
-<polygon fill="#191970" stroke="#191970" points="1476.2654,-150.7154 1469.4975,-142.5639 1469.7049,-153.1567 1476.2654,-150.7154"/>
+<title>Node57&#45;&gt;Node20</title>
+<path fill="none" stroke="#191970" d="M2204.6045,-548.4516C2193.8474,-526.0129 2164.1179,-469.3116 2124,-436 2047.4801,-372.4622 1999.9488,-403.1653 1920,-344 1873.4195,-309.5286 1880.9746,-279.9325 1834,-246 1800.7429,-221.9765 1778.8364,-238.1594 1749,-210 1732.3696,-194.3043 1722.0253,-169.7714 1716.405,-152.6277"/>
+<polygon fill="#191970" stroke="#191970" points="1719.6171,-151.157 1713.3752,-142.596 1712.916,-153.1809 1719.6171,-151.157"/>
 </g>
-<!-- Node56&#45;&gt;Node40 -->
+<!-- Node57&#45;&gt;Node40 -->
 <g id="edge182" class="edge">
-<title>Node56&#45;&gt;Node40</title>
-<path fill="none" stroke="#191970" d="M1616.9228,-548.2346C1633.9227,-520.5398 1684.9942,-439.641 1737,-380 1745.933,-369.7556 1756.6752,-359.343 1766.2864,-350.5865"/>
-<polygon fill="#191970" stroke="#191970" points="1768.9094,-352.9363 1774.0293,-343.6606 1764.2425,-347.7189 1768.9094,-352.9363"/>
+<title>Node57&#45;&gt;Node40</title>
+<path fill="none" stroke="#191970" d="M2209.548,-548.2923C2210.4584,-527.3475 2211.1991,-476.5328 2200,-436 2191.5693,-405.487 2174.1922,-373.4218 2161.4178,-352.3387"/>
+<polygon fill="#191970" stroke="#191970" points="2164.3338,-350.3997 2156.0929,-343.741 2158.3827,-354.0855 2164.3338,-350.3997"/>
 </g>
-<!-- Node60&#45;&gt;Node1 -->
+<!-- Node61&#45;&gt;Node1 -->
 <g id="edge195" class="edge">
-<title>Node60&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M1467.9166,-884.3678C1461.8251,-875.4492 1453.4864,-861.5564 1450,-848 1435.6786,-792.3127 1441.6467,-723.5451 1445.9765,-690.1276"/>
-<polygon fill="#191970" stroke="#191970" points="1449.4934,-690.2477 1447.4037,-679.861 1442.5601,-689.2838 1449.4934,-690.2477"/>
+<title>Node61&#45;&gt;Node1</title>
+<path fill="none" stroke="#191970" d="M1953.2188,-884.375C2061.766,-848.6182 2441.8911,-723.4006 2565.1183,-682.8081"/>
+<polygon fill="#191970" stroke="#191970" points="2566.4872,-686.0422 2574.8901,-679.5891 2564.2971,-679.3937 2566.4872,-686.0422"/>
 </g>
-<!-- Node60&#45;&gt;Node3 -->
+<!-- Node61&#45;&gt;Node3 -->
 <g id="edge196" class="edge">
-<title>Node60&#45;&gt;Node3</title>
-<path fill="none" stroke="#191970" d="M1505.9162,-884.457C1535.8707,-875.1953 1582.5737,-860.7138 1623,-848 1701.3053,-823.3736 1723.2435,-823.609 1799,-792 1915.6852,-743.3138 1938.9751,-718.6191 2051,-660 2071.3627,-649.3449 2094.3816,-637.3127 2111.7683,-628.2272"/>
-<polygon fill="#191970" stroke="#191970" points="2113.5534,-631.2435 2120.7955,-623.5103 2110.3116,-625.0394 2113.5534,-631.2435"/>
+<title>Node61&#45;&gt;Node3</title>
+<path fill="none" stroke="#191970" d="M1923.9312,-884.3618C1923.6439,-844.1418 1922.5373,-689.2159 1922.1416,-633.8288"/>
+<polygon fill="#191970" stroke="#191970" points="1925.64,-633.5724 1922.0686,-623.5977 1918.6402,-633.6225 1925.64,-633.5724"/>
 </g>
-<!-- Node60&#45;&gt;Node16 -->
+<!-- Node61&#45;&gt;Node16 -->
 <g id="edge207" class="edge">
-<title>Node60&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1510.3745,-889.398C1527.1951,-887.393 1547.604,-885.2249 1566,-884 2244.6853,-838.809 2416.986,-887.9492 3096,-848 3251.9757,-838.8233 3796,-938.2455 3796,-782 3796,-782 3796,-782 3796,-133 3796,-95.6561 3776.1134,-86.0604 3744,-67 3698.3392,-39.8987 3540.8823,-23.8735 3472.3231,-18.0332"/>
-<polygon fill="#191970" stroke="#191970" points="3472.3697,-14.5251 3462.1137,-17.1832 3471.7888,-21.5009 3472.3697,-14.5251"/>
+<title>Node61&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M1888.7604,-893.2843C1662.3049,-888.6464 418.658,-862.5839 340,-848 252.929,-831.8563 152,-870.5549 152,-782 152,-782 152,-782 152,-614 152,-537.4471 114,-522.5529 114,-446 114,-446 114,-446 114,-133 114,-95.9295 132.8239,-85.4098 165,-67 228.5696,-30.6282 453.4359,-19.4184 537.7516,-16.4484"/>
+<polygon fill="#191970" stroke="#191970" points="537.8985,-19.9456 547.7752,-16.1113 537.6631,-12.9495 537.8985,-19.9456"/>
 </g>
-<!-- Node60&#45;&gt;Node18 -->
+<!-- Node61&#45;&gt;Node18 -->
 <g id="edge208" class="edge">
-<title>Node60&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M1439.8104,-893.4219C1247.8693,-890.1755 331.4178,-873.4432 208,-848 128.6194,-831.6353 38,-863.0499 38,-782 38,-782 38,-782 38,-133 38,-60.5977 292.9701,-27.9698 385.203,-18.5355"/>
-<polygon fill="#191970" stroke="#191970" points="385.7635,-21.9971 395.3673,-17.5229 385.0695,-15.0315 385.7635,-21.9971"/>
+<title>Node61&#45;&gt;Node18</title>
+<path fill="none" stroke="#191970" d="M1959.0626,-889.818C1977.225,-887.7862 1999.7777,-885.4716 2020,-884 2121.5559,-876.6094 3850,-883.8245 3850,-782 3850,-782 3850,-782 3850,-133 3850,-85.5213 3809.3693,-86.3216 3766,-67 3719.0772,-46.0953 3569.1392,-26.8725 3502.4791,-19.1182"/>
+<polygon fill="#191970" stroke="#191970" points="3502.8585,-15.6388 3492.5241,-17.9736 3502.0589,-22.593 3502.8585,-15.6388"/>
 </g>
-<!-- Node60&#45;&gt;Node20 -->
+<!-- Node61&#45;&gt;Node20 -->
 <g id="edge209" class="edge">
-<title>Node60&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M1439.5509,-892.9498C1295.9005,-887.8716 760.0484,-860.7027 661,-736 549.4573,-595.567 1077.0523,-241.9029 1245,-179 1321.7126,-150.2682 1348.4156,-162.3706 1432.3267,-142.9056"/>
-<polygon fill="#191970" stroke="#191970" points="1433.3847,-146.2511 1442.2894,-140.5103 1431.7483,-139.445 1433.3847,-146.2511"/>
+<title>Node61&#45;&gt;Node20</title>
+<path fill="none" stroke="#191970" d="M1888.7457,-892.944C1685.0863,-886.4681 658.0337,-848.6133 366,-736 299.7289,-710.4447 272.8611,-691.8951 252,-624 230.3082,-553.4014 331.685,-513.2964 354,-492 444.1965,-405.9206 467.7897,-384.4012 570,-313 618.4924,-279.1246 633.3207,-274.7803 685,-246 740.4116,-215.1411 749.8711,-195.9109 811,-179 895.5802,-155.6014 1523.2151,-137.8834 1677.0414,-133.8618"/>
+<polygon fill="#191970" stroke="#191970" points="1677.3782,-137.3543 1687.284,-133.596 1677.1966,-130.3567 1677.3782,-137.3543"/>
 </g>
-<!-- Node60&#45;&gt;Node46 -->
+<!-- Node61&#45;&gt;Node47 -->
 <g id="edge197" class="edge">
-<title>Node60&#45;&gt;Node46</title>
-<path fill="none" stroke="#191970" d="M1510.1924,-888.1804C1535.6207,-882.223 1569.0486,-870.5074 1590,-848 1649.76,-783.802 1592.4984,-726.2284 1650,-660 1678.197,-627.5236 1793.9654,-589.5922 1858.3277,-570.4325"/>
-<polygon fill="#191970" stroke="#191970" points="1859.5934,-573.7084 1868.1948,-567.5224 1857.6131,-566.9943 1859.5934,-573.7084"/>
+<title>Node61&#45;&gt;Node47</title>
+<path fill="none" stroke="#191970" d="M1918.5186,-884.3065C1892.2978,-837.9372 1779.4958,-638.4558 1744.4376,-576.4581"/>
+<polygon fill="#191970" stroke="#191970" points="1747.4726,-574.7147 1739.5037,-567.7328 1741.3794,-578.1603 1747.4726,-574.7147"/>
 </g>
-<!-- Node61 -->
+<!-- Node62 -->
 <g id="node46" class="node">
-<title>Node61</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="1313.5,-828.5 1313.5,-847.5 1402.5,-847.5 1402.5,-828.5 1313.5,-828.5"/>
-<text text-anchor="middle" x="1358" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dmlc/registry.h</text>
+<title>Node62</title>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="1768.5,-828.5 1768.5,-847.5 1857.5,-847.5 1857.5,-828.5 1768.5,-828.5"/>
+<text text-anchor="middle" x="1813" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dmlc/registry.h</text>
 </g>
-<!-- Node60&#45;&gt;Node61 -->
+<!-- Node61&#45;&gt;Node62 -->
 <g id="edge194" class="edge">
-<title>Node60&#45;&gt;Node61</title>
-<path fill="none" stroke="#191970" d="M1454.887,-884.3733C1436.1897,-875.4241 1408.1256,-861.9917 1387.0066,-851.8835"/>
-<polygon fill="#191970" stroke="#191970" points="1388.3817,-848.6614 1377.8506,-847.5011 1385.3595,-854.9755 1388.3817,-848.6614"/>
+<title>Node61&#45;&gt;Node62</title>
+<path fill="none" stroke="#191970" d="M1904.9184,-884.3733C1887.2598,-875.4644 1860.7947,-862.1127 1840.7902,-852.0203"/>
+<polygon fill="#191970" stroke="#191970" points="1842.3372,-848.8806 1831.8326,-847.5011 1839.1842,-855.1303 1842.3372,-848.8806"/>
 </g>
-<!-- Node62 -->
+<!-- Node63 -->
 <g id="node47" class="node">
-<title>Node62</title>
+<title>Node63</title>
 <g id="a_node47"><a xlink:href="type__relation_8h.html" target="_top" xlink:title="Type relation and function for type inference(checking). ">
-<polygon fill="#ffffff" stroke="#ff0000" points="1459,-828.5 1459,-847.5 1581,-847.5 1581,-828.5 1459,-828.5"/>
-<text text-anchor="middle" x="1520" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/type_relation.h</text>
+<polygon fill="#ffffff" stroke="#ff0000" points="2350,-828.5 2350,-847.5 2472,-847.5 2472,-828.5 2350,-828.5"/>
+<text text-anchor="middle" x="2411" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/type_relation.h</text>
 </a>
 </g>
 </g>
-<!-- Node60&#45;&gt;Node62 -->
+<!-- Node61&#45;&gt;Node63 -->
 <g id="edge198" class="edge">
-<title>Node60&#45;&gt;Node62</title>
-<path fill="none" stroke="#191970" d="M1482.8384,-884.2455C1489.162,-876.3761 1498.2224,-865.101 1505.8136,-855.6542"/>
-<polygon fill="#191970" stroke="#191970" points="1508.7158,-857.6302 1512.2514,-847.6427 1503.2592,-853.2454 1508.7158,-857.6302"/>
+<title>Node61&#45;&gt;Node63</title>
+<path fill="none" stroke="#191970" d="M1959.0238,-889.9726C2038.465,-880.8377 2233.6303,-858.3957 2339.6543,-846.204"/>
+<polygon fill="#191970" stroke="#191970" points="2340.0948,-849.6765 2349.6295,-845.057 2339.2951,-842.7223 2340.0948,-849.6765"/>
 </g>
-<!-- Node66 -->
+<!-- Node67 -->
 <g id="node48" class="node">
-<title>Node66</title>
+<title>Node67</title>
 <g id="a_node48"><a xlink:href="attr__registry__map_8h.html" target="_top" xlink:title="Attribute map used in registry. ">
-<polygon fill="#ffffff" stroke="#000000" points="712,-246.5 712,-276.5 838,-276.5 838,-246.5 712,-246.5"/>
-<text text-anchor="start" x="720" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/attr_registry</text>
-<text text-anchor="middle" x="775" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_map.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="3392,-246.5 3392,-276.5 3518,-276.5 3518,-246.5 3392,-246.5"/>
+<text text-anchor="start" x="3400" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/attr_registry</text>
+<text text-anchor="middle" x="3455" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_map.h</text>
 </a>
 </g>
 </g>
-<!-- Node60&#45;&gt;Node66 -->
+<!-- Node61&#45;&gt;Node67 -->
 <g id="edge203" class="edge">
-<title>Node60&#45;&gt;Node66</title>
-<path fill="none" stroke="#191970" d="M1439.9828,-893.2503C1262.4336,-889.3564 465.8953,-870.743 358,-848 279.503,-831.4538 190,-862.2219 190,-782 190,-782 190,-782 190,-614 190,-489.9741 580.6355,-333.2636 723.4819,-280.1044"/>
-<polygon fill="#191970" stroke="#191970" points="724.7664,-283.3611 732.9282,-276.6058 722.3351,-276.7969 724.7664,-283.3611"/>
+<title>Node61&#45;&gt;Node67</title>
+<path fill="none" stroke="#191970" d="M1959.0878,-890.1251C1977.2568,-888.1744 1999.8079,-885.8398 2020,-884 2224.6649,-865.3523 2276.4286,-867.6473 2481,-848 2723.342,-824.7252 3562,-913.4571 3562,-670 3562,-670 3562,-670 3562,-390 3562,-343.4297 3519.9845,-304.7665 3488.61,-282.3873"/>
+<polygon fill="#191970" stroke="#191970" points="3490.307,-279.3062 3480.0867,-276.514 3486.3351,-285.0702 3490.307,-279.3062"/>
 </g>
-<!-- Node62&#45;&gt;Node1 -->
+<!-- Node63&#45;&gt;Node1 -->
 <g id="edge199" class="edge">
-<title>Node62&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M1515.9793,-828.4862C1504.6587,-801.6994 1472.3524,-725.2565 1457.1265,-689.2289"/>
-<polygon fill="#191970" stroke="#191970" points="1460.2703,-687.6766 1453.1535,-679.8279 1453.8224,-690.4016 1460.2703,-687.6766"/>
+<title>Node63&#45;&gt;Node1</title>
+<path fill="none" stroke="#191970" d="M2421.9295,-828.4862C2453.4949,-801.0096 2545.0815,-721.2866 2585.0129,-686.5276"/>
+<polygon fill="#191970" stroke="#191970" points="2587.4649,-689.0335 2592.7096,-679.8279 2582.8689,-683.7536 2587.4649,-689.0335"/>
 </g>
-<!-- Node62&#45;&gt;Node15 -->
+<!-- Node63&#45;&gt;Node15 -->
 <g id="edge202" class="edge">
-<title>Node62&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M1458.9112,-832.1691C1443.2964,-830.7409 1426.5314,-829.2616 1411,-828 1165.183,-808.0332 517.2829,-861.5415 305,-736 114.3435,-623.2481 138.4426,-454.2162 214,-246 268.4016,-96.0836 369.8046,-103.7266 525,-67 615.4369,-45.5983 1246.6114,-24.4048 1463.2259,-17.6859"/>
-<polygon fill="#191970" stroke="#191970" points="1463.3367,-21.1842 1473.2237,-17.3769 1463.1204,-14.1875 1463.3367,-21.1842"/>
+<title>Node63&#45;&gt;Node15</title>
+<path fill="none" stroke="#191970" d="M2453.6612,-828.4901C2560.864,-802.5642 2827.2689,-724.4328 2745,-604 2655.3824,-472.8095 2201.107,-445.6472 2079,-344 2000.2161,-278.4168 1947.9707,-202.2416 2013,-123 2053.8125,-73.2679 2123.849,-43.3472 2169.5335,-28.1318"/>
+<polygon fill="#191970" stroke="#191970" points="2170.735,-31.4218 2179.1754,-25.0179 2168.5837,-24.7606 2170.735,-31.4218"/>
 </g>
-<!-- Node62&#45;&gt;Node46 -->
+<!-- Node63&#45;&gt;Node47 -->
 <g id="edge201" class="edge">
-<title>Node62&#45;&gt;Node46</title>
-<path fill="none" stroke="#191970" d="M1541.6809,-828.4975C1598.964,-802.5703 1756.8676,-725.6943 1858,-624 1872.0441,-609.8779 1884.263,-590.6476 1892.2367,-576.588"/>
-<polygon fill="#191970" stroke="#191970" points="1895.3123,-578.2584 1897.0489,-567.8069 1889.1737,-574.8943 1895.3123,-578.2584"/>
+<title>Node63&#45;&gt;Node47</title>
+<path fill="none" stroke="#191970" d="M2370.0245,-828.468C2271.2073,-804.3634 2013.9222,-734.8891 1824,-624 1798.2602,-608.9714 1770.9578,-588.1733 1753.2645,-573.9657"/>
+<polygon fill="#191970" stroke="#191970" points="1755.3676,-571.1648 1745.3995,-567.5747 1750.9531,-576.5974 1755.3676,-571.1648"/>
 </g>
-<!-- Node62&#45;&gt;Node52 -->
+<!-- Node63&#45;&gt;Node53 -->
 <g id="edge200" class="edge">
-<title>Node62&#45;&gt;Node52</title>
-<path fill="none" stroke="#191970" d="M1458.8952,-831.9004C1349.925,-821.0228 1123.5075,-798.4214 1016.8933,-787.779"/>
-<polygon fill="#191970" stroke="#191970" points="1016.9482,-784.2672 1006.6499,-786.7565 1016.2528,-791.2326 1016.9482,-784.2672"/>
+<title>Node63&#45;&gt;Node53</title>
+<path fill="none" stroke="#191970" d="M2472.0938,-829.25C2546.5575,-818.5851 2671.4433,-800.6987 2744.3234,-790.2606"/>
+<polygon fill="#191970" stroke="#191970" points="2744.8486,-793.7212 2754.2513,-788.8387 2743.8561,-786.7919 2744.8486,-793.7212"/>
 </g>
-<!-- Node66&#45;&gt;Node18 -->
+<!-- Node67&#45;&gt;Node18 -->
 <g id="edge205" class="edge">
-<title>Node66&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M711.7124,-259.5309C626.5962,-255.6015 481.3506,-243.9804 442,-210 392.2278,-167.0201 395.2981,-132.183 404,-67 405.4431,-56.1902 408.5187,-44.4337 411.4206,-34.8862"/>
-<polygon fill="#191970" stroke="#191970" points="414.8016,-35.8049 414.5269,-25.2137 408.1368,-33.6646 414.8016,-35.8049"/>
+<title>Node67&#45;&gt;Node18</title>
+<path fill="none" stroke="#191970" d="M3455.9157,-246.4819C3458.5068,-203.9891 3465.8899,-82.906 3468.7999,-35.181"/>
+<polygon fill="#191970" stroke="#191970" points="3472.2936,-35.3901 3469.4088,-25.1956 3465.3066,-34.964 3472.2936,-35.3901"/>
 </g>
-<!-- Node66&#45;&gt;Node20 -->
+<!-- Node67&#45;&gt;Node20 -->
 <g id="edge206" class="edge">
-<title>Node66&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M812.7338,-246.3399C861.8871,-227.2824 950.8955,-195.1174 1030,-179 1203.0207,-143.7473 1254.6112,-176.0439 1432.4097,-142.7077"/>
-<polygon fill="#191970" stroke="#191970" points="1433.1917,-146.1216 1442.3532,-140.8002 1431.8729,-139.2469 1433.1917,-146.1216"/>
+<title>Node67&#45;&gt;Node20</title>
+<path fill="none" stroke="#191970" d="M3391.732,-251.3714C3376.4676,-249.264 3360.1809,-247.2929 3345,-246 3078.7331,-223.3222 2406.3952,-255.1146 2143,-210 2098.3904,-202.3592 2090.1396,-189.0047 2046,-179 1988.9749,-166.0747 1817.8549,-145.4118 1744.7314,-136.8794"/>
+<polygon fill="#191970" stroke="#191970" points="1745.0163,-133.389 1734.679,-135.7109 1744.208,-140.3422 1745.0163,-133.389"/>
 </g>
-<!-- Node66&#45;&gt;Node35 -->
+<!-- Node67&#45;&gt;Node34 -->
 <g id="edge204" class="edge">
-<title>Node66&#45;&gt;Node35</title>
-<path fill="none" stroke="#191970" d="M838.0489,-248.5817C892.5859,-237.4075 971.468,-221.2451 1028.7853,-209.5012"/>
-<polygon fill="#191970" stroke="#191970" points="1029.7724,-212.8717 1038.8664,-207.4356 1028.3673,-206.0142 1029.7724,-212.8717"/>
+<title>Node67&#45;&gt;Node34</title>
+<path fill="none" stroke="#191970" d="M3391.6252,-248.3151C3387.022,-247.4889 3382.4441,-246.7068 3378,-246 3249.8797,-225.6248 3099.528,-209.7012 3012.18,-201.2353"/>
+<polygon fill="#191970" stroke="#191970" points="3012.3958,-197.74 3002.1063,-200.265 3011.7246,-204.7077 3012.3958,-197.74"/>
 </g>
-<!-- Node68&#45;&gt;Node1 -->
+<!-- Node69&#45;&gt;Node1 -->
 <g id="edge216" class="edge">
-<title>Node68&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M1870.7029,-884.1969C1856.6469,-853.4175 1808.7777,-758.2469 1737,-716 1646.3179,-662.6263 1606.7443,-697.5821 1503,-680 1501.731,-679.7849 1500.4456,-679.5647 1499.1491,-679.3405"/>
-<polygon fill="#191970" stroke="#191970" points="1499.5367,-675.8549 1489.0804,-677.5627 1498.3194,-682.7483 1499.5367,-675.8549"/>
+<title>Node69&#45;&gt;Node1</title>
+<path fill="none" stroke="#191970" d="M1283.8798,-889.7467C1419.4639,-868.2519 2041.8208,-769.0988 2550,-680 2551.2678,-679.7777 2552.5521,-679.5511 2553.8475,-679.3211"/>
+<polygon fill="#191970" stroke="#191970" points="2554.688,-682.7262 2563.9109,-677.5119 2553.4493,-675.8367 2554.688,-682.7262"/>
 </g>
-<!-- Node68&#45;&gt;Node16 -->
+<!-- Node69&#45;&gt;Node16 -->
 <g id="edge220" class="edge">
-<title>Node68&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1901.7516,-893.7822C2131.834,-891.8594 3769.4027,-877.1607 3810,-848 3835.3506,-829.7909 3834,-813.2125 3834,-782 3834,-782 3834,-782 3834,-133 3834,-101.7875 3834.2668,-86.6302 3810,-67 3783.8581,-45.853 3557.2655,-25.1717 3472.1394,-18.0789"/>
-<polygon fill="#191970" stroke="#191970" points="3472.2738,-14.5782 3462.0199,-17.2444 3471.6984,-21.5545 3472.2738,-14.5782"/>
+<title>Node69&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M1230.4985,-893.7936C1065.2669,-892.3978 181.9703,-883.2988 138,-848 54.1016,-780.6475 76,-721.5886 76,-614 76,-614 76,-614 76,-133 76,-101.7875 75.4496,-86.2743 100,-67 134.3792,-40.0093 436.889,-22.2819 537.5684,-17.087"/>
+<polygon fill="#191970" stroke="#191970" points="537.938,-20.5729 547.7472,-16.5692 537.5823,-13.5819 537.938,-20.5729"/>
 </g>
-<!-- Node68&#45;&gt;Node46 -->
+<!-- Node69&#45;&gt;Node47 -->
 <g id="edge217" class="edge">
-<title>Node68&#45;&gt;Node46</title>
-<path fill="none" stroke="#191970" d="M1875.7789,-884.3065C1879.4744,-838.3189 1895.2718,-641.7291 1900.3915,-578.0167"/>
-<polygon fill="#191970" stroke="#191970" points="1903.9056,-577.981 1901.2179,-567.7328 1896.9281,-577.4203 1903.9056,-577.981"/>
+<title>Node69&#45;&gt;Node47</title>
+<path fill="none" stroke="#191970" d="M1251.393,-884.4834C1240.8226,-865.6141 1219,-821.8343 1219,-782 1219,-782 1219,-782 1219,-670 1219,-622.7839 1553.8031,-578.896 1683.5127,-563.6646"/>
+<polygon fill="#191970" stroke="#191970" points="1684.061,-567.1245 1693.5888,-562.4907 1683.2509,-560.1715 1684.061,-567.1245"/>
 </g>
-<!-- Node68&#45;&gt;Node47 -->
+<!-- Node69&#45;&gt;Node48 -->
 <g id="edge221" class="edge">
-<title>Node68&#45;&gt;Node47</title>
-<path fill="none" stroke="#191970" d="M1901.7323,-892.7117C2049.1995,-885.6048 2764.3908,-851.1378 2977.1678,-840.8835"/>
-<polygon fill="#191970" stroke="#191970" points="2977.393,-844.3768 2987.2129,-840.3994 2977.056,-837.3849 2977.393,-844.3768"/>
+<title>Node69&#45;&gt;Node48</title>
+<path fill="none" stroke="#191970" d="M1230.3809,-892.2626C1111.6737,-884.5148 628.985,-853.0107 458.7688,-841.901"/>
+<polygon fill="#191970" stroke="#191970" points="458.9407,-838.4049 448.734,-841.246 458.4848,-845.39 458.9407,-838.4049"/>
 </g>
-<!-- Node68&#45;&gt;Node48 -->
+<!-- Node69&#45;&gt;Node49 -->
 <g id="edge219" class="edge">
-<title>Node68&#45;&gt;Node48</title>
-<path fill="none" stroke="#191970" d="M1901.8754,-890.6481C2027.0035,-875.0419 2553.4898,-809.3777 2721.3477,-788.4422"/>
-<polygon fill="#191970" stroke="#191970" points="2721.9226,-791.8977 2731.4125,-787.1869 2721.0562,-784.9515 2721.9226,-791.8977"/>
+<title>Node69&#45;&gt;Node49</title>
+<path fill="none" stroke="#191970" d="M1261.4335,-884.4509C1270.0297,-865.936 1289.1011,-824.8591 1300.3092,-800.7187"/>
+<polygon fill="#191970" stroke="#191970" points="1303.5411,-802.0689 1304.5777,-791.5249 1297.192,-799.1211 1303.5411,-802.0689"/>
 </g>
-<!-- Node68&#45;&gt;Node62 -->
+<!-- Node69&#45;&gt;Node63 -->
 <g id="edge218" class="edge">
-<title>Node68&#45;&gt;Node62</title>
-<path fill="none" stroke="#191970" d="M1848.3173,-889.7909C1794.1177,-881.2411 1669.5825,-861.5961 1590.4203,-849.1085"/>
-<polygon fill="#191970" stroke="#191970" points="1590.9443,-845.648 1580.521,-847.547 1589.8535,-852.5625 1590.9443,-845.648"/>
+<title>Node69&#45;&gt;Node63</title>
+<path fill="none" stroke="#191970" d="M1283.5483,-892.7117C1427.4077,-885.7306 2115.2984,-852.3495 2339.8949,-841.4505"/>
+<polygon fill="#191970" stroke="#191970" points="2340.1,-844.9448 2349.9186,-840.9641 2339.7607,-837.953 2340.1,-844.9448"/>
 </g>
 </g>
 </svg>
diff --git a/docs/api/doxygen/analyzer_8h.html b/docs/api/doxygen/analyzer_8h.html
index 999c8e6..1076839 100644
--- a/docs/api/doxygen/analyzer_8h.html
+++ b/docs/api/doxygen/analyzer_8h.html
@@ -83,7 +83,7 @@ $(function() {
 </div><div class="textblock"><div class="dynheader">
 Include dependency graph for analyzer.h:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="analyzer_8h__incl.svg" width="4170" height="1366"><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="analyzer_8h__incl.svg" width="4174" height="1366"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </div>
 </div>
 </div><div class="textblock"><div class="dynheader">
diff --git a/docs/api/doxygen/analyzer_8h__dep__incl.svg b/docs/api/doxygen/analyzer_8h__dep__incl.svg
index 7d1a9d0..7a88b37 100644
--- a/docs/api/doxygen/analyzer_8h__dep__incl.svg
+++ b/docs/api/doxygen/analyzer_8h__dep__incl.svg
@@ -9,15 +9,15 @@
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 493)">
 <title>include/tvm/arith/analyzer.h</title>
 <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-493 3663.5,-493 3663.5,4 -4,4"/>
-<!-- Node51 -->
+<!-- Node52 -->
 <g id="node1" class="node">
-<title>Node51</title>
+<title>Node52</title>
 <polygon fill="#bfbfbf" stroke="#000000" points="3271,-469.5 3271,-488.5 3424,-488.5 3424,-469.5 3271,-469.5"/>
 <text text-anchor="middle" x="3347.5" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/arith/analyzer.h</text>
 </g>
-<!-- Node52 -->
+<!-- Node53 -->
 <g id="node2" class="node">
-<title>Node52</title>
+<title>Node53</title>
 <g id="a_node2"><a xlink:href="int__solver_8h.html" target="_top" xlink:title="integer constraints data structures and solvers ">
 <polygon fill="#ffffff" stroke="#000000" points="1650.5,-402.5 1650.5,-432.5 1766.5,-432.5 1766.5,-402.5 1650.5,-402.5"/>
 <text text-anchor="start" x="1658.5" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/arith/int</text>
@@ -25,15 +25,15 @@
 </a>
 </g>
 </g>
-<!-- Node51&#45;&gt;Node52 -->
+<!-- Node52&#45;&gt;Node53 -->
 <g id="edge1" class="edge">
-<title>Node51&#45;&gt;Node52</title>
+<title>Node52&#45;&gt;Node53</title>
 <path fill="none" stroke="#191970" d="M3260.2488,-478.7209C2974.129,-477.4485 2066.0544,-470.4837 1775.5,-433 1772.6582,-432.6334 1769.7603,-432.1993 1766.8419,-431.7136"/>
 <polygon fill="#191970" stroke="#191970" points="3260.554,-482.2222 3270.5691,-478.7655 3260.5843,-475.2222 3260.554,-482.2222"/>
 </g>
-<!-- Node53 -->
+<!-- Node54 -->
 <g id="node3" class="node">
-<title>Node53</title>
+<title>Node54</title>
 <g id="a_node3"><a xlink:href="iter__affine__map_8h.html" target="_top" xlink:title="Iterator quasi&#45;affine mapping patterns. ">
 <polygon fill="#ffffff" stroke="#000000" points="1785,-402.5 1785,-432.5 1904,-432.5 1904,-402.5 1785,-402.5"/>
 <text text-anchor="start" x="1793" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/arith/iter</text>
@@ -41,30 +41,30 @@
 </a>
 </g>
 </g>
-<!-- Node51&#45;&gt;Node53 -->
+<!-- Node52&#45;&gt;Node54 -->
 <g id="edge2" class="edge">
-<title>Node51&#45;&gt;Node53</title>
+<title>Node52&#45;&gt;Node54</title>
 <path fill="none" stroke="#191970" d="M3260.6331,-478.3641C2991.8703,-476.057 2176.2129,-466.4165 1913.5,-433 1910.4551,-432.6127 1907.3469,-432.1532 1904.2167,-431.6394"/>
 <polygon fill="#191970" stroke="#191970" points="3260.6979,-481.8646 3270.7272,-478.4495 3260.7572,-474.8649 3260.6979,-481.8646"/>
 </g>
-<!-- Node54 -->
+<!-- Node55 -->
 <g id="node4" class="node">
-<title>Node54</title>
+<title>Node55</title>
 <g id="a_node4"><a xlink:href="operation_8h.html" target="_top" xlink:title="Operation node can generate one or multiple Tensors. ">
 <polygon fill="#ffffff" stroke="#000000" points="1922.5,-408 1922.5,-427 2068.5,-427 2068.5,-408 1922.5,-408"/>
 <text text-anchor="middle" x="1995.5" y="-415" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/te/operation.h</text>
 </a>
 </g>
 </g>
-<!-- Node51&#45;&gt;Node54 -->
+<!-- Node52&#45;&gt;Node55 -->
 <g id="edge3" class="edge">
-<title>Node51&#45;&gt;Node54</title>
+<title>Node52&#45;&gt;Node55</title>
 <path fill="none" stroke="#191970" d="M3260.8697,-475.0593C3012.2855,-463.7517 2299.7276,-431.3388 2068.74,-420.8316"/>
 <polygon fill="#191970" stroke="#191970" points="3260.7881,-478.5592 3270.9369,-475.5173 3261.1063,-471.5664 3260.7881,-478.5592"/>
 </g>
-<!-- Node73 -->
+<!-- Node74 -->
 <g id="node23" class="node">
-<title>Node73</title>
+<title>Node74</title>
 <g id="a_node23"><a xlink:href="nn_2pooling_8h.html" target="_top" xlink:title="Pooling op constructions. ">
 <polygon fill="#ffffff" stroke="#000000" points="3414,-.5 3414,-30.5 3525,-30.5 3525,-.5 3414,-.5"/>
 <text text-anchor="start" x="3422" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/nn</text>
@@ -72,30 +72,30 @@
 </a>
 </g>
 </g>
-<!-- Node51&#45;&gt;Node73 -->
+<!-- Node52&#45;&gt;Node74 -->
 <g id="edge112" class="edge">
-<title>Node51&#45;&gt;Node73</title>
+<title>Node52&#45;&gt;Node74</title>
 <path fill="none" stroke="#191970" d="M3425.2585,-467.8951C3480.0618,-459.1861 3548.0421,-446.3416 3573.5,-433 3620.4139,-408.4141 3659.5,-403.4659 3659.5,-350.5 3659.5,-350.5 3659.5,-350.5 3659.5,-149.5 3659.5,-83.2013 3581.286,-46.8159 3525.2225,-29.2509"/>
 <polygon fill="#191970" stroke="#191970" points="3424.5297,-464.4665 3415.1921,-469.4724 3425.6134,-471.3821 3424.5297,-464.4665"/>
 </g>
-<!-- Node78 -->
+<!-- Node79 -->
 <g id="node28" class="node">
-<title>Node78</title>
+<title>Node79</title>
 <g id="a_node28"><a xlink:href="topi_2nn_8h.html" target="_top" xlink:title="NN op constructions. ">
 <polygon fill="#ffffff" stroke="#000000" points="3365.5,-73 3365.5,-92 3485.5,-92 3485.5,-73 3365.5,-73"/>
 <text text-anchor="middle" x="3425.5" y="-80" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/nn.h</text>
 </a>
 </g>
 </g>
-<!-- Node51&#45;&gt;Node78 -->
+<!-- Node52&#45;&gt;Node79 -->
 <g id="edge113" class="edge">
-<title>Node51&#45;&gt;Node78</title>
+<title>Node52&#45;&gt;Node79</title>
 <path fill="none" stroke="#191970" d="M3423.0929,-467.407C3455.8368,-460.4108 3493.8368,-449.5407 3525.5,-433 3575.3635,-406.9516 3621.5,-406.7573 3621.5,-350.5 3621.5,-350.5 3621.5,-350.5 3621.5,-216.5 3621.5,-176.1307 3613.6595,-160.8344 3583.5,-134 3556.4494,-109.9317 3517.949,-97.0847 3485.726,-90.2411"/>
 <polygon fill="#191970" stroke="#191970" points="3422.2044,-464.0163 3413.1126,-469.4559 3423.6122,-470.8733 3422.2044,-464.0163"/>
 </g>
-<!-- Node79 -->
+<!-- Node80 -->
 <g id="node29" class="node">
-<title>Node79</title>
+<title>Node80</title>
 <g id="a_node29"><a xlink:href="constant__utils_8h.html" target="_top" xlink:title="Utility functions for handling constants in TVM expressions. ">
 <polygon fill="#ffffff" stroke="#000000" points="3173,-335.5 3173,-365.5 3300,-365.5 3300,-335.5 3173,-335.5"/>
 <text text-anchor="start" x="3181" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/detail</text>
@@ -103,15 +103,15 @@
 </a>
 </g>
 </g>
-<!-- Node51&#45;&gt;Node79 -->
+<!-- Node52&#45;&gt;Node80 -->
 <g id="edge109" class="edge">
-<title>Node51&#45;&gt;Node79</title>
+<title>Node52&#45;&gt;Node80</title>
 <path fill="none" stroke="#191970" d="M3332.5044,-461.6402C3310.646,-436.3356 3270.3843,-389.7264 3249.6314,-365.7016"/>
 <polygon fill="#191970" stroke="#191970" points="3329.9713,-464.062 3339.157,-469.3416 3335.2686,-459.4861 3329.9713,-464.062"/>
 </g>
-<!-- Node82 -->
+<!-- Node83 -->
 <g id="node32" class="node">
-<title>Node82</title>
+<title>Node83</title>
 <g id="a_node32"><a xlink:href="nn_2bnn_8h.html" target="_top" xlink:title="Binary op constructions. ">
 <polygon fill="#ffffff" stroke="#000000" points="3482,-268.5 3482,-298.5 3593,-298.5 3593,-268.5 3482,-268.5"/>
 <text text-anchor="start" x="3490" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/nn</text>
@@ -119,15 +119,15 @@
 </a>
 </g>
 </g>
-<!-- Node51&#45;&gt;Node82 -->
+<!-- Node52&#45;&gt;Node83 -->
 <g id="edge110" class="edge">
-<title>Node51&#45;&gt;Node82</title>
+<title>Node52&#45;&gt;Node83</title>
 <path fill="none" stroke="#191970" d="M3404.0985,-466.845C3455.7528,-452.4237 3529.1186,-422.8031 3563.5,-366 3576.4861,-344.545 3561.4651,-315.974 3549.4511,-298.7014"/>
 <polygon fill="#191970" stroke="#191970" points="3403.1498,-463.4757 3394.3981,-469.4471 3404.9635,-470.2366 3403.1498,-463.4757"/>
 </g>
-<!-- Node96 -->
+<!-- Node97 -->
 <g id="node46" class="node">
-<title>Node96</title>
+<title>Node97</title>
 <g id="a_node46"><a xlink:href="dilate_8h.html" target="_top" xlink:title="Dilate op constructions. ">
 <polygon fill="#ffffff" stroke="#000000" points="3444,-335.5 3444,-365.5 3555,-365.5 3555,-335.5 3444,-335.5"/>
 <text text-anchor="start" x="3452" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/nn</text>
@@ -135,15 +135,15 @@
 </a>
 </g>
 </g>
-<!-- Node51&#45;&gt;Node96 -->
+<!-- Node52&#45;&gt;Node97 -->
 <g id="edge111" class="edge">
-<title>Node51&#45;&gt;Node96</title>
+<title>Node52&#45;&gt;Node97</title>
 <path fill="none" stroke="#191970" d="M3366.8763,-462.6194C3396.524,-437.5554 3452.7292,-390.0398 3481.5183,-365.7016"/>
 <polygon fill="#191970" stroke="#191970" points="3364.3018,-460.2127 3358.9247,-469.3416 3368.8211,-465.5584 3364.3018,-460.2127"/>
 </g>
-<!-- Node55 -->
+<!-- Node56 -->
 <g id="node5" class="node">
-<title>Node55</title>
+<title>Node56</title>
 <g id="a_node5"><a xlink:href="cublas_8h.html" target="_top" xlink:title="External function interface to cuBLAS libraries. ">
 <polygon fill="#ffffff" stroke="#000000" points="190,-268.5 190,-298.5 323,-298.5 323,-268.5 190,-268.5"/>
 <text text-anchor="start" x="198" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/contrib</text>
@@ -151,15 +151,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node55 -->
+<!-- Node55&#45;&gt;Node56 -->
 <g id="edge4" class="edge">
-<title>Node54&#45;&gt;Node55</title>
+<title>Node55&#45;&gt;Node56</title>
 <path fill="none" stroke="#191970" d="M1941.4613,-406.1859C1931.8523,-404.5241 1921.9092,-403.0284 1912.5,-402 1792.3714,-388.8705 938.0782,-409.9252 825.5,-366 805.8296,-358.3251 808.9617,-343.1895 789.5,-335 703.3616,-298.7529 463.385,-309.2985 370.5,-299 355.1146,-297.2942 338.5967,-295.2006 323.042,-293.1104"/>
 <polygon fill="#191970" stroke="#191970" points="1940.8548,-409.633 1951.3175,-407.9653 1942.0984,-402.7443 1940.8548,-409.633"/>
 </g>
-<!-- Node56 -->
+<!-- Node57 -->
 <g id="node6" class="node">
-<title>Node56</title>
+<title>Node57</title>
 <g id="a_node6"><a xlink:href="cuda_2dense_8h.html" target="_top" xlink:title="CUDA schedule for dense operation. ">
 <polygon fill="#ffffff" stroke="#000000" points="436.5,-134.5 436.5,-164.5 558.5,-164.5 558.5,-134.5 436.5,-134.5"/>
 <text text-anchor="start" x="444.5" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/cuda</text>
@@ -167,15 +167,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node56 -->
+<!-- Node55&#45;&gt;Node57 -->
 <g id="edge9" class="edge">
-<title>Node54&#45;&gt;Node56</title>
+<title>Node55&#45;&gt;Node57</title>
 <path fill="none" stroke="#191970" d="M1940.8217,-406.1469C1931.4101,-404.5207 1921.6986,-403.0469 1912.5,-402 1723.3309,-380.47 1242.4214,-407.0089 1056.5,-366 980.4141,-349.2177 948.9777,-354.7036 894.5,-299 861.8368,-265.6018 893.0675,-230.0713 856.5,-201 811.5873,-165.2943 648.6736,-154.3261 558.5348,-150.9698"/>
 <polygon fill="#191970" stroke="#191970" points="1940.4159,-409.6301 1950.878,-407.9584 1941.6569,-402.7409 1940.4159,-409.6301"/>
 </g>
-<!-- Node57 -->
+<!-- Node58 -->
 <g id="node7" class="node">
-<title>Node57</title>
+<title>Node58</title>
 <g id="a_node7"><a xlink:href="rocm_2dense_8h.html" target="_top" xlink:title="rocm schedule for dense operation ">
 <polygon fill="#ffffff" stroke="#000000" points="479.5,-67.5 479.5,-97.5 603.5,-97.5 603.5,-67.5 479.5,-67.5"/>
 <text text-anchor="start" x="487.5" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/rocm</text>
@@ -183,15 +183,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node57 -->
+<!-- Node55&#45;&gt;Node58 -->
 <g id="edge98" class="edge">
-<title>Node54&#45;&gt;Node57</title>
+<title>Node55&#45;&gt;Node58</title>
 <path fill="none" stroke="#191970" d="M1935.7056,-406.0248C1861.6177,-391.7201 1744.5557,-368.7975 1740.5,-366 1704.8221,-341.39 1688.5,-326.8424 1688.5,-283.5 1688.5,-283.5 1688.5,-283.5 1688.5,-216.5 1688.5,-106.2952 842.3737,-86.5473 603.5744,-83.1684"/>
 <polygon fill="#191970" stroke="#191970" points="1935.3764,-409.5258 1945.8583,-407.9831 1936.7022,-402.6525 1935.3764,-409.5258"/>
 </g>
-<!-- Node58 -->
+<!-- Node59 -->
 <g id="node8" class="node">
-<title>Node58</title>
+<title>Node59</title>
 <g id="a_node8"><a xlink:href="rocblas_8h.html" target="_top" xlink:title="include/tvm/topi/contrib\l/rocblas.h">
 <polygon fill="#ffffff" stroke="#000000" points="0,-268.5 0,-298.5 133,-298.5 133,-268.5 0,-268.5"/>
 <text text-anchor="start" x="8" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/contrib</text>
@@ -199,15 +199,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node58 -->
+<!-- Node55&#45;&gt;Node59 -->
 <g id="edge7" class="edge">
-<title>Node54&#45;&gt;Node58</title>
+<title>Node55&#45;&gt;Node59</title>
 <path fill="none" stroke="#191970" d="M1941.8032,-406.1426C1932.0905,-404.4684 1922.0238,-402.9797 1912.5,-402 1814.9389,-391.9641 237.5456,-404.8675 147.5,-366 115.0652,-351.9998 88.9431,-318.2557 75.7842,-298.5329"/>
 <polygon fill="#191970" stroke="#191970" points="1941.2961,-409.6076 1951.759,-407.9409 1942.5404,-402.719 1941.2961,-409.6076"/>
 </g>
-<!-- Node59 -->
+<!-- Node60 -->
 <g id="node9" class="node">
-<title>Node59</title>
+<title>Node60</title>
 <g id="a_node9"><a xlink:href="cuda_2injective_8h.html" target="_top" xlink:title="CUDA schedule for injective operations. ">
 <polygon fill="#ffffff" stroke="#000000" points="1288.5,-268.5 1288.5,-298.5 1410.5,-298.5 1410.5,-268.5 1288.5,-268.5"/>
 <text text-anchor="start" x="1296.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/cuda</text>
@@ -215,15 +215,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node59 -->
+<!-- Node55&#45;&gt;Node60 -->
 <g id="edge10" class="edge">
-<title>Node54&#45;&gt;Node59</title>
+<title>Node55&#45;&gt;Node60</title>
 <path fill="none" stroke="#191970" d="M1937.8927,-406.1946C1929.3943,-404.686 1920.7312,-403.2358 1912.5,-402 1772.7139,-381.0124 1734.5105,-396.5571 1596.5,-366 1520.1349,-349.0919 1434.182,-317.36 1386.4742,-298.5612"/>
 <polygon fill="#191970" stroke="#191970" points="1937.2938,-409.643 1947.7578,-407.9831 1938.5426,-402.7553 1937.2938,-409.643"/>
 </g>
-<!-- Node60 -->
+<!-- Node61 -->
 <g id="node10" class="node">
-<title>Node60</title>
+<title>Node61</title>
 <g id="a_node10"><a xlink:href="rocm_2injective_8h.html" target="_top" xlink:title="rocm schedule for injective operations ">
 <polygon fill="#ffffff" stroke="#000000" points="1287.5,-201.5 1287.5,-231.5 1411.5,-231.5 1411.5,-201.5 1287.5,-201.5"/>
 <text text-anchor="start" x="1295.5" y="-219.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/rocm</text>
@@ -231,15 +231,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node60 -->
+<!-- Node55&#45;&gt;Node61 -->
 <g id="edge99" class="edge">
-<title>Node54&#45;&gt;Node60</title>
+<title>Node55&#45;&gt;Node61</title>
 <path fill="none" stroke="#191970" d="M1936.0311,-406.1378C1928.1262,-404.7027 1920.1222,-403.2878 1912.5,-402 1807.0139,-384.1779 1759.701,-430.6972 1674.5,-366 1636.4759,-337.1265 1668.0699,-297.462 1630.5,-268 1597.2773,-241.9471 1483.9636,-227.7693 1411.7798,-221.1944"/>
 <polygon fill="#191970" stroke="#191970" points="1935.4875,-409.5964 1945.9549,-407.9583 1936.7506,-402.7113 1935.4875,-409.5964"/>
 </g>
-<!-- Node61 -->
+<!-- Node62 -->
 <g id="node11" class="node">
-<title>Node61</title>
+<title>Node62</title>
 <g id="a_node11"><a xlink:href="cuda_2normalization_8h.html" target="_top" xlink:title="CUDA schedule for LRN and l2 normalization operations. ">
 <polygon fill="#ffffff" stroke="#000000" points="658.5,-335.5 658.5,-365.5 780.5,-365.5 780.5,-335.5 658.5,-335.5"/>
 <text text-anchor="start" x="666.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/cuda</text>
@@ -247,15 +247,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node61 -->
+<!-- Node55&#45;&gt;Node62 -->
 <g id="edge12" class="edge">
-<title>Node54&#45;&gt;Node61</title>
+<title>Node55&#45;&gt;Node62</title>
 <path fill="none" stroke="#191970" d="M1941.4621,-406.1787C1931.853,-404.5176 1921.9097,-403.0241 1912.5,-402 1418.2718,-348.2124 1288.1897,-424.524 794.5,-366 790.0108,-365.4678 785.3911,-364.8036 780.7548,-364.0518"/>
 <polygon fill="#191970" stroke="#191970" points="1940.8557,-409.6257 1951.3184,-407.9577 1942.0991,-402.737 1940.8557,-409.6257"/>
 </g>
-<!-- Node62 -->
+<!-- Node63 -->
 <g id="node12" class="node">
-<title>Node62</title>
+<title>Node63</title>
 <g id="a_node12"><a xlink:href="cuda_2pooling_8h.html" target="_top" xlink:title="CUDA schedule for pooling operations. ">
 <polygon fill="#ffffff" stroke="#000000" points="1970.5,-268.5 1970.5,-298.5 2092.5,-298.5 2092.5,-268.5 1970.5,-268.5"/>
 <text text-anchor="start" x="1978.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/cuda</text>
@@ -263,15 +263,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node62 -->
+<!-- Node55&#45;&gt;Node63 -->
 <g id="edge13" class="edge">
-<title>Node54&#45;&gt;Node62</title>
+<title>Node55&#45;&gt;Node63</title>
 <path fill="none" stroke="#191970" d="M2078.7479,-412.3959C2188.2783,-404.8171 2369.3376,-388.9693 2389.5,-366 2398.5891,-355.6455 2398.5221,-345.4129 2389.5,-335 2370.3798,-312.9325 2190.0579,-295.7453 2092.874,-287.9961"/>
 <polygon fill="#191970" stroke="#191970" points="2078.4443,-408.9083 2068.706,-413.0814 2078.9212,-415.8921 2078.4443,-408.9083"/>
 </g>
-<!-- Node63 -->
+<!-- Node64 -->
 <g id="node13" class="node">
-<title>Node63</title>
+<title>Node64</title>
 <g id="a_node13"><a xlink:href="rocm_2pooling_8h.html" target="_top" xlink:title="rocm schedule for pooling operations ">
 <polygon fill="#ffffff" stroke="#000000" points="1988.5,-201.5 1988.5,-231.5 2112.5,-231.5 2112.5,-201.5 1988.5,-201.5"/>
 <text text-anchor="start" x="1996.5" y="-219.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/rocm</text>
@@ -279,15 +279,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node63 -->
+<!-- Node55&#45;&gt;Node64 -->
 <g id="edge101" class="edge">
-<title>Node54&#45;&gt;Node63</title>
+<title>Node55&#45;&gt;Node64</title>
 <path fill="none" stroke="#191970" d="M2078.9227,-412.9001C2193.0238,-405.7427 2386.1404,-390.1958 2407.5,-366 2495.1046,-266.763 2236.4726,-231.7273 2112.6062,-220.8491"/>
 <polygon fill="#191970" stroke="#191970" points="2078.5792,-409.4145 2068.8144,-413.5252 2079.0114,-416.4012 2078.5792,-409.4145"/>
 </g>
-<!-- Node64 -->
+<!-- Node65 -->
 <g id="node14" class="node">
-<title>Node64</title>
+<title>Node65</title>
 <g id="a_node14"><a xlink:href="cuda_2reduction_8h.html" target="_top" xlink:title="CUDA schedule for reduction operations. ">
 <polygon fill="#ffffff" stroke="#000000" points="1716.5,-268.5 1716.5,-298.5 1838.5,-298.5 1838.5,-268.5 1716.5,-268.5"/>
 <text text-anchor="start" x="1724.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/cuda</text>
@@ -295,15 +295,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node64 -->
+<!-- Node55&#45;&gt;Node65 -->
 <g id="edge15" class="edge">
-<title>Node54&#45;&gt;Node64</title>
+<title>Node55&#45;&gt;Node65</title>
 <path fill="none" stroke="#191970" d="M1936.158,-405.9764C1864.6026,-391.9444 1753.4656,-369.6538 1750.5,-366 1734.4495,-346.2249 1751.3575,-316.6051 1764.7033,-298.7568"/>
 <polygon fill="#191970" stroke="#191970" points="1935.9243,-409.497 1946.4105,-407.9836 1937.2693,-402.6275 1935.9243,-409.497"/>
 </g>
-<!-- Node65 -->
+<!-- Node66 -->
 <g id="node15" class="node">
-<title>Node65</title>
+<title>Node66</title>
 <g id="a_node15"><a xlink:href="rocm_2reduction_8h.html" target="_top" xlink:title="rocm schedule for reduction operations ">
 <polygon fill="#ffffff" stroke="#000000" points="1716.5,-201.5 1716.5,-231.5 1840.5,-231.5 1840.5,-201.5 1716.5,-201.5"/>
 <text text-anchor="start" x="1724.5" y="-219.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/rocm</text>
@@ -311,15 +311,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node65 -->
+<!-- Node55&#45;&gt;Node66 -->
 <g id="edge102" class="edge">
-<title>Node54&#45;&gt;Node65</title>
+<title>Node55&#45;&gt;Node66</title>
 <path fill="none" stroke="#191970" d="M1940.2385,-405.8434C1879.091,-392.6832 1788.4407,-372.2846 1783.5,-366 1774.9848,-355.1686 1776.5443,-346.8931 1783.5,-335 1799.976,-306.8286 1831.024,-327.1714 1847.5,-299 1854.4557,-287.1069 1853.6759,-280.3161 1847.5,-268 1839.5935,-252.2327 1824.3158,-240.0591 1810.1421,-231.5161"/>
 <polygon fill="#191970" stroke="#191970" points="1939.645,-409.2956 1950.1566,-407.9703 1941.1128,-402.4512 1939.645,-409.2956"/>
 </g>
-<!-- Node66 -->
+<!-- Node67 -->
 <g id="node16" class="node">
-<title>Node66</title>
+<title>Node67</title>
 <g id="a_node16"><a xlink:href="cuda_2softmax_8h.html" target="_top" xlink:title="include/tvm/topi/cuda\l/softmax.h">
 <polygon fill="#ffffff" stroke="#000000" points="725.5,-268.5 725.5,-298.5 847.5,-298.5 847.5,-268.5 725.5,-268.5"/>
 <text text-anchor="start" x="733.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/cuda</text>
@@ -327,15 +327,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node66 -->
+<!-- Node55&#45;&gt;Node67 -->
 <g id="edge17" class="edge">
-<title>Node54&#45;&gt;Node66</title>
+<title>Node55&#45;&gt;Node67</title>
 <path fill="none" stroke="#191970" d="M1941.46,-406.1972C1931.8512,-404.5341 1921.9085,-403.0351 1912.5,-402 1797.348,-389.3311 976.954,-411.6951 870.5,-366 837.6292,-351.8903 810.4457,-318.5189 796.5345,-298.8137"/>
 <polygon fill="#191970" stroke="#191970" points="1940.8534,-409.6442 1951.3162,-407.9771 1942.0974,-402.7556 1940.8534,-409.6442"/>
 </g>
-<!-- Node67 -->
+<!-- Node68 -->
 <g id="node17" class="node">
-<title>Node67</title>
+<title>Node68</title>
 <g id="a_node17"><a xlink:href="rocm_2softmax_8h.html" target="_top" xlink:title="include/tvm/topi/rocm\l/softmax.h">
 <polygon fill="#ffffff" stroke="#000000" points="723.5,-201.5 723.5,-231.5 847.5,-231.5 847.5,-201.5 723.5,-201.5"/>
 <text text-anchor="start" x="731.5" y="-219.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/rocm</text>
@@ -343,15 +343,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node67 -->
+<!-- Node55&#45;&gt;Node68 -->
 <g id="edge103" class="edge">
-<title>Node54&#45;&gt;Node67</title>
+<title>Node55&#45;&gt;Node68</title>
 <path fill="none" stroke="#191970" d="M1941.4655,-406.1464C1931.8561,-404.4888 1921.9118,-403.0048 1912.5,-402 1770.9151,-386.8843 762.683,-421.3697 631.5,-366 582.4239,-345.286 529.341,-309.6895 562.5,-268 582.2873,-243.1222 664.4498,-229.2245 723.2892,-222.2996"/>
 <polygon fill="#191970" stroke="#191970" points="1940.8596,-409.5935 1951.322,-407.9238 1942.1019,-402.7046 1940.8596,-409.5935"/>
 </g>
-<!-- Node68 -->
+<!-- Node69 -->
 <g id="node18" class="node">
-<title>Node68</title>
+<title>Node69</title>
 <g id="a_node18"><a xlink:href="array__utils_8h.html" target="_top" xlink:title="Utility functions for handling arrays. ">
 <polygon fill="#ffffff" stroke="#000000" points="1793,-335.5 1793,-365.5 1920,-365.5 1920,-335.5 1793,-335.5"/>
 <text text-anchor="start" x="1801" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/detail</text>
@@ -359,15 +359,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node68 -->
+<!-- Node55&#45;&gt;Node69 -->
 <g id="edge19" class="edge">
-<title>Node54&#45;&gt;Node68</title>
+<title>Node55&#45;&gt;Node69</title>
 <path fill="none" stroke="#191970" d="M1966.3151,-403.4324C1943.2757,-392.3271 1911.2017,-376.867 1887.6646,-365.5218"/>
 <polygon fill="#191970" stroke="#191970" points="1965.0568,-406.7113 1975.5847,-407.9005 1968.0963,-400.4056 1965.0568,-406.7113"/>
 </g>
-<!-- Node69 -->
+<!-- Node70 -->
 <g id="node19" class="node">
-<title>Node69</title>
+<title>Node70</title>
 <g id="a_node19"><a xlink:href="detail_2broadcast_8h.html" target="_top" xlink:title="Detail broadcast. ">
 <polygon fill="#ffffff" stroke="#000000" points="2903,-268.5 2903,-298.5 3030,-298.5 3030,-268.5 2903,-268.5"/>
 <text text-anchor="start" x="2911" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/detail</text>
@@ -375,30 +375,30 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node69 -->
+<!-- Node55&#45;&gt;Node70 -->
 <g id="edge24" class="edge">
-<title>Node54&#45;&gt;Node69</title>
+<title>Node55&#45;&gt;Node70</title>
 <path fill="none" stroke="#191970" d="M2078.8033,-415.6687C2304.55,-410.3519 2913.3935,-393.5211 2946.5,-366 2966.1065,-349.7013 2968.3472,-317.7552 2967.7392,-298.7534"/>
 <polygon fill="#191970" stroke="#191970" points="2078.585,-412.1728 2068.6696,-415.9057 2078.7487,-419.1708 2078.585,-412.1728"/>
 </g>
-<!-- Node72 -->
+<!-- Node73 -->
 <g id="node22" class="node">
-<title>Node72</title>
+<title>Node73</title>
 <g id="a_node22"><a xlink:href="reduction_8h.html" target="_top" xlink:title="Reduction op constructors. ">
 <polygon fill="#ffffff" stroke="#000000" points="2909.5,-73 2909.5,-92 3063.5,-92 3063.5,-73 2909.5,-73"/>
 <text text-anchor="middle" x="2986.5" y="-80" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/reduction.h</text>
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node72 -->
+<!-- Node55&#45;&gt;Node73 -->
 <g id="edge97" class="edge">
-<title>Node54&#45;&gt;Node72</title>
+<title>Node55&#45;&gt;Node73</title>
 <path fill="none" stroke="#191970" d="M2078.8447,-413.9337C2218.5526,-407.2864 2488.2506,-391.3364 2523.5,-366 2556.1307,-342.5458 2560.5,-323.6854 2560.5,-283.5 2560.5,-283.5 2560.5,-283.5 2560.5,-216.5 2560.5,-123.6225 2664.0847,-162.4421 2752.5,-134 2811.5022,-115.0197 2881.0921,-100.6875 2928.9573,-92.0225"/>
 <polygon fill="#191970" stroke="#191970" points="2078.4305,-410.4492 2068.606,-414.4153 2078.7594,-417.4415 2078.4305,-410.4492"/>
 </g>
-<!-- Node74 -->
+<!-- Node75 -->
 <g id="node24" class="node">
-<title>Node74</title>
+<title>Node75</title>
 <g id="a_node24"><a xlink:href="nn_2softmax_8h.html" target="_top" xlink:title="Softmax op constructions. ">
 <polygon fill="#ffffff" stroke="#000000" points="2422,-.5 2422,-30.5 2533,-30.5 2533,-.5 2422,-.5"/>
 <text text-anchor="start" x="2430" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/nn</text>
@@ -406,15 +406,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node74 -->
+<!-- Node55&#45;&gt;Node75 -->
 <g id="edge95" class="edge">
-<title>Node54&#45;&gt;Node74</title>
+<title>Node55&#45;&gt;Node75</title>
 <path fill="none" stroke="#191970" d="M1980.6976,-399.9321C1967.4791,-382.009 1952.3561,-354.1788 1967.5,-335 2010.2553,-280.8531 2064.7105,-342.204 2118.5,-299 2150.27,-273.4822 2158.5,-257.2492 2158.5,-216.5 2158.5,-216.5 2158.5,-216.5 2158.5,-149.5 2158.5,-93.0345 2330.5388,-47.2356 2421.9344,-26.889"/>
 <polygon fill="#191970" stroke="#191970" points="1977.9752,-402.1325 1986.8927,-407.8535 1983.4892,-397.8202 1977.9752,-402.1325"/>
 </g>
-<!-- Node75 -->
+<!-- Node76 -->
 <g id="node25" class="node">
-<title>Node75</title>
+<title>Node76</title>
 <g id="a_node25"><a xlink:href="reorg_8h.html" target="_top" xlink:title="Reorg op constructions. ">
 <polygon fill="#ffffff" stroke="#000000" points="2870.5,-.5 2870.5,-30.5 2998.5,-30.5 2998.5,-.5 2870.5,-.5"/>
 <text text-anchor="start" x="2878.5" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/vision</text>
@@ -422,15 +422,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node75 -->
+<!-- Node55&#45;&gt;Node76 -->
 <g id="edge105" class="edge">
-<title>Node54&#45;&gt;Node75</title>
+<title>Node55&#45;&gt;Node76</title>
 <path fill="none" stroke="#191970" d="M2078.8088,-415.9082C2188.3084,-412.4274 2373.4478,-401.3362 2430.5,-366 2467.7558,-342.9251 2484.5,-327.3229 2484.5,-283.5 2484.5,-283.5 2484.5,-283.5 2484.5,-149.5 2484.5,-70.0227 2745.597,-33.8752 2870.026,-21.1613"/>
 <polygon fill="#191970" stroke="#191970" points="2078.6701,-412.4107 2068.7809,-416.2125 2078.8825,-419.4075 2078.6701,-412.4107"/>
 </g>
-<!-- Node76 -->
+<!-- Node77 -->
 <g id="node26" class="node">
-<title>Node76</title>
+<title>Node77</title>
 <g id="a_node26"><a xlink:href="bias__add_8h.html" target="_top" xlink:title="bias_add op constructions ">
 <polygon fill="#ffffff" stroke="#000000" points="2742,-67.5 2742,-97.5 2853,-97.5 2853,-67.5 2742,-67.5"/>
 <text text-anchor="start" x="2750" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/nn</text>
@@ -438,63 +438,63 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node76 -->
+<!-- Node55&#45;&gt;Node77 -->
 <g id="edge86" class="edge">
-<title>Node54&#45;&gt;Node76</title>
+<title>Node55&#45;&gt;Node77</title>
 <path fill="none" stroke="#191970" d="M2078.8124,-414.0074C2213.436,-407.6246 2466.9967,-392.2595 2498.5,-366 2527.8327,-341.5498 2522.5,-321.6867 2522.5,-283.5 2522.5,-283.5 2522.5,-283.5 2522.5,-216.5 2522.5,-178.3133 2518.4304,-159.8905 2546.5,-134 2574.4165,-108.2507 2676.7574,-93.9393 2741.8222,-87.2632"/>
 <polygon fill="#191970" stroke="#191970" points="2078.3644,-410.5244 2068.5389,-414.488 2078.6915,-417.5167 2078.3644,-410.5244"/>
 </g>
-<!-- Node77 -->
+<!-- Node78 -->
 <g id="node27" class="node">
-<title>Node77</title>
+<title>Node78</title>
 <g id="a_node27"><a xlink:href="topi_2transform_8h.html" target="_top" xlink:title="Transform op constructors. ">
 <polygon fill="#ffffff" stroke="#000000" points="2761.5,-140 2761.5,-159 2917.5,-159 2917.5,-140 2761.5,-140"/>
 <text text-anchor="middle" x="2839.5" y="-147" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/transform.h</text>
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node77 -->
+<!-- Node55&#45;&gt;Node78 -->
 <g id="edge104" class="edge">
-<title>Node54&#45;&gt;Node77</title>
+<title>Node55&#45;&gt;Node78</title>
 <path fill="none" stroke="#191970" d="M2078.8657,-414.1435C2229.0081,-407.5059 2533.1726,-391.1333 2574.5,-366 2648.7673,-320.8344 2610.7112,-254.1381 2679.5,-201 2707.7895,-179.1469 2745.6414,-166.4156 2777.4265,-159.0801"/>
 <polygon fill="#191970" stroke="#191970" points="2078.6026,-410.6515 2068.7653,-414.5856 2078.9088,-417.6448 2078.6026,-410.6515"/>
 </g>
-<!-- Node54&#45;&gt;Node78 -->
+<!-- Node55&#45;&gt;Node79 -->
 <g id="edge96" class="edge">
-<title>Node54&#45;&gt;Node78</title>
+<title>Node55&#45;&gt;Node79</title>
 <path fill="none" stroke="#191970" d="M2078.6248,-415.8603C2358.4479,-410.129 3251.8768,-390.0303 3308.5,-366 3418.537,-319.3015 3425.5579,-136.483 3425.6197,-92.1996"/>
 <polygon fill="#191970" stroke="#191970" points="2078.4611,-412.3628 2068.5346,-416.0661 2078.604,-419.3613 2078.4611,-412.3628"/>
 </g>
-<!-- Node54&#45;&gt;Node79 -->
+<!-- Node55&#45;&gt;Node80 -->
 <g id="edge40" class="edge">
-<title>Node54&#45;&gt;Node79</title>
+<title>Node55&#45;&gt;Node80</title>
 <path fill="none" stroke="#191970" d="M2078.9669,-414.7463C2259.5737,-408.5127 2700.0784,-391.8245 3068.5,-366 3102.9782,-363.5833 3141.3657,-360.1013 3172.7332,-357.0495"/>
 <polygon fill="#191970" stroke="#191970" points="2078.6189,-411.2561 2068.745,-415.0975 2078.8593,-418.252 2078.6189,-411.2561"/>
 </g>
-<!-- Node81 -->
+<!-- Node82 -->
 <g id="node31" class="node">
-<title>Node81</title>
+<title>Node82</title>
 <g id="a_node31"><a xlink:href="einsum_8h.html" target="_top" xlink:title="Einstein summation op. ">
 <polygon fill="#ffffff" stroke="#000000" points="2664.5,-274 2664.5,-293 2808.5,-293 2808.5,-274 2664.5,-274"/>
 <text text-anchor="middle" x="2736.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/einsum.h</text>
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node81 -->
+<!-- Node55&#45;&gt;Node82 -->
 <g id="edge82" class="edge">
-<title>Node54&#45;&gt;Node81</title>
+<title>Node55&#45;&gt;Node82</title>
 <path fill="none" stroke="#191970" d="M2078.9656,-414.9255C2272.9319,-408.5374 2739.4264,-390.6748 2762.5,-366 2781.8858,-345.2689 2758.4757,-310.1812 2744.8941,-293.235"/>
 <polygon fill="#191970" stroke="#191970" points="2078.7,-411.4322 2068.8198,-415.2574 2078.9289,-418.4285 2078.7,-411.4322"/>
 </g>
-<!-- Node54&#45;&gt;Node82 -->
+<!-- Node55&#45;&gt;Node83 -->
 <g id="edge87" class="edge">
-<title>Node54&#45;&gt;Node82</title>
+<title>Node55&#45;&gt;Node83</title>
 <path fill="none" stroke="#191970" d="M2078.677,-417.2331C2360.3666,-415.9432 3267.7305,-408.4986 3391.5,-366 3413.7827,-358.3488 3414.3429,-347.1965 3434.5,-335 3456.9077,-321.4417 3483.3537,-308.2739 3503.8375,-298.6472"/>
 <polygon fill="#191970" stroke="#191970" points="2078.5073,-413.7337 2068.523,-417.2781 2078.5385,-420.7336 2078.5073,-413.7337"/>
 </g>
-<!-- Node83 -->
+<!-- Node84 -->
 <g id="node33" class="node">
-<title>Node83</title>
+<title>Node84</title>
 <g id="a_node33"><a xlink:href="flatten_8h.html" target="_top" xlink:title="Softmax op constructions. ">
 <polygon fill="#ffffff" stroke="#000000" points="3048,-268.5 3048,-298.5 3159,-298.5 3159,-268.5 3048,-268.5"/>
 <text text-anchor="start" x="3056" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/nn</text>
@@ -502,15 +502,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node83 -->
+<!-- Node55&#45;&gt;Node84 -->
 <g id="edge92" class="edge">
-<title>Node54&#45;&gt;Node83</title>
+<title>Node55&#45;&gt;Node84</title>
 <path fill="none" stroke="#191970" d="M2079.0224,-415.4474C2299.4581,-409.6963 2885.7595,-392.1192 2969.5,-366 3015.1405,-351.7644 3061.0002,-318.4393 3085.4515,-298.7758"/>
 <polygon fill="#191970" stroke="#191970" points="2078.7114,-411.9542 2068.8055,-415.7123 2078.8929,-418.9518 2078.7114,-411.9542"/>
 </g>
-<!-- Node84 -->
+<!-- Node85 -->
 <g id="node34" class="node">
-<title>Node84</title>
+<title>Node85</title>
 <g id="a_node34"><a xlink:href="detail_2extern_8h.html" target="_top" xlink:title="Helpers for using external functions. ">
 <polygon fill="#ffffff" stroke="#000000" points="193,-335.5 193,-365.5 320,-365.5 320,-335.5 193,-335.5"/>
 <text text-anchor="start" x="201" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/detail</text>
@@ -518,15 +518,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node84 -->
+<!-- Node55&#45;&gt;Node85 -->
 <g id="edge52" class="edge">
-<title>Node54&#45;&gt;Node84</title>
+<title>Node55&#45;&gt;Node85</title>
 <path fill="none" stroke="#191970" d="M1941.8011,-406.1621C1932.0887,-404.4858 1922.0226,-402.9914 1912.5,-402 1216.0812,-329.4955 1033.7556,-440.0545 337.5,-366 331.8051,-365.3943 325.9122,-364.5994 320.0224,-363.6893"/>
 <polygon fill="#191970" stroke="#191970" points="1941.2939,-409.627 1951.7569,-407.9613 1942.5388,-402.7386 1941.2939,-409.627"/>
 </g>
-<!-- Node85 -->
+<!-- Node86 -->
 <g id="node35" class="node">
-<title>Node85</title>
+<title>Node86</title>
 <g id="a_node35"><a xlink:href="fuse_8h.html" target="_top" xlink:title="Fuse operation. ">
 <polygon fill="#ffffff" stroke="#000000" points="1197,-335.5 1197,-365.5 1324,-365.5 1324,-335.5 1197,-335.5"/>
 <text text-anchor="start" x="1205" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/detail</text>
@@ -534,15 +534,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node85 -->
+<!-- Node55&#45;&gt;Node86 -->
 <g id="edge55" class="edge">
-<title>Node54&#45;&gt;Node85</title>
+<title>Node55&#45;&gt;Node86</title>
 <path fill="none" stroke="#191970" d="M1939.5153,-406.1718C1930.5083,-404.6015 1921.2663,-403.139 1912.5,-402 1697.274,-374.0361 1641.7747,-384.1503 1425.5,-366 1392.0981,-363.1968 1354.9263,-359.735 1324.3332,-356.7945"/>
 <polygon fill="#191970" stroke="#191970" points="1939.0848,-409.6505 1949.547,-407.9792 1940.326,-402.7615 1939.0848,-409.6505"/>
 </g>
-<!-- Node86 -->
+<!-- Node87 -->
 <g id="node36" class="node">
-<title>Node86</title>
+<title>Node87</title>
 <g id="a_node36"><a xlink:href="generic_2default_8h.html" target="_top" xlink:title="Generic default schedule. ">
 <polygon fill="#ffffff" stroke="#000000" points="572,-268.5 572,-298.5 707,-298.5 707,-268.5 572,-268.5"/>
 <text text-anchor="start" x="580" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/generic</text>
@@ -550,15 +550,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node86 -->
+<!-- Node55&#45;&gt;Node87 -->
 <g id="edge83" class="edge">
-<title>Node54&#45;&gt;Node86</title>
+<title>Node55&#45;&gt;Node87</title>
 <path fill="none" stroke="#191970" d="M1941.4652,-406.1496C1931.8558,-404.4916 1921.9116,-403.0067 1912.5,-402 1842.703,-394.5343 701.3684,-413.2972 649.5,-366 631.0566,-349.182 632.9738,-317.4185 636.1557,-298.5897"/>
 <polygon fill="#191970" stroke="#191970" points="1940.8592,-409.5967 1951.3217,-407.9271 1942.1016,-402.7078 1940.8592,-409.5967"/>
 </g>
-<!-- Node87 -->
+<!-- Node88 -->
 <g id="node37" class="node">
-<title>Node87</title>
+<title>Node88</title>
 <g id="a_node37"><a xlink:href="generic_2extern_8h.html" target="_top" xlink:title="Schedule for extern followed by injective ops. ">
 <polygon fill="#ffffff" stroke="#000000" points="475,-201.5 475,-231.5 610,-231.5 610,-201.5 475,-201.5"/>
 <text text-anchor="start" x="483" y="-219.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/generic</text>
@@ -566,15 +566,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node87 -->
+<!-- Node55&#45;&gt;Node88 -->
 <g id="edge84" class="edge">
-<title>Node54&#45;&gt;Node87</title>
+<title>Node55&#45;&gt;Node88</title>
 <path fill="none" stroke="#191970" d="M1941.7992,-406.1809C1932.0869,-404.5026 1922.0214,-403.0027 1912.5,-402 1754.7662,-385.3894 638.0869,-409.2793 485.5,-366 428.592,-349.8588 399.9756,-350.286 370.5,-299 363.6346,-287.0546 362.2727,-279.0516 370.5,-268 383.3433,-250.7478 432.3212,-237.1303 474.7438,-228.2422"/>
 <polygon fill="#191970" stroke="#191970" points="1941.2917,-409.6458 1951.7549,-407.9809 1942.5372,-402.7575 1941.2917,-409.6458"/>
 </g>
-<!-- Node88 -->
+<!-- Node89 -->
 <g id="node38" class="node">
-<title>Node88</title>
+<title>Node89</title>
 <g id="a_node38"><a xlink:href="generic_2injective_8h.html" target="_top" xlink:title="Generic schedule for injective operations. ">
 <polygon fill="#ffffff" stroke="#000000" points="380,-268.5 380,-298.5 515,-298.5 515,-268.5 380,-268.5"/>
 <text text-anchor="start" x="388" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/generic</text>
@@ -582,15 +582,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node88 -->
+<!-- Node55&#45;&gt;Node89 -->
 <g id="edge85" class="edge">
-<title>Node54&#45;&gt;Node88</title>
+<title>Node55&#45;&gt;Node89</title>
 <path fill="none" stroke="#191970" d="M1941.7985,-406.1872C1932.0863,-404.5083 1922.021,-403.0065 1912.5,-402 1759.6331,-385.8399 670.6478,-426.8831 529.5,-366 496.8645,-351.9229 470.345,-318.2077 456.9574,-298.5104"/>
 <polygon fill="#191970" stroke="#191970" points="1941.2909,-409.6521 1951.7542,-407.9875 1942.5366,-402.7638 1941.2909,-409.6521"/>
 </g>
-<!-- Node89 -->
+<!-- Node90 -->
 <g id="node39" class="node">
-<title>Node89</title>
+<title>Node90</title>
 <g id="a_node39"><a xlink:href="x86_2bnn_8h.html" target="_top" xlink:title="x86 schedule for binary operations ">
 <polygon fill="#ffffff" stroke="#000000" points="904,-268.5 904,-298.5 1021,-298.5 1021,-268.5 904,-268.5"/>
 <text text-anchor="start" x="912" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/x86</text>
@@ -598,15 +598,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node89 -->
+<!-- Node55&#45;&gt;Node90 -->
 <g id="edge106" class="edge">
-<title>Node54&#45;&gt;Node89</title>
+<title>Node55&#45;&gt;Node90</title>
 <path fill="none" stroke="#191970" d="M1940.8176,-406.1827C1931.4065,-404.5523 1921.6962,-403.0679 1912.5,-402 1741.9045,-382.1892 1307.3071,-406.8742 1140.5,-366 1082.4412,-351.7733 1020.331,-318.2799 987.0104,-298.6224"/>
 <polygon fill="#191970" stroke="#191970" points="1940.4112,-409.6658 1950.8737,-407.9963 1941.6537,-402.7769 1940.4112,-409.6658"/>
 </g>
-<!-- Node90 -->
+<!-- Node91 -->
 <g id="node40" class="node">
-<title>Node90</title>
+<title>Node91</title>
 <g id="a_node40"><a xlink:href="x86_2default_8h.html" target="_top" xlink:title="default x86 schedule ">
 <polygon fill="#ffffff" stroke="#000000" points="1039,-268.5 1039,-298.5 1156,-298.5 1156,-268.5 1039,-268.5"/>
 <text text-anchor="start" x="1047" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/x86</text>
@@ -614,15 +614,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node90 -->
+<!-- Node55&#45;&gt;Node91 -->
 <g id="edge107" class="edge">
-<title>Node54&#45;&gt;Node90</title>
+<title>Node55&#45;&gt;Node91</title>
 <path fill="none" stroke="#191970" d="M1940.4864,-406.1494C1931.1783,-404.5386 1921.5876,-403.0692 1912.5,-402 1752.2954,-383.151 1336.3397,-428.1895 1187.5,-366 1153.2738,-351.6993 1123.7842,-318.3981 1108.5493,-298.7563"/>
 <polygon fill="#191970" stroke="#191970" points="1939.9768,-409.6138 1950.4386,-407.9405 1941.2167,-402.7245 1939.9768,-409.6138"/>
 </g>
-<!-- Node91 -->
+<!-- Node92 -->
 <g id="node41" class="node">
-<title>Node91</title>
+<title>Node92</title>
 <g id="a_node41"><a xlink:href="x86_2injective_8h.html" target="_top" xlink:title="x86 schedule for injective ops ">
 <polygon fill="#ffffff" stroke="#000000" points="1505,-268.5 1505,-298.5 1622,-298.5 1622,-268.5 1505,-268.5"/>
 <text text-anchor="start" x="1513" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/x86</text>
@@ -630,15 +630,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node91 -->
+<!-- Node55&#45;&gt;Node92 -->
 <g id="edge108" class="edge">
-<title>Node54&#45;&gt;Node91</title>
+<title>Node55&#45;&gt;Node92</title>
 <path fill="none" stroke="#191970" d="M1936.9581,-406.1519C1928.757,-404.6835 1920.4257,-403.256 1912.5,-402 1790.3189,-382.6382 1745.7624,-424.0072 1636.5,-366 1607.1078,-350.3958 1583.9464,-317.8906 1572.1243,-298.668"/>
 <polygon fill="#191970" stroke="#191970" points="1936.3959,-409.607 1946.861,-407.9544 1937.6495,-402.7202 1936.3959,-409.607"/>
 </g>
-<!-- Node92 -->
+<!-- Node93 -->
 <g id="node42" class="node">
-<title>Node92</title>
+<title>Node93</title>
 <g id="a_node42"><a xlink:href="pad__utils_8h.html" target="_top" xlink:title="Padding helpers. ">
 <polygon fill="#ffffff" stroke="#000000" points="3448,-134.5 3448,-164.5 3575,-164.5 3575,-134.5 3448,-134.5"/>
 <text text-anchor="start" x="3456" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/detail</text>
@@ -646,15 +646,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node92 -->
+<!-- Node55&#45;&gt;Node93 -->
 <g id="edge73" class="edge">
-<title>Node54&#45;&gt;Node92</title>
+<title>Node55&#45;&gt;Node93</title>
 <path fill="none" stroke="#191970" d="M2078.9676,-415.8787C2365.4324,-410.1133 3294.258,-389.6774 3353.5,-366 3358.7267,-363.911 3425.9828,-303.3945 3429.5,-299 3465.0161,-254.6257 3493.383,-192.7191 3505.3468,-164.5392"/>
 <polygon fill="#191970" stroke="#191970" points="2078.5723,-412.3859 2068.6445,-416.0857 2078.7127,-419.3844 2078.5723,-412.3859"/>
 </g>
-<!-- Node93 -->
+<!-- Node94 -->
 <g id="node43" class="node">
-<title>Node93</title>
+<title>Node94</title>
 <g id="a_node43"><a xlink:href="ravel__unravel_8h.html" target="_top" xlink:title="Index ravel and unraval operations. ">
 <polygon fill="#ffffff" stroke="#000000" points="2811,-335.5 2811,-365.5 2938,-365.5 2938,-335.5 2811,-335.5"/>
 <text text-anchor="start" x="2819" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/detail</text>
@@ -662,15 +662,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node93 -->
+<!-- Node55&#45;&gt;Node94 -->
 <g id="edge75" class="edge">
-<title>Node54&#45;&gt;Node93</title>
+<title>Node55&#45;&gt;Node94</title>
 <path fill="none" stroke="#191970" d="M2078.9293,-415.7575C2224.9446,-411.9015 2536.0811,-400.0953 2796.5,-366 2801.1545,-365.3906 2805.9485,-364.6697 2810.7628,-363.8776"/>
 <polygon fill="#191970" stroke="#191970" points="2078.6108,-412.2645 2068.7045,-416.0216 2078.7916,-419.2621 2078.6108,-412.2645"/>
 </g>
-<!-- Node94 -->
+<!-- Node95 -->
 <g id="node44" class="node">
-<title>Node94</title>
+<title>Node95</title>
 <g id="a_node44"><a xlink:href="tensor__utils_8h.html" target="_top" xlink:title="Utility functions for handling tensor. ">
 <polygon fill="#ffffff" stroke="#000000" points="2627,-335.5 2627,-365.5 2754,-365.5 2754,-335.5 2627,-335.5"/>
 <text text-anchor="start" x="2635" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/detail</text>
@@ -678,15 +678,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node94 -->
+<!-- Node55&#45;&gt;Node95 -->
 <g id="edge79" class="edge">
-<title>Node54&#45;&gt;Node94</title>
+<title>Node55&#45;&gt;Node95</title>
 <path fill="none" stroke="#191970" d="M2079.057,-413.5239C2197.9838,-407.1849 2422.7086,-392.6914 2612.5,-366 2617.1484,-365.3463 2621.938,-364.5928 2626.7492,-363.7775"/>
 <polygon fill="#191970" stroke="#191970" points="2078.7334,-410.036 2068.9314,-414.0575 2079.1018,-417.0263 2078.7334,-410.036"/>
 </g>
-<!-- Node95 -->
+<!-- Node96 -->
 <g id="node45" class="node">
-<title>Node95</title>
+<title>Node96</title>
 <g id="a_node45"><a xlink:href="nn_2dense_8h.html" target="_top" xlink:title="Dense op constructions. ">
 <polygon fill="#ffffff" stroke="#000000" points="307,-201.5 307,-231.5 418,-231.5 418,-201.5 307,-201.5"/>
 <text text-anchor="start" x="315" y="-219.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/nn</text>
@@ -694,21 +694,21 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node95 -->
+<!-- Node55&#45;&gt;Node96 -->
 <g id="edge88" class="edge">
-<title>Node54&#45;&gt;Node95</title>
+<title>Node55&#45;&gt;Node96</title>
 <path fill="none" stroke="#191970" d="M1941.8028,-406.1459C1932.0902,-404.4714 1922.0236,-402.9817 1912.5,-402 1864.715,-397.0742 217.8721,-399.5593 183.5,-366 152.3207,-335.558 154.2146,-302.7554 180.5,-268 195.8018,-247.7675 258.9239,-233.1984 306.5723,-224.826"/>
 <polygon fill="#191970" stroke="#191970" points="1941.2957,-409.6109 1951.7587,-407.9444 1942.5401,-402.7224 1941.2957,-409.6109"/>
 </g>
-<!-- Node54&#45;&gt;Node96 -->
+<!-- Node55&#45;&gt;Node97 -->
 <g id="edge91" class="edge">
-<title>Node54&#45;&gt;Node96</title>
+<title>Node55&#45;&gt;Node97</title>
 <path fill="none" stroke="#191970" d="M2079.0504,-416.4971C2344.3493,-412.9981 3165.6765,-399.6615 3429.5,-366 3434.1919,-365.4014 3439.0332,-364.6389 3443.8763,-363.7745"/>
 <polygon fill="#191970" stroke="#191970" points="2078.6712,-413.0017 2068.7178,-416.6321 2078.7627,-420.0011 2078.6712,-413.0017"/>
 </g>
-<!-- Node97 -->
+<!-- Node98 -->
 <g id="node47" class="node">
-<title>Node97</title>
+<title>Node98</title>
 <g id="a_node47"><a xlink:href="local__response__norm_8h.html" target="_top" xlink:title="local response normalization op constructions ">
 <polygon fill="#ffffff" stroke="#000000" points="1976.5,-335.5 1976.5,-365.5 2108.5,-365.5 2108.5,-335.5 1976.5,-335.5"/>
 <text text-anchor="start" x="1984.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/nn</text>
@@ -716,15 +716,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node97 -->
+<!-- Node55&#45;&gt;Node98 -->
 <g id="edge93" class="edge">
-<title>Node54&#45;&gt;Node97</title>
+<title>Node55&#45;&gt;Node98</title>
 <path fill="none" stroke="#191970" d="M2008.1952,-399.4026C2015.6373,-388.7936 2024.9275,-375.5502 2031.9623,-365.5218"/>
 <polygon fill="#191970" stroke="#191970" points="2005.1115,-397.7039 2002.234,-407.9005 2010.8421,-401.7239 2005.1115,-397.7039"/>
 </g>
-<!-- Node98 -->
+<!-- Node99 -->
 <g id="node48" class="node">
-<title>Node98</title>
+<title>Node99</title>
 <g id="a_node48"><a xlink:href="mapping_8h.html" target="_top" xlink:title="Mapping op constructions. ">
 <polygon fill="#ffffff" stroke="#000000" points="2127,-335.5 2127,-365.5 2238,-365.5 2238,-335.5 2127,-335.5"/>
 <text text-anchor="start" x="2135" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/nn</text>
@@ -732,15 +732,15 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node98 -->
+<!-- Node55&#45;&gt;Node99 -->
 <g id="edge94" class="edge">
-<title>Node54&#45;&gt;Node98</title>
+<title>Node55&#45;&gt;Node99</title>
 <path fill="none" stroke="#191970" d="M2031.8937,-404.4605C2063.0505,-393.2974 2107.9189,-377.2216 2140.5736,-365.5218"/>
 <polygon fill="#191970" stroke="#191970" points="2030.526,-401.2326 2022.2925,-407.9005 2032.8871,-407.8224 2030.526,-401.2326"/>
 </g>
-<!-- Node99 -->
+<!-- Node100 -->
 <g id="node49" class="node">
-<title>Node99</title>
+<title>Node100</title>
 <g id="a_node49"><a xlink:href="rocm_2normalization_8h.html" target="_top" xlink:title="rocm schedule for LRN and l2 normalization operations ">
 <polygon fill="#ffffff" stroke="#000000" points="2256.5,-335.5 2256.5,-365.5 2380.5,-365.5 2380.5,-335.5 2256.5,-335.5"/>
 <text text-anchor="start" x="2264.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/rocm</text>
@@ -748,225 +748,225 @@
 </a>
 </g>
 </g>
-<!-- Node54&#45;&gt;Node99 -->
+<!-- Node55&#45;&gt;Node100 -->
 <g id="edge100" class="edge">
-<title>Node54&#45;&gt;Node99</title>
+<title>Node55&#45;&gt;Node100</title>
 <path fill="none" stroke="#191970" d="M2052.541,-405.9599C2103.4362,-395.6242 2179.9767,-379.9848 2246.5,-366 2249.7533,-365.3161 2253.0885,-364.6112 2256.4554,-363.8966"/>
 <polygon fill="#191970" stroke="#191970" points="2051.8185,-402.5351 2042.7145,-407.9543 2053.2109,-409.3952 2051.8185,-402.5351"/>
 </g>
-<!-- Node55&#45;&gt;Node56 -->
+<!-- Node56&#45;&gt;Node57 -->
 <g id="edge5" class="edge">
-<title>Node55&#45;&gt;Node56</title>
+<title>Node56&#45;&gt;Node57</title>
 <path fill="none" stroke="#191970" d="M329.4572,-265.7309C367.7274,-255.5634 410.0125,-242.7354 426.5,-232 453.7374,-214.2651 476.4251,-183.1196 488.3813,-164.5899"/>
 <polygon fill="#191970" stroke="#191970" points="328.1007,-262.4681 319.3151,-268.3895 329.8757,-269.2394 328.1007,-262.4681"/>
 </g>
-<!-- Node56&#45;&gt;Node57 -->
+<!-- Node57&#45;&gt;Node58 -->
 <g id="edge6" class="edge">
-<title>Node56&#45;&gt;Node57</title>
+<title>Node57&#45;&gt;Node58</title>
 <path fill="none" stroke="#191970" d="M513.0816,-125.7735C519.2272,-116.4154 526.1052,-105.9421 531.5552,-97.6432"/>
 <polygon fill="#191970" stroke="#191970" points="510.0481,-124.0167 507.4843,-134.2967 515.8992,-127.8592 510.0481,-124.0167"/>
 </g>
-<!-- Node58&#45;&gt;Node57 -->
+<!-- Node59&#45;&gt;Node58 -->
 <g id="edge8" class="edge">
-<title>Node58&#45;&gt;Node57</title>
+<title>Node59&#45;&gt;Node58</title>
 <path fill="none" stroke="#191970" d="M106.472,-263.7479C167.5718,-233.8941 288.2031,-176.2819 393.5,-134 426.9513,-120.5677 465.4226,-107.2437 494.7562,-97.5143"/>
 <polygon fill="#191970" stroke="#191970" points="104.63,-260.7527 97.1885,-268.2943 107.7087,-267.0393 104.63,-260.7527"/>
 </g>
-<!-- Node59&#45;&gt;Node60 -->
+<!-- Node60&#45;&gt;Node61 -->
 <g id="edge11" class="edge">
-<title>Node59&#45;&gt;Node60</title>
+<title>Node60&#45;&gt;Node61</title>
 <path fill="none" stroke="#191970" d="M1349.5,-258.0249C1349.5,-249.128 1349.5,-239.4287 1349.5,-231.6432"/>
 <polygon fill="#191970" stroke="#191970" points="1346.0001,-258.2966 1349.5,-268.2967 1353.0001,-258.2967 1346.0001,-258.2966"/>
 </g>
-<!-- Node62&#45;&gt;Node63 -->
+<!-- Node63&#45;&gt;Node64 -->
 <g id="edge14" class="edge">
-<title>Node62&#45;&gt;Node63</title>
+<title>Node63&#45;&gt;Node64</title>
 <path fill="none" stroke="#191970" d="M2038.5583,-258.6103C2041.1261,-249.5553 2043.9493,-239.5998 2046.2057,-231.6432"/>
 <polygon fill="#191970" stroke="#191970" points="2035.1725,-257.7211 2035.8114,-268.2967 2041.9069,-259.6309 2035.1725,-257.7211"/>
 </g>
-<!-- Node64&#45;&gt;Node65 -->
+<!-- Node65&#45;&gt;Node66 -->
 <g id="edge16" class="edge">
-<title>Node64&#45;&gt;Node65</title>
+<title>Node65&#45;&gt;Node66</title>
 <path fill="none" stroke="#191970" d="M1777.8802,-258.0249C1778.013,-249.128 1778.1578,-239.4287 1778.274,-231.6432"/>
 <polygon fill="#191970" stroke="#191970" points="1774.3766,-258.2455 1777.7269,-268.2967 1781.3759,-258.35 1774.3766,-258.2455"/>
 </g>
-<!-- Node66&#45;&gt;Node67 -->
+<!-- Node67&#45;&gt;Node68 -->
 <g id="edge18" class="edge">
-<title>Node66&#45;&gt;Node67</title>
+<title>Node67&#45;&gt;Node68</title>
 <path fill="none" stroke="#191970" d="M786.1198,-258.0249C785.987,-249.128 785.8422,-239.4287 785.726,-231.6432"/>
 <polygon fill="#191970" stroke="#191970" points="782.6241,-258.35 786.2731,-268.2967 789.6234,-258.2455 782.6241,-258.35"/>
 </g>
-<!-- Node68&#45;&gt;Node56 -->
+<!-- Node69&#45;&gt;Node57 -->
 <g id="edge20" class="edge">
-<title>Node68&#45;&gt;Node56</title>
+<title>Node69&#45;&gt;Node57</title>
 <path fill="none" stroke="#191970" d="M1864.9067,-325.3462C1874.5873,-291.055 1884.9682,-230.5312 1849.5,-201 1799.3228,-159.2221 816.1578,-151.1654 558.7506,-149.7698"/>
 <polygon fill="#191970" stroke="#191970" points="1861.5068,-324.4983 1861.9763,-335.0827 1868.2098,-326.5157 1861.5068,-324.4983"/>
 </g>
-<!-- Node68&#45;&gt;Node57 -->
+<!-- Node69&#45;&gt;Node58 -->
 <g id="edge22" class="edge">
-<title>Node68&#45;&gt;Node57</title>
+<title>Node69&#45;&gt;Node58</title>
 <path fill="none" stroke="#191970" d="M1874.3959,-326.8497C1879.6908,-318.497 1884.7927,-308.7472 1887.5,-299 1899.2747,-256.6071 1901.9006,-234.6037 1873.5,-201 1820.8107,-138.6578 1782.3513,-150.9261 1702.5,-134 1594.9305,-111.1984 828.6561,-89.8851 603.5385,-84.0601"/>
 <polygon fill="#191970" stroke="#191970" points="1871.3842,-325.0552 1868.6789,-335.2988 1877.1818,-328.9781 1871.3842,-325.0552"/>
 </g>
-<!-- Node68&#45;&gt;Node62 -->
+<!-- Node69&#45;&gt;Node63 -->
 <g id="edge21" class="edge">
-<title>Node68&#45;&gt;Node62</title>
+<title>Node69&#45;&gt;Node63</title>
 <path fill="none" stroke="#191970" d="M1905.1735,-331.865C1932.5667,-321.3773 1966.3283,-308.4515 1992.0553,-298.6017"/>
 <polygon fill="#191970" stroke="#191970" points="1903.8609,-328.6197 1895.7734,-335.4639 1906.3638,-335.157 1903.8609,-328.6197"/>
 </g>
-<!-- Node68&#45;&gt;Node63 -->
+<!-- Node69&#45;&gt;Node64 -->
 <g id="edge23" class="edge">
-<title>Node68&#45;&gt;Node63</title>
+<title>Node69&#45;&gt;Node64</title>
 <path fill="none" stroke="#191970" d="M1929.9813,-335.6218C2001.6432,-321.0281 2100.1082,-300.7148 2101.5,-299 2119.2215,-277.1661 2092.1188,-248.7105 2071.1321,-231.564"/>
 <polygon fill="#191970" stroke="#191970" points="1929.1616,-332.2168 1920.0603,-337.6406 1930.5574,-339.0763 1929.1616,-332.2168"/>
 </g>
-<!-- Node70 -->
+<!-- Node71 -->
 <g id="node20" class="node">
-<title>Node70</title>
+<title>Node71</title>
 <g id="a_node20"><a xlink:href="broadcast_8h.html" target="_top" xlink:title="Broadcast op constructions. ">
 <polygon fill="#ffffff" stroke="#000000" points="3117.5,-207 3117.5,-226 3273.5,-226 3273.5,-207 3117.5,-207"/>
 <text text-anchor="middle" x="3195.5" y="-214" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/broadcast.h</text>
 </a>
 </g>
 </g>
-<!-- Node69&#45;&gt;Node70 -->
+<!-- Node70&#45;&gt;Node71 -->
 <g id="edge25" class="edge">
-<title>Node69&#45;&gt;Node70</title>
+<title>Node70&#45;&gt;Node71</title>
 <path fill="none" stroke="#191970" d="M3027.5245,-265.6457C3071.0509,-252.9109 3127.8737,-236.2859 3163.0118,-226.0053"/>
 <polygon fill="#191970" stroke="#191970" points="3026.5069,-262.2966 3017.8921,-268.4639 3028.4726,-269.015 3026.5069,-262.2966"/>
 </g>
-<!-- Node69&#45;&gt;Node77 -->
+<!-- Node70&#45;&gt;Node78 -->
 <g id="edge39" class="edge">
-<title>Node69&#45;&gt;Node77</title>
+<title>Node70&#45;&gt;Node78</title>
 <path fill="none" stroke="#191970" d="M2945.1444,-260.9673C2916.9747,-231.2449 2868.6311,-180.2368 2848.6025,-159.1042"/>
 <polygon fill="#191970" stroke="#191970" points="2942.759,-263.5385 2952.1784,-268.389 2947.8397,-258.7232 2942.759,-263.5385"/>
 </g>
-<!-- Node71 -->
+<!-- Node72 -->
 <g id="node21" class="node">
-<title>Node71</title>
+<title>Node72</title>
 <g id="a_node21"><a xlink:href="elemwise_8h.html" target="_top" xlink:title="Elementwise op constructions. ">
 <polygon fill="#ffffff" stroke="#000000" points="3113,-140 3113,-159 3268,-159 3268,-140 3113,-140"/>
 <text text-anchor="middle" x="3190.5" y="-147" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/elemwise.h</text>
 </a>
 </g>
 </g>
-<!-- Node70&#45;&gt;Node71 -->
+<!-- Node71&#45;&gt;Node72 -->
 <g id="edge26" class="edge">
-<title>Node70&#45;&gt;Node71</title>
+<title>Node71&#45;&gt;Node72</title>
 <path fill="none" stroke="#191970" d="M3194.0155,-196.6079C3193.0906,-184.214 3191.9423,-168.8263 3191.215,-159.0817"/>
 <polygon fill="#191970" stroke="#191970" points="3190.549,-197.1888 3194.7836,-206.9005 3197.5296,-196.6678 3190.549,-197.1888"/>
 </g>
-<!-- Node70&#45;&gt;Node72 -->
+<!-- Node71&#45;&gt;Node73 -->
 <g id="edge32" class="edge">
-<title>Node70&#45;&gt;Node72</title>
+<title>Node71&#45;&gt;Node73</title>
 <path fill="none" stroke="#191970" d="M3168.1383,-202.1493C3149.6099,-192.1979 3124.7325,-178.3781 3103.5,-165 3064.3871,-140.3559 3020.3467,-107.9716 2999.1864,-92.104"/>
 <polygon fill="#191970" stroke="#191970" points="3166.7249,-205.362 3177.1958,-206.9777 3170.0179,-199.1849 3166.7249,-205.362"/>
 </g>
-<!-- Node70&#45;&gt;Node76 -->
+<!-- Node71&#45;&gt;Node77 -->
 <g id="edge31" class="edge">
-<title>Node70&#45;&gt;Node76</title>
+<title>Node71&#45;&gt;Node77</title>
 <path fill="none" stroke="#191970" d="M3157.3702,-203.6623C3083.4445,-178.7728 2920.9839,-124.075 2842.156,-97.5349"/>
 <polygon fill="#191970" stroke="#191970" points="3156.6018,-207.0966 3167.1959,-206.9705 3158.8354,-200.4625 3156.6018,-207.0966"/>
 </g>
-<!-- Node70&#45;&gt;Node77 -->
+<!-- Node71&#45;&gt;Node78 -->
 <g id="edge33" class="edge">
-<title>Node70&#45;&gt;Node77</title>
+<title>Node71&#45;&gt;Node78</title>
 <path fill="none" stroke="#191970" d="M3135.0269,-205.1188C3066.1394,-192.154 2954.7913,-171.1981 2890.2413,-159.0496"/>
 <polygon fill="#191970" stroke="#191970" points="3134.3971,-208.5617 3144.872,-206.9717 3135.6919,-201.6824 3134.3971,-208.5617"/>
 </g>
-<!-- Node71&#45;&gt;Node72 -->
+<!-- Node72&#45;&gt;Node73 -->
 <g id="edge27" class="edge">
-<title>Node71&#45;&gt;Node72</title>
+<title>Node72&#45;&gt;Node73</title>
 <path fill="none" stroke="#191970" d="M3151.6744,-136.7484C3112.0352,-123.7297 3051.3995,-103.815 3015.674,-92.0817"/>
 <polygon fill="#191970" stroke="#191970" points="3150.6789,-140.1054 3161.2718,-139.9005 3152.8632,-133.4549 3150.6789,-140.1054"/>
 </g>
-<!-- Node72&#45;&gt;Node73 -->
+<!-- Node73&#45;&gt;Node74 -->
 <g id="edge28" class="edge">
-<title>Node72&#45;&gt;Node73</title>
+<title>Node73&#45;&gt;Node74</title>
 <path fill="none" stroke="#191970" d="M3065.334,-71.5644C3163.3121,-57.9733 3328.043,-35.1224 3413.8083,-23.2254"/>
 <polygon fill="#191970" stroke="#191970" points="3064.6134,-68.1308 3055.1892,-72.9717 3065.5753,-75.0644 3064.6134,-68.1308"/>
 </g>
-<!-- Node72&#45;&gt;Node74 -->
+<!-- Node73&#45;&gt;Node75 -->
 <g id="edge29" class="edge">
-<title>Node72&#45;&gt;Node74</title>
+<title>Node73&#45;&gt;Node75</title>
 <path fill="none" stroke="#191970" d="M2903.9364,-71.6321C2799.5941,-57.8975 2622.8236,-34.629 2533.1861,-22.83"/>
 <polygon fill="#191970" stroke="#191970" points="2903.742,-75.1366 2914.1133,-72.9717 2904.6556,-68.1965 2903.742,-75.1366"/>
 </g>
-<!-- Node72&#45;&gt;Node75 -->
+<!-- Node73&#45;&gt;Node76 -->
 <g id="edge30" class="edge">
-<title>Node72&#45;&gt;Node75</title>
+<title>Node73&#45;&gt;Node76</title>
 <path fill="none" stroke="#191970" d="M2972.7032,-64.7233C2964.4283,-54.0615 2954.0205,-40.6515 2946.1587,-30.5218"/>
 <polygon fill="#191970" stroke="#191970" points="2970.1534,-67.1466 2979.0497,-72.9005 2975.6834,-62.8547 2970.1534,-67.1466"/>
 </g>
-<!-- Node77&#45;&gt;Node72 -->
+<!-- Node78&#45;&gt;Node73 -->
 <g id="edge37" class="edge">
-<title>Node77&#45;&gt;Node72</title>
+<title>Node78&#45;&gt;Node73</title>
 <path fill="none" stroke="#191970" d="M2869.6847,-135.7424C2898.2509,-122.7224 2940.3887,-103.5167 2965.4776,-92.0817"/>
 <polygon fill="#191970" stroke="#191970" points="2868.2094,-132.5683 2860.5615,-139.9005 2871.1125,-138.9379 2868.2094,-132.5683"/>
 </g>
-<!-- Node77&#45;&gt;Node75 -->
+<!-- Node78&#45;&gt;Node76 -->
 <g id="edge38" class="edge">
-<title>Node77&#45;&gt;Node75</title>
+<title>Node78&#45;&gt;Node76</title>
 <path fill="none" stroke="#191970" d="M2852.2836,-131.4684C2871.1657,-104.8347 2906.1719,-55.4575 2923.787,-30.611"/>
 <polygon fill="#191970" stroke="#191970" points="2849.2605,-129.6809 2846.3322,-139.8631 2854.971,-133.7294 2849.2605,-129.6809"/>
 </g>
-<!-- Node77&#45;&gt;Node76 -->
+<!-- Node78&#45;&gt;Node77 -->
 <g id="edge34" class="edge">
-<title>Node77&#45;&gt;Node76</title>
+<title>Node78&#45;&gt;Node77</title>
 <path fill="none" stroke="#191970" d="M2828.1554,-131.4026C2821.505,-120.7936 2813.2031,-107.5502 2806.9166,-97.5218"/>
 <polygon fill="#191970" stroke="#191970" points="2825.2055,-133.2866 2833.4824,-139.9005 2831.1365,-129.5687 2825.2055,-133.2866"/>
 </g>
-<!-- Node77&#45;&gt;Node78 -->
+<!-- Node78&#45;&gt;Node79 -->
 <g id="edge35" class="edge">
-<title>Node77&#45;&gt;Node78</title>
+<title>Node78&#45;&gt;Node79</title>
 <path fill="none" stroke="#191970" d="M2927.5613,-139.4316C3048.1057,-125.6492 3261.3571,-101.2672 3365.245,-89.3892"/>
 <polygon fill="#191970" stroke="#191970" points="2927.1568,-135.9549 2917.6192,-140.5683 2927.9521,-142.9096 2927.1568,-135.9549"/>
 </g>
-<!-- Node78&#45;&gt;Node73 -->
+<!-- Node79&#45;&gt;Node74 -->
 <g id="edge36" class="edge">
-<title>Node78&#45;&gt;Node73</title>
+<title>Node79&#45;&gt;Node74</title>
 <path fill="none" stroke="#191970" d="M3437.3848,-64.4026C3444.3519,-53.7936 3453.0491,-40.5502 3459.635,-30.5218"/>
 <polygon fill="#191970" stroke="#191970" points="3434.3679,-62.6206 3431.8041,-72.9005 3440.219,-66.4631 3434.3679,-62.6206"/>
 </g>
-<!-- Node79&#45;&gt;Node69 -->
+<!-- Node80&#45;&gt;Node70 -->
 <g id="edge42" class="edge">
-<title>Node79&#45;&gt;Node69</title>
+<title>Node80&#45;&gt;Node70</title>
 <path fill="none" stroke="#191970" d="M3166.0682,-333.0225C3123.0239,-322.3411 3068.5239,-308.8171 3027.3575,-298.6017"/>
 <polygon fill="#191970" stroke="#191970" points="3165.3581,-336.4524 3175.9067,-335.4639 3167.0441,-329.6584 3165.3581,-336.4524"/>
 </g>
-<!-- Node79&#45;&gt;Node70 -->
+<!-- Node80&#45;&gt;Node71 -->
 <g id="edge41" class="edge">
-<title>Node79&#45;&gt;Node70</title>
+<title>Node80&#45;&gt;Node71</title>
 <path fill="none" stroke="#191970" d="M3242.2976,-325.2298C3244.9764,-308.4834 3246.2566,-286.3098 3239.5,-268 3233.1489,-250.7891 3218.1994,-235.4301 3207.4891,-226.057"/>
 <polygon fill="#191970" stroke="#191970" points="3238.8019,-324.8829 3240.4057,-335.3557 3245.6828,-326.1686 3238.8019,-324.8829"/>
 </g>
-<!-- Node79&#45;&gt;Node72 -->
+<!-- Node80&#45;&gt;Node73 -->
 <g id="edge49" class="edge">
-<title>Node79&#45;&gt;Node72</title>
+<title>Node80&#45;&gt;Node73</title>
 <path fill="none" stroke="#191970" d="M3252.1118,-326.7124C3278.8734,-282.6801 3326.0648,-188.0456 3276.5,-134 3248.5049,-103.474 3139.8101,-90.9592 3063.7619,-85.8844"/>
 <polygon fill="#191970" stroke="#191970" points="3249.0737,-324.9699 3246.7534,-335.3075 3255.0139,-328.6731 3249.0737,-324.9699"/>
 </g>
-<!-- Node79&#45;&gt;Node75 -->
+<!-- Node80&#45;&gt;Node76 -->
 <g id="edge51" class="edge">
-<title>Node79&#45;&gt;Node75</title>
+<title>Node80&#45;&gt;Node76</title>
 <path fill="none" stroke="#191970" d="M3263.8504,-328.8047C3273.0671,-320.3346 3282.7224,-310.0115 3289.5,-299 3328.0098,-236.4338 3347.3778,-189.7248 3299.5,-134 3260.0442,-88.0775 3092.6363,-47.6321 2998.8458,-28.0337"/>
 <polygon fill="#191970" stroke="#191970" points="3261.4824,-326.2262 3256.2842,-335.4582 3266.105,-331.4828 3261.4824,-326.2262"/>
 </g>
-<!-- Node79&#45;&gt;Node77 -->
+<!-- Node80&#45;&gt;Node78 -->
 <g id="edge50" class="edge">
-<title>Node79&#45;&gt;Node77</title>
+<title>Node80&#45;&gt;Node78</title>
 <path fill="none" stroke="#191970" d="M3230.3737,-325.526C3224.7814,-307.4362 3214.8414,-283.5265 3198.5,-268 3167.2681,-238.3256 3145.7565,-253.6323 3108.5,-232 3089.3517,-220.8819 3089.4767,-210.5501 3069.5,-201 3021.784,-178.1889 2963.6215,-165.2839 2917.7241,-158.097"/>
 <polygon fill="#191970" stroke="#191970" points="3227.0786,-326.7352 3233.1795,-335.3972 3233.8119,-324.8212 3227.0786,-326.7352"/>
 </g>
-<!-- Node79&#45;&gt;Node78 -->
+<!-- Node80&#45;&gt;Node79 -->
 <g id="edge48" class="edge">
-<title>Node79&#45;&gt;Node78</title>
+<title>Node80&#45;&gt;Node79</title>
 <path fill="none" stroke="#191970" d="M3306.0794,-331.5369C3323.5635,-323.891 3340.9112,-313.3643 3353.5,-299 3403.8377,-241.563 3374.6245,-205.4885 3401.5,-134 3407.1233,-119.0421 3415.2404,-102.392 3420.4433,-92.1814"/>
 <polygon fill="#191970" stroke="#191970" points="3304.3178,-328.4755 3296.3813,-335.4944 3306.9625,-334.9567 3304.3178,-328.4755"/>
 </g>
-<!-- Node80 -->
+<!-- Node81 -->
 <g id="node30" class="node">
-<title>Node80</title>
+<title>Node81</title>
 <g id="a_node30"><a xlink:href="strided__slice_8h.html" target="_top" xlink:title="Utility functions for strided_slice op. ">
 <polygon fill="#ffffff" stroke="#000000" points="2934,-201.5 2934,-231.5 3061,-231.5 3061,-201.5 2934,-201.5"/>
 <text text-anchor="start" x="2942" y="-219.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/topi/detail</text>
@@ -974,195 +974,195 @@
 </a>
 </g>
 </g>
-<!-- Node79&#45;&gt;Node80 -->
+<!-- Node80&#45;&gt;Node81 -->
 <g id="edge43" class="edge">
-<title>Node79&#45;&gt;Node80</title>
+<title>Node80&#45;&gt;Node81</title>
 <path fill="none" stroke="#191970" d="M3222.2812,-326.9069C3209.962,-308.3702 3190.5222,-283.2224 3167.5,-268 3149.622,-256.1789 3101.0398,-242.0118 3060.367,-231.5314"/>
 <polygon fill="#191970" stroke="#191970" points="3219.3905,-328.8828 3227.7413,-335.4031 3225.2794,-325.0983 3219.3905,-328.8828"/>
 </g>
-<!-- Node79&#45;&gt;Node81 -->
+<!-- Node80&#45;&gt;Node82 -->
 <g id="edge45" class="edge">
-<title>Node79&#45;&gt;Node81</title>
+<title>Node80&#45;&gt;Node82</title>
 <path fill="none" stroke="#191970" d="M3162.7672,-340.6198C3067.2716,-327.8234 2901.9252,-305.667 2807.6894,-293.0394"/>
 <polygon fill="#191970" stroke="#191970" points="3162.5446,-344.1212 3172.9209,-341.9804 3163.4744,-337.1832 3162.5446,-344.1212"/>
 </g>
-<!-- Node79&#45;&gt;Node82 -->
+<!-- Node80&#45;&gt;Node83 -->
 <g id="edge46" class="edge">
-<title>Node79&#45;&gt;Node82</title>
+<title>Node80&#45;&gt;Node83</title>
 <path fill="none" stroke="#191970" d="M3310.3506,-334.0615C3363.3232,-322.2702 3433.5782,-306.6321 3481.8534,-295.8865"/>
 <polygon fill="#191970" stroke="#191970" points="3309.335,-330.7018 3300.3344,-336.291 3310.856,-337.5346 3309.335,-330.7018"/>
 </g>
-<!-- Node79&#45;&gt;Node83 -->
+<!-- Node80&#45;&gt;Node84 -->
 <g id="edge47" class="edge">
-<title>Node79&#45;&gt;Node83</title>
+<title>Node80&#45;&gt;Node84</title>
 <path fill="none" stroke="#191970" d="M3197.6187,-330.9132C3177.2357,-320.645 3152.6428,-308.2561 3133.7083,-298.7177"/>
 <polygon fill="#191970" stroke="#191970" points="3196.1467,-334.0906 3206.6522,-335.4639 3199.2961,-327.8391 3196.1467,-334.0906"/>
 </g>
-<!-- Node80&#45;&gt;Node77 -->
+<!-- Node81&#45;&gt;Node78 -->
 <g id="edge44" class="edge">
-<title>Node80&#45;&gt;Node77</title>
+<title>Node81&#45;&gt;Node78</title>
 <path fill="none" stroke="#191970" d="M2952.7513,-197.5243C2923.1928,-184.99 2885.7011,-169.0916 2862.1481,-159.1039"/>
 <polygon fill="#191970" stroke="#191970" points="2951.4688,-200.7821 2962.0417,-201.4639 2954.2017,-194.3376 2951.4688,-200.7821"/>
 </g>
-<!-- Node84&#45;&gt;Node55 -->
+<!-- Node85&#45;&gt;Node56 -->
 <g id="edge53" class="edge">
-<title>Node84&#45;&gt;Node55</title>
+<title>Node85&#45;&gt;Node56</title>
 <path fill="none" stroke="#191970" d="M256.5,-325.0249C256.5,-316.128 256.5,-306.4287 256.5,-298.6432"/>
 <polygon fill="#191970" stroke="#191970" points="253.0001,-325.2966 256.5,-335.2967 260.0001,-325.2967 253.0001,-325.2966"/>
 </g>
-<!-- Node84&#45;&gt;Node58 -->
+<!-- Node85&#45;&gt;Node59 -->
 <g id="edge54" class="edge">
-<title>Node84&#45;&gt;Node58</title>
+<title>Node85&#45;&gt;Node59</title>
 <path fill="none" stroke="#191970" d="M204.0437,-332.0023C174.2336,-321.4903 137.3798,-308.4945 109.3257,-298.6017"/>
 <polygon fill="#191970" stroke="#191970" points="203.2655,-335.439 213.8603,-335.4639 205.5935,-328.8374 203.2655,-335.439"/>
 </g>
-<!-- Node85&#45;&gt;Node59 -->
+<!-- Node86&#45;&gt;Node60 -->
 <g id="edge56" class="edge">
-<title>Node85&#45;&gt;Node59</title>
+<title>Node86&#45;&gt;Node60</title>
 <path fill="none" stroke="#191970" d="M1288.9743,-329.0643C1302.1338,-319.1577 1317.4513,-307.6265 1329.3844,-298.6432"/>
 <polygon fill="#191970" stroke="#191970" points="1286.5797,-326.486 1280.6955,-335.2967 1290.7897,-332.0785 1286.5797,-326.486"/>
 </g>
-<!-- Node85&#45;&gt;Node60 -->
+<!-- Node86&#45;&gt;Node61 -->
 <g id="edge66" class="edge">
-<title>Node85&#45;&gt;Node60</title>
+<title>Node86&#45;&gt;Node61</title>
 <path fill="none" stroke="#191970" d="M1261.7421,-325.2995C1263.6339,-307.9691 1268.2694,-285.0883 1279.5,-268 1289.5264,-252.744 1305.713,-240.4044 1319.9966,-231.6325"/>
 <polygon fill="#191970" stroke="#191970" points="1258.2544,-325.0082 1260.8844,-335.2714 1265.2286,-325.6082 1258.2544,-325.0082"/>
 </g>
-<!-- Node85&#45;&gt;Node62 -->
+<!-- Node86&#45;&gt;Node63 -->
 <g id="edge57" class="edge">
-<title>Node85&#45;&gt;Node62</title>
+<title>Node86&#45;&gt;Node63</title>
 <path fill="none" stroke="#191970" d="M1334.3981,-344.0782C1486.1073,-330.8947 1830.1914,-300.9937 1970.3584,-288.8132"/>
 <polygon fill="#191970" stroke="#191970" points="1333.9095,-340.6074 1324.2501,-344.9601 1334.5156,-347.5811 1333.9095,-340.6074"/>
 </g>
-<!-- Node85&#45;&gt;Node63 -->
+<!-- Node86&#45;&gt;Node64 -->
 <g id="edge67" class="edge">
-<title>Node85&#45;&gt;Node63</title>
+<title>Node86&#45;&gt;Node64</title>
 <path fill="none" stroke="#191970" d="M1334.1382,-338.3266C1371.7418,-330.329 1417.4587,-317.7887 1455.5,-299 1475.6661,-289.0399 1474.5789,-276.2573 1495.5,-268 1518.1434,-259.0629 1848.178,-232.3501 1988.3095,-221.3328"/>
 <polygon fill="#191970" stroke="#191970" points="1333.3498,-334.9154 1324.2628,-340.363 1334.7636,-341.7712 1333.3498,-334.9154"/>
 </g>
-<!-- Node85&#45;&gt;Node64 -->
+<!-- Node86&#45;&gt;Node65 -->
 <g id="edge58" class="edge">
-<title>Node85&#45;&gt;Node64</title>
+<title>Node86&#45;&gt;Node65</title>
 <path fill="none" stroke="#191970" d="M1334.1313,-340.9578C1436.7907,-327.6538 1621.037,-303.7766 1716.4724,-291.4088"/>
 <polygon fill="#191970" stroke="#191970" points="1333.6206,-337.4947 1324.1534,-342.2509 1334.5203,-344.4366 1333.6206,-337.4947"/>
 </g>
-<!-- Node85&#45;&gt;Node65 -->
+<!-- Node86&#45;&gt;Node66 -->
 <g id="edge68" class="edge">
-<title>Node85&#45;&gt;Node65</title>
+<title>Node86&#45;&gt;Node66</title>
 <path fill="none" stroke="#191970" d="M1331.6788,-332.5998C1359.8162,-324.2139 1391.9469,-312.9591 1419.5,-299 1440.5165,-288.3525 1440.7372,-277.0245 1462.5,-268 1507.2988,-249.4229 1637.8486,-232.243 1716.4316,-223.187"/>
 <polygon fill="#191970" stroke="#191970" points="1330.5291,-329.2892 1321.9069,-335.4461 1332.4867,-336.0099 1330.5291,-329.2892"/>
 </g>
-<!-- Node85&#45;&gt;Node66 -->
+<!-- Node86&#45;&gt;Node67 -->
 <g id="edge59" class="edge">
-<title>Node85&#45;&gt;Node66</title>
+<title>Node86&#45;&gt;Node67</title>
 <path fill="none" stroke="#191970" d="M1186.5488,-340.1551C1112.6158,-329.7985 995.6763,-313.3786 894.5,-299 879.3095,-296.8412 862.9196,-294.4968 847.6099,-292.3003"/>
 <polygon fill="#191970" stroke="#191970" points="1186.3007,-343.6545 1196.6895,-341.5754 1187.2717,-336.7221 1186.3007,-343.6545"/>
 </g>
-<!-- Node85&#45;&gt;Node67 -->
+<!-- Node86&#45;&gt;Node68 -->
 <g id="edge69" class="edge">
-<title>Node85&#45;&gt;Node67</title>
+<title>Node86&#45;&gt;Node68</title>
 <path fill="none" stroke="#191970" d="M1249.135,-326.2678C1238.7773,-307.0852 1221.575,-281.3714 1198.5,-268 1140.2796,-234.2627 948.1681,-222.3562 847.8044,-218.3725"/>
 <polygon fill="#191970" stroke="#191970" points="1246.1123,-328.0434 1253.794,-335.3401 1252.3392,-324.8456 1246.1123,-328.0434"/>
 </g>
-<!-- Node85&#45;&gt;Node86 -->
+<!-- Node86&#45;&gt;Node87 -->
 <g id="edge60" class="edge">
-<title>Node85&#45;&gt;Node86</title>
+<title>Node86&#45;&gt;Node87</title>
 <path fill="none" stroke="#191970" d="M1186.4181,-345.9446C1081.4564,-338.9329 883.6195,-323.6624 716.5,-299 713.3973,-298.5421 710.2305,-298.0414 707.0363,-297.5092"/>
 <polygon fill="#191970" stroke="#191970" points="1186.3809,-349.4497 1196.5902,-346.6177 1186.8431,-342.465 1186.3809,-349.4497"/>
 </g>
-<!-- Node85&#45;&gt;Node87 -->
+<!-- Node86&#45;&gt;Node88 -->
 <g id="edge61" class="edge">
-<title>Node85&#45;&gt;Node87</title>
+<title>Node86&#45;&gt;Node88</title>
 <path fill="none" stroke="#191970" d="M1233.8379,-328.8068C1222.804,-319.7124 1209.9388,-308.9562 1198.5,-299 1183.0752,-285.5744 1183.2581,-276.1429 1164.5,-268 1072.4771,-228.0528 814.4586,-240.5021 714.5,-232 680.1446,-229.0779 641.9462,-225.6532 610.2904,-222.7672"/>
 <polygon fill="#191970" stroke="#191970" points="1231.9149,-331.7565 1241.8647,-335.3968 1236.3567,-326.3462 1231.9149,-331.7565"/>
 </g>
-<!-- Node85&#45;&gt;Node88 -->
+<!-- Node86&#45;&gt;Node89 -->
 <g id="edge64" class="edge">
-<title>Node85&#45;&gt;Node88</title>
+<title>Node86&#45;&gt;Node89</title>
 <path fill="none" stroke="#191970" d="M1186.8302,-346.5299C1059.3856,-339.3343 789.6015,-322.6609 562.5,-299 547.1714,-297.403 530.7348,-295.3763 515.2211,-293.3194"/>
 <polygon fill="#191970" stroke="#191970" points="1186.6869,-350.0272 1196.8675,-347.0935 1187.0795,-343.0382 1186.6869,-350.0272"/>
 </g>
-<!-- Node85&#45;&gt;Node89 -->
+<!-- Node86&#45;&gt;Node90 -->
 <g id="edge70" class="edge">
-<title>Node85&#45;&gt;Node89</title>
+<title>Node86&#45;&gt;Node90</title>
 <path fill="none" stroke="#191970" d="M1186.6923,-334.2025C1141.3256,-324.1459 1082.0237,-310.9302 1029.5,-299 1026.8222,-298.3918 1024.0848,-297.7677 1021.32,-297.1356"/>
 <polygon fill="#191970" stroke="#191970" points="1186.2171,-337.682 1196.7375,-336.4281 1187.7314,-330.8477 1186.2171,-337.682"/>
 </g>
-<!-- Node85&#45;&gt;Node90 -->
+<!-- Node86&#45;&gt;Node91 -->
 <g id="edge71" class="edge">
-<title>Node85&#45;&gt;Node90</title>
+<title>Node86&#45;&gt;Node91</title>
 <path fill="none" stroke="#191970" d="M1214.4942,-331.5897C1189.1006,-321.1518 1157.9935,-308.3654 1134.2399,-298.6017"/>
 <polygon fill="#191970" stroke="#191970" points="1213.3398,-334.8992 1223.9196,-335.4639 1216.0011,-328.4248 1213.3398,-334.8992"/>
 </g>
-<!-- Node85&#45;&gt;Node91 -->
+<!-- Node86&#45;&gt;Node92 -->
 <g id="edge72" class="edge">
-<title>Node85&#45;&gt;Node91</title>
+<title>Node86&#45;&gt;Node92</title>
 <path fill="none" stroke="#191970" d="M1333.9462,-334.2594C1386.4537,-322.6488 1456.1706,-307.2329 1504.9432,-296.4482"/>
 <polygon fill="#191970" stroke="#191970" points="1333.0272,-330.878 1324.0187,-336.4546 1334.5386,-337.7129 1333.0272,-330.878"/>
 </g>
-<!-- Node87&#45;&gt;Node56 -->
+<!-- Node88&#45;&gt;Node57 -->
 <g id="edge62" class="edge">
-<title>Node87&#45;&gt;Node56</title>
+<title>Node88&#45;&gt;Node57</title>
 <path fill="none" stroke="#191970" d="M526.5643,-192.7735C520.279,-183.4154 513.2447,-172.9421 507.6708,-164.6432"/>
 <polygon fill="#191970" stroke="#191970" points="523.8077,-194.9467 532.2888,-201.2967 529.6187,-191.0438 523.8077,-194.9467"/>
 </g>
-<!-- Node87&#45;&gt;Node57 -->
+<!-- Node88&#45;&gt;Node58 -->
 <g id="edge63" class="edge">
-<title>Node87&#45;&gt;Node57</title>
+<title>Node88&#45;&gt;Node58</title>
 <path fill="none" stroke="#191970" d="M556.9051,-192.5447C561.1972,-184.1365 565.3321,-174.4303 567.5,-165 570.5869,-151.5725 570.6915,-147.403 567.5,-134 564.3911,-120.9439 557.4132,-107.4455 551.4684,-97.5452"/>
 <polygon fill="#191970" stroke="#191970" points="553.7908,-190.9453 552.0887,-201.4025 559.9405,-194.2892 553.7908,-190.9453"/>
 </g>
-<!-- Node88&#45;&gt;Node87 -->
+<!-- Node89&#45;&gt;Node88 -->
 <g id="edge65" class="edge">
-<title>Node88&#45;&gt;Node87</title>
+<title>Node89&#45;&gt;Node88</title>
 <path fill="none" stroke="#191970" d="M477.4932,-262.3469C491.6288,-252.3776 508.1695,-240.7121 521.0283,-231.6432"/>
 <polygon fill="#191970" stroke="#191970" points="475.2118,-259.6729 469.057,-268.2967 479.2463,-265.3934 475.2118,-259.6729"/>
 </g>
-<!-- Node92&#45;&gt;Node73 -->
+<!-- Node93&#45;&gt;Node74 -->
 <g id="edge74" class="edge">
-<title>Node92&#45;&gt;Node73</title>
+<title>Node93&#45;&gt;Node74</title>
 <path fill="none" stroke="#191970" d="M3507.975,-124.2874C3505.2549,-107.7269 3500.8685,-85.7411 3494.5,-67 3490.215,-54.3902 3483.5662,-40.871 3478.2022,-30.8493"/>
 <polygon fill="#191970" stroke="#191970" points="3504.536,-124.9518 3509.5258,-134.298 3511.4535,-123.88 3504.536,-124.9518"/>
 </g>
-<!-- Node93&#45;&gt;Node72 -->
+<!-- Node94&#45;&gt;Node73 -->
 <g id="edge77" class="edge">
-<title>Node93&#45;&gt;Node72</title>
+<title>Node94&#45;&gt;Node73</title>
 <path fill="none" stroke="#191970" d="M2878.8889,-325.3409C2882.1151,-308.8025 2887.0563,-286.8213 2893.5,-268 2917.7713,-197.1065 2963.9963,-118.956 2980.4773,-92.1419"/>
 <polygon fill="#191970" stroke="#191970" points="2875.4178,-324.8618 2877.0179,-335.3351 2882.2983,-326.1499 2875.4178,-324.8618"/>
 </g>
-<!-- Node93&#45;&gt;Node77 -->
+<!-- Node94&#45;&gt;Node78 -->
 <g id="edge78" class="edge">
-<title>Node93&#45;&gt;Node77</title>
+<title>Node94&#45;&gt;Node78</title>
 <path fill="none" stroke="#191970" d="M2866.9988,-325.4074C2864.686,-317.06 2862.2819,-307.6791 2860.5,-299 2849.747,-246.6247 2842.7964,-182.7886 2840.4164,-159.0161"/>
 <polygon fill="#191970" stroke="#191970" points="2863.7122,-326.6446 2869.8259,-335.2975 2870.4426,-324.7207 2863.7122,-326.6446"/>
 </g>
-<!-- Node93&#45;&gt;Node81 -->
+<!-- Node94&#45;&gt;Node82 -->
 <g id="edge76" class="edge">
-<title>Node93&#45;&gt;Node81</title>
+<title>Node94&#45;&gt;Node82</title>
 <path fill="none" stroke="#191970" d="M2834.4064,-331.0343C2808.7503,-318.5781 2776.5857,-302.9619 2756.2812,-293.1039"/>
 <polygon fill="#191970" stroke="#191970" points="2833.0056,-334.2448 2843.5301,-335.4639 2836.0629,-327.9478 2833.0056,-334.2448"/>
 </g>
-<!-- Node94&#45;&gt;Node77 -->
+<!-- Node95&#45;&gt;Node78 -->
 <g id="edge81" class="edge">
-<title>Node94&#45;&gt;Node77</title>
+<title>Node95&#45;&gt;Node78</title>
 <path fill="none" stroke="#191970" d="M2669.3941,-327.3006C2656.7399,-310.448 2644.9689,-287.3083 2655.5,-268 2688.0663,-208.291 2765.0495,-174.1458 2808.4135,-159.0072"/>
 <polygon fill="#191970" stroke="#191970" points="2666.9837,-329.8882 2675.9786,-335.4867 2672.4382,-325.5009 2666.9837,-329.8882"/>
 </g>
-<!-- Node94&#45;&gt;Node81 -->
+<!-- Node95&#45;&gt;Node82 -->
 <g id="edge80" class="edge">
-<title>Node94&#45;&gt;Node81</title>
+<title>Node95&#45;&gt;Node82</title>
 <path fill="none" stroke="#191970" d="M2706.7423,-326.8428C2714.7308,-315.2073 2723.9129,-301.8334 2729.9399,-293.055"/>
 <polygon fill="#191970" stroke="#191970" points="2703.7128,-325.0716 2700.9381,-335.2967 2709.4836,-329.0337 2703.7128,-325.0716"/>
 </g>
-<!-- Node95&#45;&gt;Node56 -->
+<!-- Node96&#45;&gt;Node57 -->
 <g id="edge89" class="edge">
-<title>Node95&#45;&gt;Node56</title>
+<title>Node96&#45;&gt;Node57</title>
 <path fill="none" stroke="#191970" d="M401.966,-196.9132C422.6555,-186.645 447.6182,-174.2561 466.8374,-164.7177"/>
 <polygon fill="#191970" stroke="#191970" points="400.1982,-193.8831 392.7966,-201.4639 403.3101,-200.1534 400.1982,-193.8831"/>
 </g>
-<!-- Node95&#45;&gt;Node57 -->
+<!-- Node96&#45;&gt;Node58 -->
 <g id="edge90" class="edge">
-<title>Node95&#45;&gt;Node57</title>
+<title>Node96&#45;&gt;Node58</title>
 <path fill="none" stroke="#191970" d="M376.8757,-192.5209C388.6473,-174.517 406.7098,-150.2657 427.5,-134 447.5979,-118.2759 473.2626,-106.1367 495.1499,-97.6041"/>
 <polygon fill="#191970" stroke="#191970" points="373.7136,-190.9718 371.3123,-201.291 379.6246,-194.7216 373.7136,-190.9718"/>
 </g>
diff --git a/docs/api/doxygen/analyzer_8h__incl.svg b/docs/api/doxygen/analyzer_8h__incl.svg
index 1285c43..4caef04 100644
--- a/docs/api/doxygen/analyzer_8h__incl.svg
+++ b/docs/api/doxygen/analyzer_8h__incl.svg
@@ -4,370 +4,370 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: include/tvm/arith/analyzer.h Pages: 1 -->
-<svg width="3127pt" height="1024pt"
- viewBox="0.00 0.00 3127.00 1024.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="3130pt" height="1024pt"
+ viewBox="0.00 0.00 3130.02 1024.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 1020)">
 <title>include/tvm/arith/analyzer.h</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1020 3123,-1020 3123,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1020 3126.0225,-1020 3126.0225,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="2196.5,-996.5 2196.5,-1015.5 2349.5,-1015.5 2349.5,-996.5 2196.5,-996.5"/>
-<text text-anchor="middle" x="2273" y="-1003.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/arith/analyzer.h</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="2444.5,-996.5 2444.5,-1015.5 2597.5,-1015.5 2597.5,-996.5 2444.5,-996.5"/>
+<text text-anchor="middle" x="2521" y="-1003.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/arith/analyzer.h</text>
 </g>
 <!-- Node1 -->
 <g id="node2" class="node">
 <title>Node1</title>
 <g id="a_node2"><a xlink:href="int__set_8h.html" target="_top" xlink:title="Integer set. ">
-<polygon fill="#ffffff" stroke="#000000" points="2219.5,-940.5 2219.5,-959.5 2326.5,-959.5 2326.5,-940.5 2219.5,-940.5"/>
-<text text-anchor="middle" x="2273" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/arith/int_set.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="2467.5,-940.5 2467.5,-959.5 2574.5,-959.5 2574.5,-940.5 2467.5,-940.5"/>
+<text text-anchor="middle" x="2521" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/arith/int_set.h</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node0&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M2273,-996.2455C2273,-988.9382 2273,-978.6944 2273,-969.7046"/>
-<polygon fill="#191970" stroke="#191970" points="2276.5001,-969.6426 2273,-959.6427 2269.5001,-969.6427 2276.5001,-969.6426"/>
+<path fill="none" stroke="#191970" d="M2521,-996.2455C2521,-988.9382 2521,-978.6944 2521,-969.7046"/>
+<polygon fill="#191970" stroke="#191970" points="2524.5001,-969.6426 2521,-959.6427 2517.5001,-969.6427 2524.5001,-969.6426"/>
 </g>
 <!-- Node2 -->
 <g id="node3" class="node">
 <title>Node2</title>
 <g id="a_node3"><a xlink:href="ir_2expr_8h.html" target="_top" xlink:title="Base expr nodes in TVM. ">
-<polygon fill="#ffffff" stroke="#000000" points="1388.5,-716.5 1388.5,-735.5 1467.5,-735.5 1467.5,-716.5 1388.5,-716.5"/>
-<text text-anchor="middle" x="1428" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/expr.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="859.5,-716.5 859.5,-735.5 938.5,-735.5 938.5,-716.5 859.5,-716.5"/>
+<text text-anchor="middle" x="899" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/expr.h</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node2 -->
-<g id="edge172" class="edge">
+<g id="edge174" class="edge">
 <title>Node0&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M2196.3497,-1001.6884C1957.413,-987.7461 1242,-941.9935 1242,-894 1242,-894 1242,-894 1242,-838 1242,-774.3038 1323.0431,-745.8976 1378.1382,-733.9458"/>
-<polygon fill="#191970" stroke="#191970" points="1379.0066,-737.3406 1388.0983,-731.9009 1377.5987,-730.4836 1379.0066,-737.3406"/>
+<path fill="none" stroke="#191970" d="M2444.2228,-1005.212C2104.5955,-1001.2315 754,-979.9962 754,-894 754,-894 754,-894 754,-838 754,-786.0623 812.9876,-754.8153 855.7162,-738.994"/>
+<polygon fill="#191970" stroke="#191970" points="857.1118,-742.2129 865.3696,-735.5752 854.7749,-735.6144 857.1118,-742.2129"/>
 </g>
 <!-- Node19 -->
 <g id="node20" class="node">
 <title>Node19</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="1496.5,-235.5 1496.5,-254.5 1543.5,-254.5 1543.5,-235.5 1496.5,-235.5"/>
-<text text-anchor="middle" x="1520" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">vector</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="1370.5,-235.5 1370.5,-254.5 1417.5,-254.5 1417.5,-235.5 1370.5,-235.5"/>
+<text text-anchor="middle" x="1394" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">vector</text>
 </g>
 <!-- Node0&#45;&gt;Node19 -->
-<g id="edge179" class="edge">
+<g id="edge181" class="edge">
 <title>Node0&#45;&gt;Node19</title>
-<path fill="none" stroke="#191970" d="M2196.3946,-1003.9234C1820.5937,-993.4903 190,-945.2675 190,-894 190,-894 190,-894 190,-838 190,-644.1274 866.6666,-748.5913 1048,-680 1146.454,-642.7587 1251,-663.262 1251,-558 1251,-558 1251,-558 1251,-440.5 1251,-390.0399 1213.2571,-388.4235 1173,-358 1145.4043,-337.1452 1121.9306,-351.5794 1104,-322 1096.8579,-310.2179 1094.7247,-301.188 1104,-291 1159.583,-229.9475 1386.8186,-268.6167 1486.2839,-254.4915"/>
-<polygon fill="#191970" stroke="#191970" points="1487.0754,-257.9073 1496.3506,-252.7867 1485.9066,-251.0056 1487.0754,-257.9073"/>
+<path fill="none" stroke="#191970" d="M2444.3521,-1004.6684C2169.2553,-999.7506 1232.1528,-981.7637 933,-960 806.9239,-950.8278 368,-1020.4093 368,-894 368,-894 368,-894 368,-782 368,-669.7701 530.0548,-768.5557 599,-680 706.7271,-541.6313 534.6631,-408.3171 665,-291 691.152,-267.4604 1220.0101,-250.1588 1360.161,-245.9747"/>
+<polygon fill="#191970" stroke="#191970" points="1360.4153,-249.4688 1370.3074,-245.6745 1360.2083,-242.4719 1360.4153,-249.4688"/>
 </g>
 <!-- Node22 -->
 <g id="node23" class="node">
 <title>Node22</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="1226,-235.5 1226,-254.5 1284,-254.5 1284,-235.5 1226,-235.5"/>
-<text text-anchor="middle" x="1255" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">memory</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="1816,-235.5 1816,-254.5 1874,-254.5 1874,-235.5 1816,-235.5"/>
+<text text-anchor="middle" x="1845" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">memory</text>
 </g>
 <!-- Node0&#45;&gt;Node22 -->
-<g id="edge177" class="edge">
+<g id="edge179" class="edge">
 <title>Node0&#45;&gt;Node22</title>
-<path fill="none" stroke="#191970" d="M2196.4791,-1005.0571C1910.4947,-1001.3552 904.5356,-986.6926 585,-960 391.0085,-943.7948 152,-1088.6672 152,-894 152,-894 152,-894 152,-614 152,-386.2878 395.9778,-465.234 573,-322 588.6436,-309.3423 587.5645,-299.0666 606,-291 661.7931,-266.5873 1084.1611,-250.6612 1215.8887,-246.2481"/>
-<polygon fill="#191970" stroke="#191970" points="1216.0597,-249.7445 1225.9382,-245.915 1215.8277,-242.7483 1216.0597,-249.7445"/>
+<path fill="none" stroke="#191970" d="M2500.3161,-996.463C2486.1333,-988.7523 2468.2661,-976.4706 2459,-960 2381.0882,-821.5112 2484.8215,-751.6124 2426,-604 2402.5659,-545.1923 2385.8301,-533.4704 2338,-492 2321.817,-477.9687 2030.6258,-312.0616 1983,-291 1965.0266,-283.0516 1917.901,-267.7657 1883.7129,-257.0018"/>
+<polygon fill="#191970" stroke="#191970" points="1884.5964,-253.6109 1874.0072,-253.9578 1882.5015,-260.2901 1884.5964,-253.6109"/>
 </g>
-<!-- Node32 -->
-<g id="node33" class="node">
-<title>Node32</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="2844.5,-235.5 2844.5,-254.5 2937.5,-254.5 2937.5,-235.5 2844.5,-235.5"/>
-<text text-anchor="middle" x="2891" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">unordered_map</text>
+<!-- Node35 -->
+<g id="node36" class="node">
+<title>Node35</title>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="2794.5,-235.5 2794.5,-254.5 2887.5,-254.5 2887.5,-235.5 2794.5,-235.5"/>
+<text text-anchor="middle" x="2841" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">unordered_map</text>
 </g>
-<!-- Node0&#45;&gt;Node32 -->
-<g id="edge178" class="edge">
-<title>Node0&#45;&gt;Node32</title>
-<path fill="none" stroke="#191970" d="M2349.5883,-1001.5716C2530.0756,-990.1137 2967,-955.976 2967,-894 2967,-894 2967,-894 2967,-373.5 2967,-328.2888 2931.7147,-285.0297 2909.2296,-262.0531"/>
-<polygon fill="#191970" stroke="#191970" points="2911.4629,-259.3396 2901.8889,-254.8019 2906.5436,-264.3196 2911.4629,-259.3396"/>
+<!-- Node0&#45;&gt;Node35 -->
+<g id="edge180" class="edge">
+<title>Node0&#45;&gt;Node35</title>
+<path fill="none" stroke="#191970" d="M2597.5129,-1004.0497C2715.8001,-1000.1566 2937.0448,-989.1292 3010,-960 3054.0938,-942.3944 3094,-941.4787 3094,-894 3094,-894 3094,-894 3094,-373.5 3094,-286.1022 2972.5001,-258.1258 2897.897,-249.1854"/>
+<polygon fill="#191970" stroke="#191970" points="2898.0258,-245.6781 2887.6989,-248.046 2897.2484,-252.6348 2898.0258,-245.6781"/>
 </g>
-<!-- Node41 -->
+<!-- Node42 -->
 <g id="node41" class="node">
-<title>Node41</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="2267,-364 2267,-383 2311,-383 2311,-364 2267,-364"/>
-<text text-anchor="middle" x="2289" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">limits</text>
+<title>Node42</title>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="2537,-364 2537,-383 2581,-383 2581,-364 2537,-364"/>
+<text text-anchor="middle" x="2559" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">limits</text>
 </g>
-<!-- Node0&#45;&gt;Node41 -->
-<g id="edge176" class="edge">
-<title>Node0&#45;&gt;Node41</title>
-<path fill="none" stroke="#191970" d="M2349.7202,-999.0888C2507.3538,-983.853 2853,-944.6684 2853,-894 2853,-894 2853,-894 2853,-502 2853,-447.0435 2440.6508,-392.1201 2321.1132,-377.3527"/>
-<polygon fill="#191970" stroke="#191970" points="2321.461,-373.8693 2311.1095,-376.1265 2320.6093,-380.8172 2321.461,-373.8693"/>
+<!-- Node0&#45;&gt;Node42 -->
+<g id="edge178" class="edge">
+<title>Node0&#45;&gt;Node42</title>
+<path fill="none" stroke="#191970" d="M2597.5974,-1003.0522C2707.1071,-998.003 2902.4343,-985.6589 2968,-960 3013.5268,-942.1833 3056,-942.8889 3056,-894 3056,-894 3056,-894 3056,-614 3056,-510.3443 2701.2823,-410.1799 2591.1908,-381.5887"/>
+<polygon fill="#191970" stroke="#191970" points="2591.8774,-378.1514 2581.3206,-379.0475 2590.1321,-384.9304 2591.8774,-378.1514"/>
 </g>
-<!-- Node49 -->
+<!-- Node50 -->
 <g id="node49" class="node">
-<title>Node49</title>
+<title>Node50</title>
 <g id="a_node49"><a xlink:href="with_8h.html" target="_top" xlink:title="RAII wrapper function to enter and exit a context object similar to python&#39;s with syntax...">
-<polygon fill="#ffffff" stroke="#000000" points="2995.5,-940.5 2995.5,-959.5 3104.5,-959.5 3104.5,-940.5 2995.5,-940.5"/>
-<text text-anchor="middle" x="3050" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/support/with.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="2849.5,-940.5 2849.5,-959.5 2958.5,-959.5 2958.5,-940.5 2849.5,-940.5"/>
+<text text-anchor="middle" x="2904" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/support/with.h</text>
 </a>
 </g>
 </g>
-<!-- Node0&#45;&gt;Node49 -->
-<g id="edge173" class="edge">
-<title>Node0&#45;&gt;Node49</title>
-<path fill="none" stroke="#191970" d="M2349.6492,-1003.0077C2479.7312,-997.4848 2751.9154,-984.0044 2981,-960 2982.4672,-959.8463 2983.9511,-959.6845 2985.4467,-959.5158"/>
-<polygon fill="#191970" stroke="#191970" points="2985.9262,-962.9835 2995.4366,-958.314 2985.0901,-956.0336 2985.9262,-962.9835"/>
+<!-- Node0&#45;&gt;Node50 -->
+<g id="edge175" class="edge">
+<title>Node0&#45;&gt;Node50</title>
+<path fill="none" stroke="#191970" d="M2586.4049,-996.4369C2657.0666,-986.1051 2768.9617,-969.7445 2839.3343,-959.455"/>
+<polygon fill="#191970" stroke="#191970" points="2840.0176,-962.8924 2849.406,-957.9824 2839.0048,-955.9661 2840.0176,-962.8924"/>
 </g>
 <!-- Node1&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node1&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M2219.211,-946.5649C2111.5212,-938.4822 1862.808,-913.7279 1665,-848 1581.9139,-820.392 1492.1931,-766.9583 1451.0226,-740.9492"/>
-<polygon fill="#191970" stroke="#191970" points="1452.8524,-737.965 1442.5384,-735.5416 1449.09,-743.8679 1452.8524,-737.965"/>
+<path fill="none" stroke="#191970" d="M2467.3139,-944.0537C2294.5682,-924.7313 1737.6416,-860.9659 1279,-792 1160.1924,-774.1349 1021.2555,-748.8909 948.7683,-735.3875"/>
+<polygon fill="#191970" stroke="#191970" points="949.0385,-731.8775 938.566,-733.4826 947.7537,-738.7586 949.0385,-731.8775"/>
 </g>
-<!-- Node1&#45;&gt;Node32 -->
-<g id="edge171" class="edge">
-<title>Node1&#45;&gt;Node32</title>
-<path fill="none" stroke="#191970" d="M2326.7624,-946.9129C2477.1179,-936.8218 2891,-898.4667 2891,-782 2891,-782 2891,-782 2891,-373.5 2891,-335.0012 2891,-290.0145 2891,-264.7812"/>
-<polygon fill="#191970" stroke="#191970" points="2894.5001,-264.6718 2891,-254.6719 2887.5001,-264.6719 2894.5001,-264.6718"/>
+<!-- Node1&#45;&gt;Node35 -->
+<g id="edge173" class="edge">
+<title>Node1&#45;&gt;Node35</title>
+<path fill="none" stroke="#191970" d="M2574.6719,-942.4998C2670.9332,-928.0562 2867.5995,-893.7212 2918,-848 2941.1176,-827.0286 2942,-813.2125 2942,-782 2942,-782 2942,-782 2942,-558 2942,-440.9899 2877.2818,-310.7468 2851.4571,-263.4334"/>
+<polygon fill="#191970" stroke="#191970" points="2854.4856,-261.6775 2846.5741,-254.6306 2848.3643,-265.0731 2854.4856,-261.6775"/>
 </g>
-<!-- Node46 -->
+<!-- Node47 -->
 <g id="node46" class="node">
-<title>Node46</title>
+<title>Node47</title>
 <g id="a_node46"><a xlink:href="tir_2expr_8h.html" target="_top" xlink:title="TIR expressions. ">
-<polygon fill="#ffffff" stroke="#000000" points="2231.5,-884.5 2231.5,-903.5 2314.5,-903.5 2314.5,-884.5 2231.5,-884.5"/>
-<text text-anchor="middle" x="2273" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/tir/expr.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="2479.5,-884.5 2479.5,-903.5 2562.5,-903.5 2562.5,-884.5 2479.5,-884.5"/>
+<text text-anchor="middle" x="2521" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/tir/expr.h</text>
 </a>
 </g>
 </g>
-<!-- Node1&#45;&gt;Node46 -->
-<g id="edge145" class="edge">
-<title>Node1&#45;&gt;Node46</title>
-<path fill="none" stroke="#191970" d="M2273,-940.2455C2273,-932.9382 2273,-922.6944 2273,-913.7046"/>
-<polygon fill="#191970" stroke="#191970" points="2276.5001,-913.6426 2273,-903.6427 2269.5001,-913.6427 2276.5001,-913.6426"/>
+<!-- Node1&#45;&gt;Node47 -->
+<g id="edge147" class="edge">
+<title>Node1&#45;&gt;Node47</title>
+<path fill="none" stroke="#191970" d="M2521,-940.2455C2521,-932.9382 2521,-922.6944 2521,-913.7046"/>
+<polygon fill="#191970" stroke="#191970" points="2524.5001,-913.6426 2521,-903.6427 2517.5001,-913.6427 2524.5001,-913.6426"/>
 </g>
 <!-- Node3 -->
 <g id="node4" class="node">
 <title>Node3</title>
 <g id="a_node4"><a xlink:href="span_8h.html" target="_top" xlink:title="Span information for debugging purposes. ">
-<polygon fill="#ffffff" stroke="#000000" points="1027.5,-604.5 1027.5,-623.5 1108.5,-623.5 1108.5,-604.5 1027.5,-604.5"/>
-<text text-anchor="middle" x="1068" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/span.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="437.5,-604.5 437.5,-623.5 518.5,-623.5 518.5,-604.5 437.5,-604.5"/>
+<text text-anchor="middle" x="478" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/span.h</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node2&#45;&gt;Node3</title>
-<path fill="none" stroke="#191970" d="M1395.7162,-716.463C1364.7186,-707.266 1316.5977,-692.8838 1275,-680 1216.4153,-661.8549 1148.7464,-640.135 1107.1652,-626.7008"/>
-<polygon fill="#191970" stroke="#191970" points="1108.0234,-623.2999 1097.4316,-623.5534 1105.8697,-629.9604 1108.0234,-623.2999"/>
+<path fill="none" stroke="#191970" d="M859.485,-723.8014C764.4037,-718.1798 528.655,-702.148 501,-680 487.2638,-668.9991 481.7096,-649.2799 479.4753,-634.2515"/>
+<polygon fill="#191970" stroke="#191970" points="482.9084,-633.4517 478.3334,-623.8956 475.9506,-634.219 482.9084,-633.4517"/>
 </g>
 <!-- Node4 -->
 <g id="node5" class="node">
 <title>Node4</title>
 <g id="a_node5"><a xlink:href="node_8h.html" target="_top" xlink:title="Definitions and helper macros for IR/AST nodes. ">
-<polygon fill="#ffffff" stroke="#000000" points="1051.5,-548.5 1051.5,-567.5 1150.5,-567.5 1150.5,-548.5 1051.5,-548.5"/>
-<text text-anchor="middle" x="1101" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/node.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="968.5,-548.5 968.5,-567.5 1067.5,-567.5 1067.5,-548.5 968.5,-548.5"/>
+<text text-anchor="middle" x="1018" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/node.h</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node4 -->
-<g id="edge138" class="edge">
+<g id="edge140" class="edge">
 <title>Node2&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M1409.4821,-716.4862C1354.8654,-688.4263 1194.1907,-605.8778 1128.9807,-572.3754"/>
-<polygon fill="#191970" stroke="#191970" points="1130.2143,-569.0743 1119.7201,-567.6177 1127.0154,-575.3007 1130.2143,-569.0743"/>
+<path fill="none" stroke="#191970" d="M905.7389,-716.4862C924.8758,-689.4695 979.7921,-611.9405 1005.0303,-576.3102"/>
+<polygon fill="#191970" stroke="#191970" points="1008.1145,-578.0112 1011.0386,-567.8279 1002.4023,-573.9651 1008.1145,-578.0112"/>
 </g>
 <!-- Node9 -->
 <g id="node10" class="node">
 <title>Node9</title>
 <g id="a_node10"><a xlink:href="object_8h.html" target="_top" xlink:title="A managed object in the TVM runtime. ">
-<polygon fill="#ffffff" stroke="#000000" points="1649.5,-123.5 1649.5,-142.5 1768.5,-142.5 1768.5,-123.5 1649.5,-123.5"/>
-<text text-anchor="middle" x="1709" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/object.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1294.5,-123.5 1294.5,-142.5 1413.5,-142.5 1413.5,-123.5 1294.5,-123.5"/>
+<text text-anchor="middle" x="1354" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/object.h</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node9 -->
-<g id="edge140" class="edge">
+<g id="edge142" class="edge">
 <title>Node2&#45;&gt;Node9</title>
-<path fill="none" stroke="#191970" d="M1467.8614,-723.5225C1567.3815,-714.8908 1825.8622,-676.8331 1925,-512 1976.0582,-427.1072 1954.148,-371.2031 1896,-291 1855.7708,-235.5122 1844.3343,-220.774 1790,-179 1774.0742,-166.7558 1754.5325,-155.5635 1738.6336,-147.2851"/>
-<polygon fill="#191970" stroke="#191970" points="1739.7703,-143.9366 1729.27,-142.5239 1736.5975,-150.1763 1739.7703,-143.9366"/>
+<path fill="none" stroke="#191970" d="M859.4647,-724.072C769.4182,-719.2887 551.5663,-705.3908 483,-680 421.0874,-657.0731 228,-537.3209 228,-502 228,-502 228,-502 228,-245 228,-191.6805 1038.0336,-148.2372 1284.0103,-136.2742"/>
+<polygon fill="#191970" stroke="#191970" points="1284.4373,-139.7577 1294.2564,-135.7783 1284.0988,-132.7659 1284.4373,-139.7577"/>
 </g>
 <!-- Node15 -->
 <g id="node16" class="node">
 <title>Node15</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="320,-62 320,-81 364,-81 364,-62 320,-62"/>
-<text text-anchor="middle" x="342" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">string</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="358,-62 358,-81 402,-81 402,-62 358,-62"/>
+<text text-anchor="middle" x="380" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">string</text>
 </g>
 <!-- Node2&#45;&gt;Node15 -->
-<g id="edge143" class="edge">
+<g id="edge145" class="edge">
 <title>Node2&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M1388.2151,-724.5385C1252.0255,-719.3899 805.1161,-701.254 663,-680 558.0943,-664.3109 531.5803,-657.6893 431,-624 260.7293,-566.9679 114,-553.0683 114,-373.5 114,-373.5 114,-373.5 114,-189 114,-102.0732 246.5702,-79.3944 309.5337,-73.5253"/>
-<polygon fill="#191970" stroke="#191970" points="310.0527,-76.994 319.7233,-72.6663 309.4646,-70.0188 310.0527,-76.994"/>
+<path fill="none" stroke="#191970" d="M859.3144,-724.2169C779.2611,-720.1405 592.9399,-708.2242 439,-680 344.8334,-662.735 315.9402,-668.1656 231,-624 190.4075,-602.8935 152,-603.7519 152,-558 152,-558 152,-558 152,-440.5 152,-351.985 114,-333.515 114,-245 114,-245 114,-245 114,-189 114,-154.2309 127.602,-143.061 156,-123 186.7073,-101.3076 293.5759,-83.6463 347.8457,-75.8351"/>
+<polygon fill="#191970" stroke="#191970" points="348.5483,-79.2707 357.9603,-74.4059 347.5689,-72.3395 348.5483,-79.2707"/>
 </g>
 <!-- Node16 -->
 <g id="node17" class="node">
 <title>Node16</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="801.5,-62 801.5,-81 870.5,-81 870.5,-62 801.5,-62"/>
-<text text-anchor="middle" x="836" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">type_traits</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="2767.5,-62 2767.5,-81 2836.5,-81 2836.5,-62 2767.5,-62"/>
+<text text-anchor="middle" x="2802" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">type_traits</text>
 </g>
 <!-- Node2&#45;&gt;Node16 -->
-<g id="edge144" class="edge">
+<g id="edge146" class="edge">
 <title>Node2&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1388.4156,-725.2704C1180.8995,-720.4047 228,-684.7631 228,-440.5 228,-440.5 228,-440.5 228,-373.5 228,-121.976 650.5235,-79.9363 791.1135,-72.91"/>
-<polygon fill="#191970" stroke="#191970" points="791.3005,-76.4052 801.1275,-72.4455 790.9761,-69.4127 791.3005,-76.4052"/>
+<path fill="none" stroke="#191970" d="M938.8016,-725.5495C1152.4563,-723.0162 2158.697,-709.5887 2294,-680 2650.1386,-602.1179 2820.7875,-619.1357 3032,-322 3054.6144,-290.1858 3060.847,-270.2099 3044,-235 3004.5901,-152.634 2900.8754,-105.2423 2842.8272,-84.3776"/>
+<polygon fill="#191970" stroke="#191970" points="2843.8274,-81.0195 2833.2325,-81.0211 2841.5159,-87.6269 2843.8274,-81.0195"/>
 </g>
 <!-- Node21 -->
 <g id="node22" class="node">
 <title>Node21</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="2570,-179.5 2570,-198.5 2634,-198.5 2634,-179.5 2570,-179.5"/>
-<text text-anchor="middle" x="2602" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">algorithm</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="2564,-179.5 2564,-198.5 2628,-198.5 2628,-179.5 2564,-179.5"/>
+<text text-anchor="middle" x="2596" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">algorithm</text>
 </g>
 <!-- Node2&#45;&gt;Node21 -->
-<g id="edge141" class="edge">
+<g id="edge143" class="edge">
 <title>Node2&#45;&gt;Node21</title>
-<path fill="none" stroke="#191970" d="M1467.5938,-724.8836C1606.6883,-720.7586 2067.8605,-705.2937 2129,-680 2352.2283,-587.6494 2391.7729,-514.2944 2538,-322 2565.6598,-285.6263 2585.8398,-235.3907 2595.5391,-208.2554"/>
-<polygon fill="#191970" stroke="#191970" points="2598.8634,-209.3518 2598.8406,-198.757 2592.2514,-207.0536 2598.8634,-209.3518"/>
+<path fill="none" stroke="#191970" d="M938.6492,-725.4038C1155.7731,-722.0446 2193.1857,-704.7468 2256,-680 2439.1797,-607.833 2505.7765,-566.9586 2590,-389 2618.5504,-328.6749 2607.6267,-246.2498 2600.3981,-208.8734"/>
+<polygon fill="#191970" stroke="#191970" points="2603.7675,-207.8822 2598.3212,-198.7944 2596.9115,-209.2951 2603.7675,-207.8822"/>
 </g>
-<!-- Node34 -->
-<g id="node35" class="node">
-<title>Node34</title>
-<g id="a_node35"><a xlink:href="string_8h.html" target="_top" xlink:title="Runtime String container types. ">
-<polygon fill="#ffffff" stroke="#000000" points="2259,-291.5 2259,-321.5 2385,-321.5 2385,-291.5 2259,-291.5"/>
-<text text-anchor="start" x="2267" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/container</text>
-<text text-anchor="middle" x="2322" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/string.h</text>
+<!-- Node33 -->
+<g id="node34" class="node">
+<title>Node33</title>
+<g id="a_node34"><a xlink:href="string_8h.html" target="_top" xlink:title="Runtime String container types. ">
+<polygon fill="#ffffff" stroke="#000000" points="2340,-291.5 2340,-321.5 2466,-321.5 2466,-291.5 2340,-291.5"/>
+<text text-anchor="start" x="2348" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/container</text>
+<text text-anchor="middle" x="2403" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/string.h</text>
 </a>
 </g>
 </g>
-<!-- Node2&#45;&gt;Node34 -->
-<g id="edge139" class="edge">
-<title>Node2&#45;&gt;Node34</title>
-<path fill="none" stroke="#191970" d="M1467.8435,-725.376C1599.2819,-723.0092 2013.5832,-712.9794 2063,-680 2196.253,-591.0706 2112.9701,-472.5168 2225,-358 2237.9292,-344.7838 2254.9809,-334.1907 2271.1771,-326.1297"/>
-<polygon fill="#191970" stroke="#191970" points="2273.0388,-329.1207 2280.5766,-321.6755 2270.0411,-322.795 2273.0388,-329.1207"/>
+<!-- Node2&#45;&gt;Node33 -->
+<g id="edge141" class="edge">
+<title>Node2&#45;&gt;Node33</title>
+<path fill="none" stroke="#191970" d="M938.6977,-721.9266C1073.6462,-707.6054 1526.6147,-655.6454 1892,-568 1970.5875,-549.1491 1991.529,-545.6655 2065,-512 2185.8473,-456.6261 2317.1815,-367.5054 2374.0561,-327.3275"/>
+<polygon fill="#191970" stroke="#191970" points="2376.0849,-330.1795 2382.2148,-321.5381 2372.0339,-324.4708 2376.0849,-330.1795"/>
 </g>
-<!-- Node2&#45;&gt;Node41 -->
-<g id="edge142" class="edge">
-<title>Node2&#45;&gt;Node41</title>
-<path fill="none" stroke="#191970" d="M1467.6028,-725.181C1603.4432,-722.1138 2045.1987,-709.9148 2101,-680 2156.3126,-650.3472 2153.1904,-620.8741 2187,-568 2197.4792,-551.6118 2256.0649,-437.761 2279.4037,-392.2426"/>
-<polygon fill="#191970" stroke="#191970" points="2282.6127,-393.655 2284.0582,-383.1592 2276.3829,-390.4627 2282.6127,-393.655"/>
+<!-- Node2&#45;&gt;Node42 -->
+<g id="edge144" class="edge">
+<title>Node2&#45;&gt;Node42</title>
+<path fill="none" stroke="#191970" d="M938.634,-725.414C1153.3565,-722.141 2169.8487,-705.353 2231,-680 2240.8801,-675.9038 2475.1112,-453.3516 2541.5679,-390.1014"/>
+<polygon fill="#191970" stroke="#191970" points="2543.9846,-392.6331 2548.8143,-383.2031 2539.1581,-387.5631 2543.9846,-392.6331"/>
 </g>
-<!-- Node45 -->
+<!-- Node46 -->
 <g id="node45" class="node">
-<title>Node45</title>
+<title>Node46</title>
 <g id="a_node45"><a xlink:href="ir_2type_8h.html" target="_top" xlink:title="IR/AST nodes for the unified type system in TVM. ">
-<polygon fill="#ffffff" stroke="#000000" points="959,-660.5 959,-679.5 1039,-679.5 1039,-660.5 959,-660.5"/>
-<text text-anchor="middle" x="999" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/type.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="510,-660.5 510,-679.5 590,-679.5 590,-660.5 510,-660.5"/>
+<text text-anchor="middle" x="550" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/ir/type.h</text>
 </a>
 </g>
 </g>
-<!-- Node2&#45;&gt;Node45 -->
-<g id="edge131" class="edge">
-<title>Node2&#45;&gt;Node45</title>
-<path fill="none" stroke="#191970" d="M1388.4097,-720.832C1310.0752,-710.6065 1135.4422,-687.8106 1049.1868,-676.5512"/>
-<polygon fill="#191970" stroke="#191970" points="1049.4873,-673.0608 1039.1183,-675.2369 1048.5811,-680.0019 1049.4873,-673.0608"/>
+<!-- Node2&#45;&gt;Node46 -->
+<g id="edge133" class="edge">
+<title>Node2&#45;&gt;Node46</title>
+<path fill="none" stroke="#191970" d="M859.305,-719.6306C795.449,-709.3844 670.0141,-689.2573 600.0943,-678.0381"/>
+<polygon fill="#191970" stroke="#191970" points="600.6233,-674.5782 590.1951,-676.4496 599.5142,-681.4898 600.6233,-674.5782"/>
 </g>
 <!-- Node3&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node3&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M1073.7482,-604.2455C1078.2435,-596.617 1084.6248,-585.7881 1090.0825,-576.5267"/>
-<polygon fill="#191970" stroke="#191970" points="1093.2561,-578.035 1095.3177,-567.6427 1087.2253,-574.4811 1093.2561,-578.035"/>
+<path fill="none" stroke="#191970" d="M518.7385,-609.5788C534.9943,-607.8252 553.8813,-605.8012 571,-604 709.6724,-589.4093 872.6011,-572.7695 958.3187,-564.0542"/>
+<polygon fill="#191970" stroke="#191970" points="958.7877,-567.5247 968.3825,-563.0313 958.0798,-560.5605 958.7877,-567.5247"/>
 </g>
 <!-- Node3&#45;&gt;Node9 -->
-<g id="edge129" class="edge">
+<g id="edge131" class="edge">
 <title>Node3&#45;&gt;Node9</title>
-<path fill="none" stroke="#191970" d="M1108.736,-612.1449C1269.2039,-604.4277 1851.5017,-572.4136 1905,-512 2011.2005,-392.0719 1798.1198,-204.3148 1729.3896,-148.9002"/>
-<polygon fill="#191970" stroke="#191970" points="1731.4008,-146.0275 1721.3992,-142.5319 1727.0379,-151.5016 1731.4008,-146.0275"/>
+<path fill="none" stroke="#191970" d="M478.942,-604.3362C483.7169,-560.7775 509.18,-380.9223 611,-291 633.1283,-271.4574 1053.6497,-179.068 1054,-179 1132.3603,-163.7981 1223.0303,-150.4801 1284.003,-142.1395"/>
+<polygon fill="#191970" stroke="#191970" points="1284.8414,-145.5578 1294.2787,-140.7425 1283.8983,-138.6216 1284.8414,-145.5578"/>
 </g>
 <!-- Node3&#45;&gt;Node15 -->
-<g id="edge130" class="edge">
+<g id="edge132" class="edge">
 <title>Node3&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M1027.4131,-607.3367C854.7372,-578.4459 190,-461.5117 190,-373.5 190,-373.5 190,-373.5 190,-189 190,-128.8142 265.5179,-95.0962 310.0946,-80.4359"/>
-<polygon fill="#191970" stroke="#191970" points="311.4082,-83.6918 319.8979,-77.3534 309.3085,-77.0142 311.4082,-83.6918"/>
+<path fill="none" stroke="#191970" d="M467.1954,-604.3501C423.994,-564.646 266,-408.2808 266,-245 266,-245 266,-245 266,-189 266,-140.5473 316.5515,-104.5212 350.3292,-85.8573"/>
+<polygon fill="#191970" stroke="#191970" points="352.1693,-88.843 359.3555,-81.0577 348.8828,-82.6624 352.1693,-88.843"/>
 </g>
 <!-- Node5 -->
 <g id="node6" class="node">
 <title>Node5</title>
 <g id="a_node6"><a xlink:href="reflection_8h.html" target="_top" xlink:title="Reflection and serialization of compiler IR/AST nodes. ">
-<polygon fill="#ffffff" stroke="#000000" points="1039.5,-492.5 1039.5,-511.5 1160.5,-511.5 1160.5,-492.5 1039.5,-492.5"/>
-<text text-anchor="middle" x="1100" y="-499.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/reflection.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="982.5,-492.5 982.5,-511.5 1103.5,-511.5 1103.5,-492.5 982.5,-492.5"/>
+<text text-anchor="middle" x="1043" y="-499.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/reflection.h</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node5 -->
 <g id="edge5" class="edge">
 <title>Node4&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M1100.8258,-548.2455C1100.6953,-540.9382 1100.5124,-530.6944 1100.3519,-521.7046"/>
-<polygon fill="#191970" stroke="#191970" points="1103.8503,-521.5786 1100.1722,-511.6427 1096.8514,-521.7036 1103.8503,-521.5786"/>
+<path fill="none" stroke="#191970" d="M1022.3547,-548.2455C1025.7244,-540.6973 1030.493,-530.0158 1034.5983,-520.8197"/>
+<polygon fill="#191970" stroke="#191970" points="1037.8147,-522.2009 1038.6952,-511.6427 1031.4227,-519.3473 1037.8147,-522.2009"/>
 </g>
 <!-- Node6 -->
 <g id="node7" class="node">
 <title>Node6</title>
 <g id="a_node7"><a xlink:href="structural__equal_8h.html" target="_top" xlink:title="Structural equality comparison. ">
-<polygon fill="#ffffff" stroke="#000000" points="919.5,-358.5 919.5,-388.5 1032.5,-388.5 1032.5,-358.5 919.5,-358.5"/>
-<text text-anchor="start" x="927.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/structural</text>
-<text text-anchor="middle" x="976" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_equal.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1276.5,-358.5 1276.5,-388.5 1389.5,-388.5 1389.5,-358.5 1276.5,-358.5"/>
+<text text-anchor="start" x="1284.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/structural</text>
+<text text-anchor="middle" x="1333" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_equal.h</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node6 -->
-<g id="edge120" class="edge">
+<g id="edge122" class="edge">
 <title>Node4&#45;&gt;Node6</title>
-<path fill="none" stroke="#191970" d="M1079.1396,-548.3761C1063.5802,-540.5516 1043.1762,-528.1667 1030,-512 1002.4092,-478.1473 987.6995,-428.533 980.8973,-398.7858"/>
-<polygon fill="#191970" stroke="#191970" points="984.2711,-397.8275 978.7397,-388.7912 977.4287,-399.3046 984.2711,-397.8275"/>
+<path fill="none" stroke="#191970" d="M1067.7626,-551.0458C1127.7877,-540.3076 1228.6312,-514.4521 1293,-456 1309.9234,-440.6322 1320.4475,-416.5432 1326.4262,-398.3545"/>
+<polygon fill="#191970" stroke="#191970" points="1329.803,-399.2796 1329.3635,-388.6939 1323.1058,-397.2432 1329.803,-399.2796"/>
 </g>
 <!-- Node4&#45;&gt;Node9 -->
-<g id="edge124" class="edge">
+<g id="edge126" class="edge">
 <title>Node4&#45;&gt;Node9</title>
-<path fill="none" stroke="#191970" d="M1150.5638,-552.499C1166.0611,-550.8982 1183.2296,-549.2468 1199,-548 1270.1126,-542.3778 1777.9304,-547.1564 1840,-512 1876.714,-491.2051 1886.8162,-466.2628 1878,-425 1853.9713,-312.538 1816.9219,-293.9223 1752,-199 1741.1902,-183.195 1729.342,-164.9355 1720.8248,-151.6343"/>
-<polygon fill="#191970" stroke="#191970" points="1723.6025,-149.4804 1715.2743,-142.9312 1717.7006,-153.2445 1723.6025,-149.4804"/>
+<path fill="none" stroke="#191970" d="M976.2821,-548.4542C855.8052,-519.0467 522.7202,-423.7326 632,-291 684.9639,-226.6694 734.516,-272.4347 816,-255 961.9045,-223.7816 997.4385,-211.7807 1143,-179 1196.1628,-167.0276 1256.9749,-153.8219 1299.613,-144.6426"/>
+<polygon fill="#191970" stroke="#191970" points="1300.4635,-148.0398 1309.504,-142.5153 1298.9915,-141.1963 1300.4635,-148.0398"/>
 </g>
 <!-- Node10 -->
 <g id="node11" class="node">
 <title>Node10</title>
 <g id="a_node11"><a xlink:href="c__runtime__api_8h.html" target="_top" xlink:title="tvm/runtime/c_runtime\l_api.h">
-<polygon fill="#ffffff" stroke="#000000" points="944.5,-56.5 944.5,-86.5 1073.5,-86.5 1073.5,-56.5 944.5,-56.5"/>
-<text text-anchor="start" x="952.5" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/c_runtime</text>
-<text text-anchor="middle" x="1009" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_api.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="790.5,-56.5 790.5,-86.5 919.5,-86.5 919.5,-56.5 790.5,-56.5"/>
+<text text-anchor="start" x="798.5" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/c_runtime</text>
+<text text-anchor="middle" x="855" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_api.h</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node10 -->
-<g id="edge122" class="edge">
+<g id="edge124" class="edge">
 <title>Node4&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M1051.2255,-551.3638C975.054,-539.8213 826.3763,-511.7568 712,-456 667.8138,-434.4599 651.4004,-429.8119 624,-389 606.8131,-363.4007 610.0347,-352.5686 606,-322 585.7378,-168.4849 812.4919,-105.3569 934.4466,-82.6457"/>
-<polygon fill="#191970" stroke="#191970" points="935.2616,-86.0551 944.4756,-80.825 934.0112,-79.1676 935.2616,-86.0551"/>
+<path fill="none" stroke="#191970" d="M968.4558,-549.8708C921.7971,-541.7866 850.1337,-528.2624 789,-512 596.0804,-460.6807 432.9276,-515.0234 382,-322 335.6708,-146.4049 635.745,-92.9216 780.3235,-77.4434"/>
+<polygon fill="#191970" stroke="#191970" points="780.8715,-80.9055 790.4575,-76.3935 780.15,-73.9428 780.8715,-80.9055"/>
 </g>
 <!-- Node4&#45;&gt;Node15 -->
-<g id="edge125" class="edge">
+<g id="edge127" class="edge">
 <title>Node4&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M1051.3315,-555.3771C976.8472,-550.7153 832.1301,-538.8291 712,-512 635.1868,-494.845 616.6231,-486.3389 544,-456 483.2931,-430.6392 462.7313,-430.8907 412,-389 341.4811,-330.7699 339.483,-290.2229 333,-199 330.6055,-165.3072 330.0817,-156.6515 333,-123 333.9131,-112.4711 335.8574,-100.866 337.706,-91.3418"/>
-<polygon fill="#191970" stroke="#191970" points="341.1837,-91.8057 339.7646,-81.3063 334.3265,-90.399 341.1837,-91.8057"/>
+<path fill="none" stroke="#191970" d="M968.2322,-554.5492C843.7573,-545.1027 522.7123,-515.4702 436,-456 398.8561,-430.5255 304,-284.8052 304,-245 304,-245 304,-245 304,-189 304,-147.4563 337.9099,-108.986 360.4281,-88.0193"/>
+<polygon fill="#191970" stroke="#191970" points="363.0192,-90.3968 368.125,-81.1133 358.3444,-85.1865 363.0192,-90.3968"/>
 </g>
 <!-- Node4&#45;&gt;Node16 -->
-<g id="edge126" class="edge">
+<g id="edge128" class="edge">
 <title>Node4&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1051.2639,-553.7673C990.679,-547.8553 885.576,-535.1528 798,-512 730.81,-494.2368 706.353,-499.3102 652,-456 623.9463,-433.6459 618.9752,-422.8129 607,-389 575.6386,-300.4486 576.9554,-255.8379 631,-179 669.2044,-124.683 743.5029,-95.6974 791.3803,-81.9725"/>
-<polygon fill="#191970" stroke="#191970" points="792.4637,-85.3045 801.1733,-79.2718 790.6026,-78.5564 792.4637,-85.3045"/>
+<path fill="none" stroke="#191970" d="M1067.7046,-557.4654C1251.1854,-555.2439 1890.146,-545.2432 2091,-512 2261.551,-483.7722 2300.3653,-455.3416 2460,-389 2490.6714,-376.2535 2495.9289,-366.6401 2528,-358 2606.4852,-336.8556 2824.9087,-367.8887 2892,-322 2945.1329,-285.6586 2937.4689,-239.3237 2915,-179 2904.9943,-152.1371 2902.786,-143.7423 2883,-123 2868.3851,-107.6788 2848.3236,-94.8794 2831.8226,-85.873"/>
+<polygon fill="#191970" stroke="#191970" points="2833.0668,-82.5729 2822.5866,-81.0181 2829.8097,-88.7691 2833.0668,-82.5729"/>
 </g>
 <!-- Node17 -->
 <g id="node18" class="node">
 <title>Node17</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="2717.5,-62 2717.5,-81 2762.5,-81 2762.5,-62 2717.5,-62"/>
-<text text-anchor="middle" x="2740" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">utility</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="2181.5,-62 2181.5,-81 2226.5,-81 2226.5,-62 2181.5,-62"/>
+<text text-anchor="middle" x="2204" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">utility</text>
 </g>
 <!-- Node4&#45;&gt;Node17 -->
-<g id="edge127" class="edge">
+<g id="edge129" class="edge">
 <title>Node4&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M1150.7103,-557.165C1302.7447,-554.2948 1759.9486,-543.2288 1905,-512 2053.9536,-479.931 2095.952,-470.0075 2225,-389 2242.0434,-378.3013 2239.5172,-365.9576 2258,-358 2382.723,-304.3019 2739.611,-366.2219 2868,-322 2917.5392,-304.9369 2940.658,-301.3978 2965,-255 2972.0349,-241.5909 2972.319,-202.9928 2960,-179 2924.0325,-108.9487 2824.929,-83.9892 2772.8901,-75.5431"/>
-<polygon fill="#191970" stroke="#191970" points="2773.2519,-72.0581 2762.8409,-74.0233 2772.205,-78.9794 2773.2519,-72.0581"/>
+<path fill="none" stroke="#191970" d="M1067.7342,-557.3145C1244.7961,-554.6297 1843.9777,-543.3858 2033,-512 2120.6883,-497.44 2140.9844,-485.0279 2225,-456 2297.6738,-430.8907 2483.6985,-369.7041 2544,-322 2603.4582,-274.963 2683.2241,-239.0923 2637,-179 2587.542,-114.7034 2329.1504,-83.6562 2236.8292,-74.4921"/>
+<polygon fill="#191970" stroke="#191970" points="2236.9588,-70.9884 2226.6674,-73.5058 2236.2825,-77.9556 2236.9588,-70.9884"/>
 </g>
 <!-- Node4&#45;&gt;Node19 -->
-<g id="edge128" class="edge">
+<g id="edge130" class="edge">
 <title>Node4&#45;&gt;Node19</title>
-<path fill="none" stroke="#191970" d="M1150.6085,-549.8188C1238.5724,-534.3927 1416.8803,-498.6908 1462,-456 1484.8692,-434.3619 1479.8182,-420.0541 1485,-389 1492.1691,-346.0362 1469.8021,-332.1789 1484,-291 1487.7187,-280.2144 1495.1213,-270.0249 1502.2519,-261.9904"/>
-<polygon fill="#191970" stroke="#191970" points="1504.7967,-264.3934 1509.1452,-254.7321 1499.7209,-259.5729 1504.7967,-264.3934"/>
+<path fill="none" stroke="#191970" d="M1067.8515,-553.9063C1175.0786,-543.7267 1418,-512.6977 1418,-440.5 1418,-440.5 1418,-440.5 1418,-373.5 1418,-334.1591 1406.9956,-289.1772 1399.8898,-264.2323"/>
+<polygon fill="#191970" stroke="#191970" points="1403.223,-263.161 1397.0396,-254.5577 1396.5083,-265.1392 1403.223,-263.161"/>
 </g>
 <!-- Node24 -->
 <g id="node25" class="node">
 <title>Node24</title>
 <g id="a_node25"><a xlink:href="runtime_2memory_8h.html" target="_top" xlink:title="Runtime memory management. ">
-<polygon fill="#ffffff" stroke="#000000" points="1984.5,-179.5 1984.5,-198.5 2113.5,-198.5 2113.5,-179.5 1984.5,-179.5"/>
-<text text-anchor="middle" x="2049" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/memory.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="2302.5,-179.5 2302.5,-198.5 2431.5,-198.5 2431.5,-179.5 2302.5,-179.5"/>
+<text text-anchor="middle" x="2367" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/memory.h</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node24 -->
-<g id="edge123" class="edge">
+<g id="edge125" class="edge">
 <title>Node4&#45;&gt;Node24</title>
-<path fill="none" stroke="#191970" d="M1150.5618,-552.4725C1166.059,-550.8706 1183.2279,-549.2252 1199,-548 1348.5408,-536.3835 1731.8061,-562.6128 1873,-512 2001.4658,-465.9498 2038.0965,-271.7059 2046.6945,-208.7706"/>
-<polygon fill="#191970" stroke="#191970" points="2050.1967,-208.9749 2047.9896,-198.6126 2043.2529,-208.0896 2050.1967,-208.9749"/>
+<path fill="none" stroke="#191970" d="M1067.6297,-557.4893C1238.1647,-555.4423 1799.3454,-546.207 1976,-512 2180.645,-472.373 2221.8673,-425.739 2419,-358 2466.0535,-341.8314 2496.0225,-362.4445 2525,-322 2548.5797,-289.0894 2528.1795,-261.9872 2498,-235 2479.7623,-218.6914 2455.3933,-208.0838 2432.622,-201.2202"/>
+<polygon fill="#191970" stroke="#191970" points="2433.5578,-197.8476 2422.9832,-198.5022 2431.6579,-204.5849 2433.5578,-197.8476"/>
 </g>
 <!-- Node28 -->
 <g id="node29" class="node">
@@ -380,1097 +380,1113 @@
 </g>
 </g>
 <!-- Node4&#45;&gt;Node28 -->
-<g id="edge121" class="edge">
+<g id="edge123" class="edge">
 <title>Node4&#45;&gt;Node28</title>
-<path fill="none" stroke="#191970" d="M1079.6806,-548.3931C1061.4128,-539.8055 1034.6945,-526.3864 1013,-512 958.111,-475.6011 900.1162,-424.5925 868.6689,-395.7218"/>
-<polygon fill="#191970" stroke="#191970" points="870.9843,-393.0959 861.2639,-388.8812 866.2344,-398.2377 870.9843,-393.0959"/>
+<path fill="none" stroke="#191970" d="M998.7762,-548.3686C969.2891,-532.718 912.7708,-499.1269 879,-456 865.7122,-439.0309 856.8254,-416.1397 851.4805,-398.775"/>
+<polygon fill="#191970" stroke="#191970" points="854.7328,-397.4208 848.6026,-388.7796 848.0061,-399.3576 854.7328,-397.4208"/>
 </g>
-<!-- Node43 -->
+<!-- Node44 -->
 <g id="node43" class="node">
-<title>Node43</title>
+<title>Node44</title>
 <g id="a_node43"><a xlink:href="repr__printer_8h.html" target="_top" xlink:title="Printer class to print repr string of each AST/IR nodes. ">
-<polygon fill="#ffffff" stroke="#000000" points="1699.5,-492.5 1699.5,-511.5 1830.5,-511.5 1830.5,-492.5 1699.5,-492.5"/>
-<text text-anchor="middle" x="1765" y="-499.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/repr_printer.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1835.5,-492.5 1835.5,-511.5 1966.5,-511.5 1966.5,-492.5 1835.5,-492.5"/>
+<text text-anchor="middle" x="1901" y="-499.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/repr_printer.h</text>
 </a>
 </g>
 </g>
-<!-- Node4&#45;&gt;Node43 -->
-<g id="edge117" class="edge">
-<title>Node4&#45;&gt;Node43</title>
-<path fill="none" stroke="#191970" d="M1150.5844,-552.74C1166.0826,-551.1498 1183.2465,-549.4438 1199,-548 1374.2373,-531.9401 1580.2648,-515.913 1688.9572,-507.6802"/>
-<polygon fill="#191970" stroke="#191970" points="1689.4601,-511.1523 1699.1677,-506.9081 1688.9322,-504.1722 1689.4601,-511.1523"/>
+<!-- Node4&#45;&gt;Node44 -->
+<g id="edge119" class="edge">
+<title>Node4&#45;&gt;Node44</title>
+<path fill="none" stroke="#191970" d="M1067.6845,-554.849C1214.7286,-545.5234 1648.4639,-518.0159 1824.977,-506.8214"/>
+<polygon fill="#191970" stroke="#191970" points="1825.4567,-510.2981 1835.2151,-506.1721 1825.0136,-503.3121 1825.4567,-510.2981"/>
 </g>
 <!-- Node5&#45;&gt;Node6 -->
 <g id="edge6" class="edge">
 <title>Node5&#45;&gt;Node6</title>
-<path fill="none" stroke="#191970" d="M1087.7686,-492.2434C1076.7298,-483.241 1060.2396,-469.2952 1047,-456 1027.9782,-436.8984 1008.1087,-413.467 994.2431,-396.4629"/>
-<polygon fill="#191970" stroke="#191970" points="996.9581,-394.254 987.9487,-388.6789 991.515,-398.6555 996.9581,-394.254"/>
+<path fill="none" stroke="#191970" d="M1103.6166,-493.7219C1158.835,-485.3869 1235.6586,-471.5618 1262,-456 1286.1884,-441.7102 1306.2282,-416.1932 1318.7799,-397.3089"/>
+<polygon fill="#191970" stroke="#191970" points="1321.8799,-398.9582 1324.3255,-388.6495 1315.9851,-395.1831 1321.8799,-398.9582"/>
 </g>
 <!-- Node5&#45;&gt;Node9 -->
-<g id="edge88" class="edge">
+<g id="edge86" class="edge">
 <title>Node5&#45;&gt;Node9</title>
-<path fill="none" stroke="#191970" d="M1099.0046,-492.4202C1096.4375,-469.0945 1088.8083,-407.6238 1075,-358 1070.3979,-341.4611 1064.1654,-338.8729 1061,-322 1058.4596,-308.4585 1053.0957,-302.2849 1061,-291 1127.4414,-196.1416 1485.6753,-153.0575 1639.1457,-138.7523"/>
-<polygon fill="#191970" stroke="#191970" points="1639.7561,-142.2111 1649.3942,-137.8115 1639.1161,-135.2404 1639.7561,-142.2111"/>
+<path fill="none" stroke="#191970" d="M1032.7647,-492.2903C995.3808,-456.301 869.8397,-330.5601 898,-291 910.6479,-273.2319 1204.4702,-179.8172 1313.6424,-145.5864"/>
+<polygon fill="#191970" stroke="#191970" points="1314.8161,-148.8865 1323.3129,-142.5576 1312.7239,-142.2065 1314.8161,-148.8865"/>
 </g>
 <!-- Node5&#45;&gt;Node10 -->
 <g id="edge50" class="edge">
 <title>Node5&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M1096.8414,-492.1742C1093.8972,-482.891 1089.4541,-468.5561 1086,-456 1048.1386,-318.3685 1034.2257,-284.304 1014,-143 1011.8158,-127.7402 1010.5746,-110.5057 1009.8753,-96.7813"/>
-<polygon fill="#191970" stroke="#191970" points="1013.3648,-96.4661 1009.423,-86.6319 1006.3718,-96.7778 1013.3648,-96.4661"/>
+<path fill="none" stroke="#191970" d="M982.3796,-498.3396C934.9761,-493.4898 868.53,-482.2144 816,-456 735.7157,-415.9351 701.7905,-403.8366 665,-322 621.714,-225.7149 752.2746,-131.9395 818.7115,-91.8368"/>
+<polygon fill="#191970" stroke="#191970" points="820.8229,-94.6536 827.6357,-86.5396 817.2499,-88.6342 820.8229,-94.6536"/>
 </g>
 <!-- Node5&#45;&gt;Node15 -->
-<g id="edge114" class="edge">
+<g id="edge116" class="edge">
 <title>Node5&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M1039.2548,-499.837C962.0827,-495.9477 825.3045,-485.2203 712,-456 559.1168,-416.5726 481.431,-445.4469 383,-322 327.7867,-252.7543 333.9946,-137.8513 339.215,-91.6507"/>
-<polygon fill="#191970" stroke="#191970" points="342.7221,-91.8101 340.483,-81.4546 335.7756,-90.9462 342.7221,-91.8101"/>
+<path fill="none" stroke="#191970" d="M982.3887,-498.7534C922.4312,-494.0863 828.7681,-482.8423 752,-456 572.5746,-393.2631 380,-435.0773 380,-245 380,-245 380,-245 380,-189 380,-154.6399 380,-114.628 380,-91.2764"/>
+<polygon fill="#191970" stroke="#191970" points="383.5001,-91.2489 380,-81.2489 376.5001,-91.249 383.5001,-91.2489"/>
 </g>
 <!-- Node5&#45;&gt;Node16 -->
-<g id="edge115" class="edge">
+<g id="edge117" class="edge">
 <title>Node5&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1039.4679,-496.2265C963.5835,-488.4103 838.2095,-473.4197 795,-456 699.4985,-417.4991 653.278,-413.4749 606,-322 550.8706,-215.334 728.4823,-120.0536 803.8426,-85.3848"/>
-<polygon fill="#191970" stroke="#191970" points="805.6761,-88.3968 813.3445,-81.0861 802.7908,-82.0191 805.6761,-88.3968"/>
+<path fill="none" stroke="#191970" d="M1103.7339,-500.8317C1296.452,-496.8858 1892.7491,-482.779 2084,-456 2269.9734,-429.96 2309.8123,-389.1403 2495,-358 2574.722,-344.5943 2785.72,-360.1374 2857,-322 2897.335,-300.4193 2919.4483,-280.135 2912,-235 2903.1242,-181.2146 2896.4268,-165.2664 2862,-123 2851.1171,-109.6389 2836.4802,-96.998 2824.3877,-87.5837"/>
+<polygon fill="#191970" stroke="#191970" points="2826.2099,-84.5737 2816.1223,-81.3348 2821.9884,-90.1575 2826.2099,-84.5737"/>
 </g>
 <!-- Node5&#45;&gt;Node19 -->
-<g id="edge116" class="edge">
+<g id="edge118" class="edge">
 <title>Node5&#45;&gt;Node19</title>
-<path fill="none" stroke="#191970" d="M1116.7373,-492.2988C1128.7584,-484.2823 1144.023,-471.6887 1151,-456 1168.6985,-416.2024 1174.6494,-394.5758 1151,-358 1129.8297,-325.2583 1092.1703,-354.7417 1071,-322 1063.5191,-310.4301 1061.6871,-301.1537 1071,-291 1100.8289,-258.4783 1409.0625,-263.1927 1486.3474,-254.2933"/>
-<polygon fill="#191970" stroke="#191970" points="1486.9769,-257.7383 1496.3548,-252.8082 1485.9493,-250.8141 1486.9769,-257.7383"/>
+<path fill="none" stroke="#191970" d="M1060.3805,-492.4144C1093.8385,-473.7514 1169.1776,-430.7016 1229,-389 1247.1643,-376.3378 1249.0388,-369.4343 1268,-358 1302.0842,-337.4461 1320.4116,-348.6218 1350,-322 1367.7248,-306.0523 1380.1063,-281.2223 1387.123,-264.0919"/>
+<polygon fill="#191970" stroke="#191970" points="1390.4629,-265.1586 1390.7984,-254.569 1383.9324,-262.638 1390.4629,-265.1586"/>
 </g>
 <!-- Node5&#45;&gt;Node24 -->
 <g id="edge52" class="edge">
 <title>Node5&#45;&gt;Node24</title>
-<path fill="none" stroke="#191970" d="M1160.5929,-497.644C1238.7959,-491.414 1378.8569,-478.1907 1497,-456 1612.5886,-434.2891 1641.6798,-426.9462 1753,-389 1825.1958,-364.3903 1850.9827,-369.0723 1911,-322 1948.9789,-292.2127 1940.543,-267.7487 1976,-235 1989.36,-222.6605 2006.4664,-211.6792 2020.761,-203.543"/>
-<polygon fill="#191970" stroke="#191970" points="2022.616,-206.517 2029.681,-198.6216 2019.2344,-200.3879 2022.616,-206.517"/>
+<path fill="none" stroke="#191970" d="M1103.7446,-500.1448C1220.9814,-496.0456 1486.4391,-484.2421 1708,-456 1869.0077,-435.4766 1907.5128,-419.1419 2067,-389 2139.0313,-375.3866 2156.6148,-369.5848 2229,-358 2290.7284,-348.1208 2466.7211,-368.9474 2508,-322 2532.436,-294.2084 2477.3387,-236.1872 2476,-235 2458.6876,-219.6466 2435.5033,-208.8979 2414.968,-201.6745"/>
+<polygon fill="#191970" stroke="#191970" points="2416.0382,-198.342 2405.4446,-198.5036 2413.8268,-204.9835 2416.0382,-198.342"/>
 </g>
 <!-- Node27 -->
 <g id="node28" class="node">
 <title>Node27</title>
 <g id="a_node28"><a xlink:href="data__type_8h.html" target="_top" xlink:title="tvm/runtime/data_type.h">
-<polygon fill="#ffffff" stroke="#000000" points="615,-297 615,-316 753,-316 753,-297 615,-297"/>
-<text text-anchor="middle" x="684" y="-304" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/data_type.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="674,-297 674,-316 812,-316 812,-297 674,-297"/>
+<text text-anchor="middle" x="743" y="-304" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/data_type.h</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node27 -->
 <g id="edge51" class="edge">
 <title>Node5&#45;&gt;Node27</title>
-<path fill="none" stroke="#191970" d="M1039.2431,-496.2485C961.712,-486.1901 826.7917,-459.2627 736,-389 714.5351,-372.3885 699.5618,-344.2294 691.3673,-325.4996"/>
-<polygon fill="#191970" stroke="#191970" points="694.5746,-324.0967 687.514,-316.1974 688.1075,-326.7756 694.5746,-324.0967"/>
+<path fill="none" stroke="#191970" d="M983.887,-492.4748C923.6311,-479.6085 831.8649,-450.7372 780,-389 764.2059,-370.1996 753.899,-343.5728 748.2704,-325.703"/>
+<polygon fill="#191970" stroke="#191970" points="751.6191,-324.6845 745.4269,-316.0876 744.9065,-326.6696 751.6191,-324.6845"/>
 </g>
 <!-- Node5&#45;&gt;Node28 -->
 <g id="edge45" class="edge">
 <title>Node5&#45;&gt;Node28</title>
-<path fill="none" stroke="#191970" d="M1080.8336,-492.3416C1039.2265,-471.3749 939.9154,-421.3299 884.3511,-393.3299"/>
-<polygon fill="#191970" stroke="#191970" points="885.6719,-390.0762 875.1666,-388.7016 882.5218,-396.3274 885.6719,-390.0762"/>
+<path fill="none" stroke="#191970" d="M1000.4102,-492.4489C974.4496,-485.2569 941.4805,-473.5762 916,-456 893.1414,-440.2323 873.1304,-415.3819 860.23,-397.0721"/>
+<polygon fill="#191970" stroke="#191970" points="863.0222,-394.9547 854.487,-388.6775 857.2448,-398.9072 863.0222,-394.9547"/>
 </g>
 <!-- Node30 -->
 <g id="node31" class="node">
 <title>Node30</title>
 <g id="a_node31"><a xlink:href="ndarray_8h.html" target="_top" xlink:title="A device&#45;independent managed NDArray abstraction. ">
-<polygon fill="#ffffff" stroke="#000000" points="1585.5,-364 1585.5,-383 1710.5,-383 1710.5,-364 1585.5,-364"/>
-<text text-anchor="middle" x="1648" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/ndarray.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1094.5,-364 1094.5,-383 1219.5,-383 1219.5,-364 1094.5,-364"/>
+<text text-anchor="middle" x="1157" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/ndarray.h</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node30 -->
 <g id="edge53" class="edge">
 <title>Node5&#45;&gt;Node30</title>
-<path fill="none" stroke="#191970" d="M1160.5403,-497.9374C1248.9068,-491.3947 1408.5137,-477.0855 1462,-456 1483.9181,-447.3594 1484.159,-435.987 1505,-425 1536.5294,-408.3782 1574.5976,-394.9594 1603.5268,-385.991"/>
-<polygon fill="#191970" stroke="#191970" points="1604.8015,-389.2618 1613.3526,-383.0064 1602.767,-382.564 1604.8015,-389.2618"/>
+<path fill="none" stroke="#191970" d="M1051.5685,-492.3416C1070.7147,-470.7602 1117.1927,-418.3706 1141.5409,-390.9254"/>
+<polygon fill="#191970" stroke="#191970" points="1144.3138,-393.0738 1148.332,-383.2705 1139.0774,-388.4282 1144.3138,-393.0738"/>
 </g>
 <!-- Node39 -->
-<g id="node39" class="node">
+<g id="node38" class="node">
 <title>Node39</title>
-<g id="a_node39"><a xlink:href="packed__func_8h.html" target="_top" xlink:title="Type&#45;erased function used across TVM API. ">
-<polygon fill="#ffffff" stroke="#000000" points="1337,-425.5 1337,-455.5 1453,-455.5 1453,-425.5 1337,-425.5"/>
-<text text-anchor="start" x="1345" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/packed</text>
-<text text-anchor="middle" x="1395" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_func.h</text>
+<g id="a_node38"><a xlink:href="packed__func_8h.html" target="_top" xlink:title="Type&#45;erased function used across TVM API. ">
+<polygon fill="#ffffff" stroke="#000000" points="1583,-425.5 1583,-455.5 1699,-455.5 1699,-425.5 1583,-425.5"/>
+<text text-anchor="start" x="1591" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/packed</text>
+<text text-anchor="middle" x="1641" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_func.h</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node39 -->
-<g id="edge89" class="edge">
+<g id="edge87" class="edge">
 <title>Node5&#45;&gt;Node39</title>
-<path fill="none" stroke="#191970" d="M1145.7701,-492.4581C1194.2185,-482.3578 1271.2169,-466.3056 1326.8155,-454.7147"/>
-<polygon fill="#191970" stroke="#191970" points="1327.861,-458.0721 1336.9362,-452.6048 1326.4323,-451.2194 1327.861,-458.0721"/>
+<path fill="none" stroke="#191970" d="M1103.6303,-495.7646C1215.8655,-484.222 1455.2583,-459.6022 1572.8913,-447.5045"/>
+<polygon fill="#191970" stroke="#191970" points="1573.2709,-450.984 1582.8603,-446.4792 1572.5547,-444.0207 1573.2709,-450.984"/>
 </g>
 <!-- Node7 -->
 <g id="node8" class="node">
 <title>Node7</title>
 <g id="a_node8"><a xlink:href="functor_8h.html" target="_top" xlink:title="Defines the Functor data structures. ">
-<polygon fill="#ffffff" stroke="#000000" points="1683.5,-297 1683.5,-316 1792.5,-316 1792.5,-297 1683.5,-297"/>
-<text text-anchor="middle" x="1738" y="-304" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/functor.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="1848.5,-297 1848.5,-316 1957.5,-316 1957.5,-297 1848.5,-297"/>
+<text text-anchor="middle" x="1903" y="-304" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/node/functor.h</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node7 -->
 <g id="edge7" class="edge">
 <title>Node6&#45;&gt;Node7</title>
-<path fill="none" stroke="#191970" d="M1032.6365,-370.4767C1146.9496,-364.0666 1413.3467,-347.5697 1636,-322 1648.0253,-320.619 1660.8096,-318.887 1673.1141,-317.0856"/>
-<polygon fill="#191970" stroke="#191970" points="1673.9369,-320.5016 1683.3099,-315.5622 1672.9024,-313.5784 1673.9369,-320.5016"/>
+<path fill="none" stroke="#191970" d="M1389.7269,-367.3208C1509.9089,-354.2207 1780.8645,-324.6366 1801,-322 1813.0019,-320.4284 1825.7751,-318.6064 1838.076,-316.7758"/>
+<polygon fill="#191970" stroke="#191970" points="1838.9028,-320.1909 1848.2705,-315.2413 1837.8609,-313.2688 1838.9028,-320.1909"/>
 </g>
 <!-- Node6&#45;&gt;Node15 -->
 <g id="edge44" class="edge">
 <title>Node6&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M930.7008,-358.4999C904.5178,-349.2082 871.2678,-336.3332 843,-322 835.0003,-317.9438 714.8304,-239.3741 707,-235 607.041,-179.1616 580.0265,-168.5978 475,-123 440.9638,-108.223 401.2014,-93.0991 374.0796,-83.0978"/>
-<polygon fill="#191970" stroke="#191970" points="374.9357,-79.684 364.3421,-79.527 372.5257,-86.256 374.9357,-79.684"/>
+<path fill="none" stroke="#191970" d="M1303.802,-358.4006C1268.8315,-340.7035 1208.1752,-311.2292 1154,-291 873.1922,-186.1455 519.2637,-102.8377 412.1429,-78.6371"/>
+<polygon fill="#191970" stroke="#191970" points="412.7988,-75.1973 402.2745,-76.4175 411.2627,-82.0267 412.7988,-75.1973"/>
 </g>
 <!-- Node20 -->
 <g id="node21" class="node">
 <title>Node20</title>
 <g id="a_node21"><a xlink:href="array_8h.html" target="_top" xlink:title="Runtime Array container types. ">
-<polygon fill="#ffffff" stroke="#000000" points="2115,-291.5 2115,-321.5 2241,-321.5 2241,-291.5 2115,-291.5"/>
-<text text-anchor="start" x="2123" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/container</text>
-<text text-anchor="middle" x="2178" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/array.h</text>
+<polygon fill="#ffffff" stroke="#000000" points="2196,-291.5 2196,-321.5 2322,-321.5 2322,-291.5 2196,-291.5"/>
+<text text-anchor="start" x="2204" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm/runtime/container</text>
+<text text-anchor="middle" x="2259" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/array.h</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node20 -->
 <g id="edge22" class="edge">
 <title>Node6&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M1032.7639,-370.336C1229.7374,-359.3566 1883.7587,-322.9011 2104.5005,-310.5969"/>
-<polygon fill="#191970" stroke="#191970" points="2104.8913,-314.0806 2114.681,-310.0294 2104.5017,-307.0915 2104.8913,-314.0806"/>
+<path fill="none" stroke="#191970" d="M1389.6454,-366.6039C1415.8843,-363.604 1447.4971,-360.2645 1476,-358 1788.0228,-333.2109 1871.5326,-362.781 2185.5722,-322.0423"/>
+<polygon fill="#191970" stroke="#191970" points="2186.4246,-325.4606 2195.8847,-320.6902 2185.5145,-318.52 2186.4246,-325.4606"/>
 </g>
 <!-- Node6&#45;&gt;Node27 -->
 <g id="edge39" class="edge">
 <title>Node6&#45;&gt;Node27</title>
-<path fill="none" stroke="#191970" d="M919.4801,-360.2005C916.2733,-359.454 913.0961,-358.7163 910,-358 850.4049,-344.2121 781.9029,-328.6411 736.0818,-318.2654"/>
-<polygon fill="#191970" stroke="#191970" points="736.6143,-314.7975 726.0883,-316.0035 735.0689,-321.6248 736.6143,-314.7975"/>
+<path fill="none" stroke="#191970" d="M1276.3858,-364.6174C1261.0285,-362.3294 1244.3922,-359.9617 1229,-358 1152.4307,-348.2417 939.2046,-326.3398 822.2522,-314.4853"/>
+<polygon fill="#191970" stroke="#191970" points="822.5791,-311.0006 812.2773,-313.4749 821.8736,-317.965 822.5791,-311.0006"/>
 </g>
 <!-- Node8 -->
 <g id="node9" class="node">
 <title>Node8</title>
-<polygon fill="#ffffff" stroke="#bfbfbf" points="2208.5,-179.5 2208.5,-198.5 2297.5,-198.5 2297.5,-179.5 2208.5,-179.5"/>
-<text text-anchor="middle" x="2253" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dmlc/logging.h</text>
+<polygon fill="#ffffff" stroke="#bfbfbf" points="1902.5,-179.5 1902.5,-198.5 1991.5,-198.5 1991.5,-179.5 1902.5,-179.5"/>
+<text text-anchor="middle" x="1947" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dmlc/logging.h</text>
 </g>
 <!-- Node7&#45;&gt;Node8 -->
 <g id="edge8" class="edge">
 <title>Node7&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M1792.6328,-301.9251C1860.7636,-295.3896 1980.4049,-281.1706 2080,-255 2131.6428,-241.4298 2189.1018,-217.6837 2223.0881,-202.6798"/>
-<polygon fill="#191970" stroke="#191970" points="2224.7307,-205.7796 2232.4383,-198.5104 2221.8798,-199.3865 2224.7307,-205.7796"/>
+<path fill="none" stroke="#191970" d="M1869.5095,-296.9869C1834.2675,-285.2341 1786.5255,-263.2788 1807,-235 1817.4125,-220.6186 1857.6887,-208.3097 1892.3847,-200.0534"/>
+<polygon fill="#191970" stroke="#191970" points="1893.5048,-203.387 1902.4622,-197.7288 1891.9313,-196.5661 1893.5048,-203.387"/>
 </g>
 <!-- Node7&#45;&gt;Node9 -->
 <g id="edge9" class="edge">
 <title>Node7&#45;&gt;Node9</title>
-<path fill="none" stroke="#191970" d="M1730.0967,-296.9163C1715.9165,-279.0264 1686.6415,-238.7507 1676,-199 1673.7013,-190.4135 1673.2786,-187.4621 1676,-179 1679.3946,-168.4445 1686.2058,-158.2592 1692.7631,-150.1676"/>
-<polygon fill="#191970" stroke="#191970" points="1695.447,-152.4149 1699.3508,-142.5654 1690.1569,-147.8307 1695.447,-152.4149"/>
+<path fill="none" stroke="#191970" d="M1848.2813,-297.6567C1798.5857,-288.9782 1723.5601,-274.2521 1660,-255 1646.1837,-250.8151 1463.7677,-177.3227 1387.3326,-146.4666"/>
+<polygon fill="#191970" stroke="#191970" points="1388.2861,-143.0771 1377.703,-142.5784 1385.6653,-149.568 1388.2861,-143.0771"/>
 </g>
 <!-- Node7&#45;&gt;Node16 -->
 <g id="edge19" class="edge">
 <title>Node7&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M1716.4307,-296.9863C1682.2794,-282.1931 1613.4281,-253.4612 1553,-235 1303.1614,-158.6726 994.6589,-99.9088 880.8725,-79.3927"/>
-<polygon fill="#191970" stroke="#191970" points="881.2538,-75.9053 870.7928,-77.5837 880.0172,-82.7952 881.2538,-75.9053"/>
+<path fill="none" stroke="#191970" d="M1957.5284,-297.2819C2059.3643,-279.8341 2285.237,-240.0392 2474,-199 2510.2347,-191.1222 2518.7895,-186.9884 2555,-179 2636.7977,-160.9546 2667.4879,-184.9343 2740,-143 2762.1145,-130.211 2780.2371,-106.5816 2791.059,-89.9976"/>
+<polygon fill="#191970" stroke="#191970" points="2794.2354,-91.5188 2796.5622,-81.1826 2788.2975,-87.8118 2794.2354,-91.5188"/>
 </g>
 <!-- Node7&#45;&gt;Node17 -->
 <g id="edge20" class="edge">
 <title>Node7&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M1786.0284,-296.9388C1860.1004,-281.3451 2005.9061,-247.2606 2123,-199 2187.0179,-172.6148 2193.019,-143.9994 2259,-123 2343.0907,-96.237 2613.2572,-78.7088 2707.3325,-73.2887"/>
-<polygon fill="#191970" stroke="#191970" points="2707.6188,-76.7782 2717.404,-72.7161 2707.2214,-69.7894 2707.6188,-76.7782"/>
+<path fill="none" stroke="#191970" d="M1862.1361,-296.9062C1826.3938,-286.2496 1782.4346,-266.2992 1798,-235 1834.7314,-161.1397 1870.7611,-156.818 1946,-123 2022.0377,-88.823 2120.7961,-77.2016 2171.2265,-73.3459"/>
+<polygon fill="#191970" stroke="#191970" points="2171.5017,-76.8353 2181.2287,-72.6357 2171.0058,-69.8528 2171.5017,-76.8353"/>
 </g>
 <!-- Node7&#45;&gt;Node19 -->
 <g id="edge21" class="edge">
 <title>Node7&#45;&gt;Node19</title>
-<path fill="none" stroke="#191970" d="M1703.9375,-296.8906C1662.8704,-285.3052 1594.2966,-265.9598 1553.488,-254.4473"/>
-<polygon fill="#191970" stroke="#191970" points="1554.3195,-251.0453 1543.7448,-251.6987 1552.4188,-257.7824 1554.3195,-251.0453"/>
+<path fill="none" stroke="#191970" d="M1848.2665,-297.7884C1832.9846,-295.4634 1816.3594,-293.0342 1801,-291 1662.873,-272.7062 1497.7564,-255.4682 1427.8848,-248.3868"/>
+<polygon fill="#191970" stroke="#191970" points="1428.1949,-244.9004 1417.8938,-247.3778 1427.4915,-251.865 1428.1949,-244.9004"/>
 </g>
 <!-- Node9&#45;&gt;Node10 -->
 <g id="edge10" class="edge">
 <title>Node9&#45;&gt;Node10</title>
... 410255 lines suppressed ...