You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by tq...@apache.org on 2020/06/17 21:21:04 UTC

[incubator-tvm-site] branch asf-site updated: Docs build at Wed Jun 17 14:20:48 PDT 2020

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

tqchen pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-tvm-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 1f8a6ea  Docs build at Wed Jun 17 14:20:48 PDT 2020
1f8a6ea is described below

commit 1f8a6ea146bf5c5c3878709a110b62e8b3eb43b2
Author: tqchen <tq...@octoml.ai>
AuthorDate: Wed Jun 17 14:20:48 2020 -0700

    Docs build at Wed Jun 17 14:20:48 PDT 2020
---
 .../from_tflite.py                                 |    4 +-
 .../from_tflite.ipynb                              |    2 +-
 .../opt_matmul_auto_tensorcore.py                  |    7 +-
 .../deploy_prequantized_tflite.ipynb               |    4 +-
 .../tune_relay_cuda.py                             |    2 +-
 .../relay_pass_infra.ipynb                         |    8 +-
 .../tune_relay_mobile_gpu.ipynb                    |    2 +-
 .../from_keras.ipynb                               |    2 +-
 .../from_coreml.ipynb                              |    2 +-
 .../from_caffe2.ipynb                              |    2 +-
 .../deploy_model_on_android.ipynb                  |    2 +-
 .../deploy_model_on_android.py                     |    2 +-
 .../relay_quick_start.py                           |    2 +-
 .../tune_relay_vta.ipynb                           |    4 +-
 .../from_tensorflow.py                             |    2 +-
 .../relay_pass_infra.py                            |   10 +-
 .../deploy_prequantized_tflite.py                  |    3 +-
 .../tune_relay_vta.py                              |   26 +-
 .../tensorize.ipynb                                |    4 +-
 .../deploy_detection.ipynb                         |    2 +-
 .../696dd37904ef92773435ca321ff41bfb/from_onnx.py  |    2 +-
 .../from_pytorch.ipynb                             |    2 +-
 .../70d345c5409f99cb5de9dc44f147ff6f/build_gcn.py  |    2 +-
 .../from_caffe2.py                                 |    4 +-
 .../tune_relay_cuda.ipynb                          |    2 +-
 .../deploy_prequantized.ipynb                      |    2 +-
 .../deploy_ssd_gluoncv.ipynb                       |    2 +-
 .../from_darknet.ipynb                             |    2 +-
 .../deploy_model_on_rasp.py                        |    2 +-
 .../tune_relay_x86.py                              |    2 +-
 .../opt_matmul_auto_tensorcore.ipynb               |    2 +-
 .../deploy_prequantized.py                         |    2 +-
 .../opt_conv_tensorcore.ipynb                      |    2 +-
 .../low_level_custom_pass.py                       |   13 +-
 .../relay_quick_start.ipynb                        |    2 +-
 .../from_darknet.py                                |    2 +-
 .../tune_relay_x86.ipynb                           |    2 +-
 .../baa4de13ce6d932de43e0eb5c4cb8f16/tensorize.py  |    6 +-
 .../tune_relay_arm.py                              |    2 +-
 .../deploy_model_on_rasp.ipynb                     |    2 +-
 .../build_gcn.ipynb                                |    2 +-
 .../deploy_classification.ipynb                    |    2 +-
 .../deploy_ssd_gluoncv.py                          |    2 +-
 .../from_tensorflow.ipynb                          |    2 +-
 .../opt_conv_tensorcore.py                         |    4 +-
 .../tune_relay_mobile_gpu.py                       |    2 +-
 .../from_coreml.py                                 |    2 +-
 .../low_level_custom_pass.ipynb                    |   10 +-
 .../from_onnx.ipynb                                |    2 +-
 .../ea0c81cab71096d16b825a33fd276c58/from_mxnet.py |    2 +-
 .../deploy_detection.py                            |    2 +-
 .../deploy_classification.py                       |   16 +-
 .../from_mxnet.ipynb                               |    2 +-
 .../f59fd8b968f7dcde34ed872c8527c192/from_keras.py |    2 +-
 .../from_pytorch.py                                |    2 +-
 .../tune_relay_arm.ipynb                           |    2 +-
 docs/_sources/api/python/index.rst.txt             |    2 +
 docs/_sources/api/python/micro.rst.txt             |   23 +
 .../api/python/relay/dataflow_pattern.rst.txt      |   25 +
 docs/_sources/api/python/topi.rst.txt              |   10 +
 docs/_sources/dev/codebase_walkthrough.rst.txt     |    2 +-
 docs/_sources/dev/convert_layout.rst.txt           |    2 +-
 docs/_sources/dev/relay_add_op.rst.txt             |    2 +-
 docs/_sources/dev/relay_add_pass.rst.txt           |    4 +-
 docs/_sources/dev/relay_pass_infra.rst.txt         |   12 +-
 docs/_sources/langref/relay_op.rst.txt             |    7 +-
 docs/_sources/langref/relay_pattern.rst.txt        |  294 +-
 .../tutorials/autotvm/sg_execution_times.rst.txt   |   16 +-
 .../tutorials/autotvm/tune_conv2d_cuda.rst.txt     |   42 +-
 .../tutorials/autotvm/tune_relay_arm.rst.txt       |    2 +-
 .../tutorials/autotvm/tune_relay_cuda.rst.txt      |    2 +-
 .../autotvm/tune_relay_mobile_gpu.rst.txt          |    2 +-
 .../tutorials/autotvm/tune_relay_x86.rst.txt       |    2 +-
 .../tutorials/autotvm/tune_simple_template.rst.txt |   20 +-
 .../tutorials/cross_compilation_and_rpc.rst.txt    |    2 +-
 .../tutorials/dev/low_level_custom_pass.rst.txt    |   19 +-
 .../tutorials/dev/relay_pass_infra.rst.txt         |   10 +-
 .../tutorials/dev/sg_execution_times.rst.txt       |    6 +-
 docs/_sources/tutorials/frontend/build_gcn.rst.txt |    2 +-
 .../frontend/deploy_model_on_android.rst.txt       |    4 +-
 .../frontend/deploy_model_on_rasp.rst.txt          |    2 +-
 .../tutorials/frontend/deploy_prequantized.rst.txt |    4 +-
 .../frontend/deploy_prequantized_tflite.rst.txt    |    7 +-
 .../tutorials/frontend/deploy_ssd_gluoncv.rst.txt  |    2 +-
 .../tutorials/frontend/from_caffe2.rst.txt         |    4 +-
 .../tutorials/frontend/from_coreml.rst.txt         |    2 +-
 .../tutorials/frontend/from_darknet.rst.txt        |    2 +-
 .../_sources/tutorials/frontend/from_keras.rst.txt |    2 +-
 .../_sources/tutorials/frontend/from_mxnet.rst.txt |    2 +-
 docs/_sources/tutorials/frontend/from_onnx.rst.txt |    6 +-
 .../tutorials/frontend/from_pytorch.rst.txt        |    2 +-
 .../tutorials/frontend/from_tensorflow.rst.txt     |    6 +-
 .../tutorials/frontend/from_tflite.rst.txt         |    4 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |   36 +-
 docs/_sources/tutorials/index.rst.txt              |    2 +-
 docs/_sources/tutorials/language/reduction.rst.txt |   16 +-
 docs/_sources/tutorials/language/scan.rst.txt      |   22 +-
 .../tutorials/language/schedule_primitives.rst.txt |   34 +-
 .../tutorials/language/sg_execution_times.rst.txt  |   18 +-
 docs/_sources/tutorials/language/tensorize.rst.txt |   26 +-
 .../tutorials/language/tuple_inputs.rst.txt        |   32 +-
 .../tutorials/optimize/opt_conv_cuda.rst.txt       |    2 +-
 .../tutorials/optimize/opt_conv_tensorcore.rst.txt |   26 +-
 docs/_sources/tutorials/optimize/opt_gemm.rst.txt  |   30 +-
 .../optimize/opt_matmul_auto_tensorcore.rst.txt    |    7 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |   10 +-
 docs/_sources/tutorials/relay_quick_start.rst.txt  |    4 +-
 docs/_sources/tutorials/sg_execution_times.rst.txt |    8 +-
 docs/_sources/tutorials/topi/intro_topi.rst.txt    |  218 +-
 .../tutorials/topi/sg_execution_times.rst.txt      |    4 +-
 .../tutorials/autotvm/sg_execution_times.rst.txt   |    4 +-
 .../vta/tutorials/autotvm/tune_relay_vta.rst.txt   |   40 +-
 .../frontend/deploy_classification.rst.txt         |   20 +-
 .../tutorials/frontend/deploy_detection.rst.txt    |    4 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |    6 +-
 .../_sources/vta/tutorials/matrix_multiply.rst.txt |   44 +-
 .../vta/tutorials/optimize/convolution_opt.rst.txt |  102 +-
 .../tutorials/optimize/matrix_multiply_opt.rst.txt |   84 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |    6 +-
 .../vta/tutorials/sg_execution_times.rst.txt       |    6 +-
 .../_sources/vta/tutorials/vta_get_started.rst.txt |   28 +-
 docs/api/doxygen/algorithm_8h.html                 |    3 +-
 docs/api/doxygen/algorithm_8h__incl.svg            | 2124 +++++----
 docs/api/doxygen/algorithm_8h_source.html          |   27 +-
 docs/api/doxygen/analyzer_8h_source.html           |   12 +-
 docs/api/doxygen/annotated.html                    |  742 +--
 docs/api/doxygen/annotation_8h_source.html         |    2 +-
 docs/api/doxygen/array__utils_8h_source.html       |    2 +-
 docs/api/doxygen/attr__registry__map_8h.html       |    2 +-
 .../doxygen/attr__registry__map_8h__dep__incl.svg  |  298 +-
 .../api/doxygen/attr__registry__map_8h_source.html |    3 +-
 docs/api/doxygen/autodiff_8h_source.html           |    5 +-
 docs/api/doxygen/base_8h.html                      |    2 +-
 docs/api/doxygen/base_8h__dep__incl.svg            |  393 +-
 docs/api/doxygen/base_8h_source.html               |    7 +-
 docs/api/doxygen/batch__matmul_8h_source.html      |   13 +-
 docs/api/doxygen/bias__add_8h_source.html          |    5 +-
 docs/api/doxygen/bitserial_8h_source.html          |    4 +-
 docs/api/doxygen/bound_8h.html                     |    9 +-
 docs/api/doxygen/bound_8h_source.html              |   15 +-
 docs/api/doxygen/broadcast_8h.html                 |   13 +-
 docs/api/doxygen/broadcast_8h_source.html          |    7 +-
 docs/api/doxygen/buffer_8h.html                    |   16 +-
 docs/api/doxygen/buffer_8h_source.html             |   76 +-
 docs/api/doxygen/c__backend__api_8h_source.html    |    4 +-
 docs/api/doxygen/c__runtime__api_8h.html           |  208 +-
 docs/api/doxygen/c__runtime__api_8h__dep__incl.svg |    2 +-
 docs/api/doxygen/c__runtime__api_8h_source.html    |   83 +-
 docs/api/doxygen/classes.html                      |  272 +-
 .../classtvm_1_1AttrFieldInfoNode-members.html     |    6 +-
 .../api/doxygen/classtvm_1_1AttrFieldInfoNode.html |   32 +-
 .../classtvm_1_1AttrFieldInfoNode__coll__graph.svg |  131 +-
 docs/api/doxygen/classtvm_1_1BaseAttrsNode.html    |   10 +-
 docs/api/doxygen/classtvm_1_1BaseExpr.html         |    2 +-
 docs/api/doxygen/classtvm_1_1BaseExprNode.html     |    2 +-
 .../classtvm_1_1BaseExprNode__inherit__graph.svg   | 1478 +++---
 .../classtvm_1_1BaseExpr__inherit__graph.svg       | 1171 +++--
 .../classtvm_1_1BaseFuncNode__coll__graph.svg      |   23 +-
 .../doxygen/classtvm_1_1BaseTensorTypeNode.html    |    2 +-
 ...classtvm_1_1BaseTensorTypeNode__coll__graph.svg |   59 +-
 .../doxygen/classtvm_1_1BuildConfig-members.html   |  113 -
 docs/api/doxygen/classtvm_1_1BuildConfig.html      |  342 --
 .../classtvm_1_1BuildConfigNode-members.html       |  124 -
 docs/api/doxygen/classtvm_1_1BuildConfigNode.html  |  489 --
 .../classtvm_1_1BuildConfigNode__coll__graph.svg   |   48 -
 ...classtvm_1_1BuildConfigNode__inherit__graph.svg |   48 -
 .../classtvm_1_1BuildConfig__coll__graph.svg       |   41 -
 .../classtvm_1_1BuildConfig__inherit__graph.svg    |   41 -
 docs/api/doxygen/classtvm_1_1Constructor.html      |    4 +-
 .../classtvm_1_1ConstructorNode-members.html       |    2 +-
 docs/api/doxygen/classtvm_1_1ConstructorNode.html  |   12 +-
 .../classtvm_1_1ConstructorNode__coll__graph.svg   |  298 +-
 .../api/doxygen/classtvm_1_1DictAttrs-members.html |    2 +-
 docs/api/doxygen/classtvm_1_1DictAttrs.html        |   10 +-
 .../doxygen/classtvm_1_1DictAttrsNode-members.html |    2 +-
 docs/api/doxygen/classtvm_1_1DictAttrsNode.html    |   12 +-
 .../classtvm_1_1DictAttrsNode__coll__graph.svg     |   83 +-
 docs/api/doxygen/classtvm_1_1EnvFunc.html          |    4 +-
 .../doxygen/classtvm_1_1EnvFuncNode-members.html   |    2 +-
 docs/api/doxygen/classtvm_1_1EnvFuncNode.html      |   12 +-
 .../classtvm_1_1EnvFuncNode__coll__graph.svg       |  181 +-
 docs/api/doxygen/classtvm_1_1Error.html            |    2 +-
 .../api/doxygen/classtvm_1_1Error__coll__graph.svg |   57 +-
 docs/api/doxygen/classtvm_1_1FuncTypeNode.html     |    2 +-
 .../classtvm_1_1FuncTypeNode__coll__graph.svg      |   61 +-
 docs/api/doxygen/classtvm_1_1GlobalTypeVar.html    |    4 +-
 .../api/doxygen/classtvm_1_1GlobalTypeVarNode.html |    6 +-
 .../classtvm_1_1GlobalTypeVarNode__coll__graph.svg |  208 +-
 docs/api/doxygen/classtvm_1_1GlobalVar.html        |    4 +-
 docs/api/doxygen/classtvm_1_1GlobalVarNode.html    |    6 +-
 .../classtvm_1_1GlobalVarNode__coll__graph.svg     |  252 +-
 docs/api/doxygen/classtvm_1_1IRModule.html         |   10 +-
 docs/api/doxygen/classtvm_1_1IRModuleNode.html     |   42 +-
 .../doxygen/classtvm_1_1IncompleteTypeNode.html    |    2 +-
 ...classtvm_1_1IncompleteTypeNode__coll__graph.svg |   59 +-
 docs/api/doxygen/classtvm_1_1Map.html              |   46 +-
 docs/api/doxygen/classtvm_1_1MapNode.html          |    4 +-
 docs/api/doxygen/classtvm_1_1Op-members.html       |    2 +-
 docs/api/doxygen/classtvm_1_1Op.html               |   20 +-
 docs/api/doxygen/classtvm_1_1OpNode-members.html   |    6 +-
 docs/api/doxygen/classtvm_1_1OpNode.html           |   36 +-
 .../doxygen/classtvm_1_1OpNode__coll__graph.svg    |  306 +-
 docs/api/doxygen/classtvm_1_1OpRegEntry.html       |    4 +-
 docs/api/doxygen/classtvm_1_1PointerTypeNode.html  |    2 +-
 .../classtvm_1_1PointerTypeNode__coll__graph.svg   |   61 +-
 docs/api/doxygen/classtvm_1_1PrimExpr.html         |    2 +-
 docs/api/doxygen/classtvm_1_1PrimExprNode.html     |    2 +-
 .../classtvm_1_1PrimExprNode__inherit__graph.svg   | 1184 +++--
 .../classtvm_1_1PrimExpr__inherit__graph.svg       |  718 ++-
 docs/api/doxygen/classtvm_1_1PrimTypeNode.html     |    2 +-
 .../classtvm_1_1PrimTypeNode__coll__graph.svg      |   59 +-
 .../classtvm_1_1ReflectionVTable-members.html      |    4 +-
 docs/api/doxygen/classtvm_1_1ReflectionVTable.html |   20 +-
 .../classtvm_1_1RelayExprNode__coll__graph.svg     |   23 +-
 docs/api/doxygen/classtvm_1_1RelayRefTypeNode.html |    2 +-
 .../classtvm_1_1RelayRefTypeNode__coll__graph.svg  |   61 +-
 docs/api/doxygen/classtvm_1_1SEqualReducer.html    |    4 +-
 docs/api/doxygen/classtvm_1_1SourceName.html       |    4 +-
 docs/api/doxygen/classtvm_1_1SourceNameNode.html   |    6 +-
 .../classtvm_1_1SourceNameNode__coll__graph.svg    |  123 +-
 docs/api/doxygen/classtvm_1_1Span-members.html     |    3 +-
 docs/api/doxygen/classtvm_1_1Span.html             |   39 +-
 docs/api/doxygen/classtvm_1_1SpanNode-members.html |    9 +-
 docs/api/doxygen/classtvm_1_1SpanNode.html         |   50 +-
 .../doxygen/classtvm_1_1SpanNode__coll__graph.svg  |   83 +-
 .../classtvm_1_1SpanNode__inherit__graph.svg       |   47 +-
 docs/api/doxygen/classtvm_1_1Span__coll__graph.svg |   35 +-
 .../doxygen/classtvm_1_1Span__inherit__graph.svg   |   35 +-
 .../doxygen/classtvm_1_1StrMapNode-members.html    |  109 -
 docs/api/doxygen/classtvm_1_1StrMapNode.html       |  230 -
 .../classtvm_1_1StrMapNode__coll__graph.svg        |   37 -
 .../classtvm_1_1StrMapNode__inherit__graph.svg     |   37 -
 docs/api/doxygen/classtvm_1_1StructuralEqual.html  |    2 +-
 docs/api/doxygen/classtvm_1_1TargetNode.html       |    2 +-
 .../classtvm_1_1TargetNode__coll__graph.svg        |   53 +-
 docs/api/doxygen/classtvm_1_1TensorTypeNode.html   |    2 +-
 .../classtvm_1_1TensorTypeNode__coll__graph.svg    |   59 +-
 docs/api/doxygen/classtvm_1_1TupleTypeNode.html    |    2 +-
 .../classtvm_1_1TupleTypeNode__coll__graph.svg     |   59 +-
 docs/api/doxygen/classtvm_1_1TypeCallNode.html     |    2 +-
 .../classtvm_1_1TypeCallNode__coll__graph.svg      |   61 +-
 .../doxygen/classtvm_1_1TypeConstraintNode.html    |    2 +-
 ...classtvm_1_1TypeConstraintNode__coll__graph.svg |   59 +-
 docs/api/doxygen/classtvm_1_1TypeDataNode.html     |    2 +-
 .../classtvm_1_1TypeDataNode__coll__graph.svg      |   81 +-
 docs/api/doxygen/classtvm_1_1TypeNode.html         |    2 +-
 .../doxygen/classtvm_1_1TypeNode__coll__graph.svg  |   59 +-
 docs/api/doxygen/classtvm_1_1TypeRelationNode.html |    2 +-
 .../classtvm_1_1TypeRelationNode__coll__graph.svg  |   61 +-
 docs/api/doxygen/classtvm_1_1TypeVar.html          |    4 +-
 docs/api/doxygen/classtvm_1_1TypeVarNode.html      |    6 +-
 .../classtvm_1_1TypeVarNode__coll__graph.svg       |  208 +-
 ..._1_1arith_1_1ConstIntBoundAnalyzer-members.html |    2 +-
 ...classtvm_1_1arith_1_1ConstIntBoundAnalyzer.html |   12 +-
 .../classtvm_1_1relay_1_1CallNode__coll__graph.svg |   23 +-
 ...sstvm_1_1relay_1_1ConstantNode__coll__graph.svg |   23 +-
 ...asstvm_1_1relay_1_1ConstantPattern-members.html |  107 +
 .../classtvm_1_1relay_1_1ConstantPattern.html      |  164 +
 ...vm_1_1relay_1_1ConstantPatternNode-members.html |  109 +
 .../classtvm_1_1relay_1_1ConstantPatternNode.html  |  219 +
 ..._1relay_1_1ConstantPatternNode__coll__graph.svg |   54 +
 ...elay_1_1ConstantPatternNode__inherit__graph.svg |   54 +
 ...vm_1_1relay_1_1ConstantPattern__coll__graph.svg |   55 +
 ...1_1relay_1_1ConstantPattern__inherit__graph.svg |   55 +
 .../doxygen/classtvm_1_1relay_1_1DFPattern.html    |    2 +-
 ...Pattern_01_6n_00_01Args_8_8_8_08_4-members.html |   13 +-
 ...nst_01DFPattern_01_6n_00_01Args_8_8_8_08_4.html |  116 +-
 ...ern_01_6n_00_01Args_8_8_8_08_4__coll__graph.svg |   31 +-
 .../classtvm_1_1relay_1_1DFPatternNode.html        |    2 +-
 ...m_1_1relay_1_1DFPatternNode__inherit__graph.svg |  228 +-
 ...sstvm_1_1relay_1_1DFPatternVisitor-members.html |   15 +-
 .../classtvm_1_1relay_1_1DFPatternVisitor.html     |   82 +-
 ...m_1_1relay_1_1DFPatternVisitor__coll__graph.svg |   41 +-
 ..._1relay_1_1DFPatternVisitor__inherit__graph.svg |   41 +-
 ...sstvm_1_1relay_1_1DFPattern__inherit__graph.svg |  234 +-
 ...asstvm_1_1relay_1_1DataTypePattern-members.html |  108 +
 .../classtvm_1_1relay_1_1DataTypePattern.html      |  198 +
 ...vm_1_1relay_1_1DataTypePatternNode-members.html |  111 +
 .../classtvm_1_1relay_1_1DataTypePatternNode.html  |  257 +
 ..._1relay_1_1DataTypePatternNode__coll__graph.svg |  122 +
 ...elay_1_1DataTypePatternNode__inherit__graph.svg |   56 +
 ...vm_1_1relay_1_1DataTypePattern__coll__graph.svg |   56 +
 ...1_1relay_1_1DataTypePattern__inherit__graph.svg |   56 +
 .../classtvm_1_1relay_1_1ExprMutator-members.html  |    2 +-
 .../doxygen/classtvm_1_1relay_1_1ExprMutator.html  |   10 +-
 ...sstvm_1_1relay_1_1FunctionNode__coll__graph.svg |   23 +-
 docs/api/doxygen/classtvm_1_1relay_1_1Id.html      |    4 +-
 docs/api/doxygen/classtvm_1_1relay_1_1IdNode.html  |    6 +-
 .../classtvm_1_1relay_1_1IdNode__coll__graph.svg   |  123 +-
 .../classtvm_1_1relay_1_1IfNode__coll__graph.svg   |   23 +-
 .../classtvm_1_1relay_1_1LetNode__coll__graph.svg  |   23 +-
 ...classtvm_1_1relay_1_1MatchNode__coll__graph.svg |   23 +-
 ...sstvm_1_1relay_1_1MixedModeMutator-members.html |    2 +-
 .../classtvm_1_1relay_1_1MixedModeMutator.html     |    6 +-
 ...m_1_1relay_1_1OpImplementationNode-members.html |    2 +-
 .../classtvm_1_1relay_1_1OpImplementationNode.html |   12 +-
 ...1relay_1_1OpImplementationNode__coll__graph.svg |  189 +-
 .../classtvm_1_1relay_1_1OpSpecialization.html     |    4 +-
 .../doxygen/classtvm_1_1relay_1_1OpStrategy.html   |    4 +-
 ...lasstvm_1_1relay_1_1PatternConstructorNode.html |    2 +-
 ...elay_1_1PatternConstructorNode__coll__graph.svg |   81 +-
 .../doxygen/classtvm_1_1relay_1_1PatternNode.html  |    2 +-
 ...asstvm_1_1relay_1_1PatternNode__coll__graph.svg |   57 +-
 .../classtvm_1_1relay_1_1PatternTupleNode.html     |    2 +-
 ...m_1_1relay_1_1PatternTupleNode__coll__graph.svg |   57 +-
 .../classtvm_1_1relay_1_1PatternVarNode.html       |    2 +-
 ...tvm_1_1relay_1_1PatternVarNode__coll__graph.svg |   81 +-
 .../classtvm_1_1relay_1_1PatternWildcardNode.html  |    2 +-
 ..._1relay_1_1PatternWildcardNode__coll__graph.svg |   57 +-
 ...stvm_1_1relay_1_1RefCreateNode__coll__graph.svg |   23 +-
 ...asstvm_1_1relay_1_1RefReadNode__coll__graph.svg |   23 +-
 ...sstvm_1_1relay_1_1RefWriteNode__coll__graph.svg |   23 +-
 .../doxygen/classtvm_1_1relay_1_1RelayNode.html    |    2 +-
 ...classtvm_1_1relay_1_1RelayNode__coll__graph.svg |   57 +-
 .../classtvm_1_1relay_1_1ShapePattern-members.html |  108 +
 .../doxygen/classtvm_1_1relay_1_1ShapePattern.html |  198 +
 ...sstvm_1_1relay_1_1ShapePatternNode-members.html |  111 +
 .../classtvm_1_1relay_1_1ShapePatternNode.html     |  257 +
 ...m_1_1relay_1_1ShapePatternNode__coll__graph.svg |  102 +
 ..._1relay_1_1ShapePatternNode__inherit__graph.svg |   56 +
 ...sstvm_1_1relay_1_1ShapePattern__coll__graph.svg |   56 +
 ...vm_1_1relay_1_1ShapePattern__inherit__graph.svg |   56 +
 ...sstvm_1_1relay_1_1TempExprNode__coll__graph.svg |   23 +-
 ...m_1_1relay_1_1TupleGetItemNode__coll__graph.svg |   23 +-
 ...classtvm_1_1relay_1_1TupleNode__coll__graph.svg |   23 +-
 docs/api/doxygen/classtvm_1_1relay_1_1Var.html     |    4 +-
 docs/api/doxygen/classtvm_1_1relay_1_1VarNode.html |    8 +-
 .../classtvm_1_1relay_1_1VarNode__coll__graph.svg  |   21 +-
 .../doxygen/classtvm_1_1relay_1_1VarPattern.html   |    4 +-
 .../classtvm_1_1relay_1_1VarPatternNode.html       |   10 +-
 ...tvm_1_1relay_1_1VarPatternNode__coll__graph.svg |  207 +-
 docs/api/doxygen/classtvm_1_1runtime_1_1Array.html |    9 +-
 .../classtvm_1_1runtime_1_1DataType-members.html   |   29 +-
 .../doxygen/classtvm_1_1runtime_1_1DataType.html   |   11 +-
 .../classtvm_1_1runtime_1_1InplaceArrayBase.html   |    4 +-
 .../doxygen/classtvm_1_1runtime_1_1NDArray.html    |    8 +-
 .../classtvm_1_1runtime_1_1ObjectPtr-members.html  |   16 +-
 .../doxygen/classtvm_1_1runtime_1_1ObjectPtr.html  |   16 +-
 .../classtvm_1_1runtime_1_1ObjectRef-members.html  |    2 +-
 .../doxygen/classtvm_1_1runtime_1_1ObjectRef.html  |   10 +-
 ...tvm_1_1runtime_1_1ObjectRef__inherit__graph.svg |  110 +-
 .../classtvm_1_1runtime_1_1String-members.html     |   63 +-
 .../api/doxygen/classtvm_1_1runtime_1_1String.html |  351 +-
 .../classtvm_1_1runtime_1_1String__coll__graph.svg |  134 +-
 ...asstvm_1_1runtime_1_1String__inherit__graph.svg |   96 +-
 ...lasstvm_1_1te_1_1BaseComputeOpNode-members.html |   37 +-
 .../classtvm_1_1te_1_1BaseComputeOpNode.html       |   35 +-
 ...tvm_1_1te_1_1BaseComputeOpNode__coll__graph.svg |  196 +-
 ..._1_1te_1_1BaseComputeOpNode__inherit__graph.svg |  205 +-
 .../classtvm_1_1te_1_1ComputeOp-members.html       |  112 +
 docs/api/doxygen/classtvm_1_1te_1_1ComputeOp.html  |  233 +
 .../classtvm_1_1te_1_1ComputeOpNode-members.html   |   14 +-
 .../doxygen/classtvm_1_1te_1_1ComputeOpNode.html   |   89 +-
 ...lasstvm_1_1te_1_1ComputeOpNode__coll__graph.svg |  257 +-
 ...stvm_1_1te_1_1ComputeOpNode__inherit__graph.svg |  140 +-
 .../classtvm_1_1te_1_1ComputeOp__coll__graph.svg   |   58 +
 ...classtvm_1_1te_1_1ComputeOp__inherit__graph.svg |   58 +
 .../classtvm_1_1te_1_1ExternOp-members.html        |  112 +
 docs/api/doxygen/classtvm_1_1te_1_1ExternOp.html   |  245 +
 .../classtvm_1_1te_1_1ExternOpNode-members.html    |   18 +-
 .../doxygen/classtvm_1_1te_1_1ExternOpNode.html    |  101 +-
 ...classtvm_1_1te_1_1ExternOpNode__coll__graph.svg |  277 +-
 ...sstvm_1_1te_1_1ExternOpNode__inherit__graph.svg |  122 +-
 .../classtvm_1_1te_1_1ExternOp__coll__graph.svg    |   58 +
 .../classtvm_1_1te_1_1ExternOp__inherit__graph.svg |   58 +
 .../doxygen/classtvm_1_1te_1_1Fuse-members.html    |  110 +
 docs/api/doxygen/classtvm_1_1te_1_1Fuse.html       |  210 +
 .../classtvm_1_1te_1_1FuseNode-members.html        |    9 +-
 docs/api/doxygen/classtvm_1_1te_1_1FuseNode.html   |   54 +-
 .../classtvm_1_1te_1_1FuseNode__coll__graph.svg    |   97 +-
 .../classtvm_1_1te_1_1FuseNode__inherit__graph.svg |   61 +-
 .../classtvm_1_1te_1_1Fuse__coll__graph.svg        |   57 +
 .../classtvm_1_1te_1_1Fuse__inherit__graph.svg     |   57 +
 .../classtvm_1_1te_1_1HybridOp-members.html        |  112 +
 docs/api/doxygen/classtvm_1_1te_1_1HybridOp.html   |  239 +
 .../classtvm_1_1te_1_1HybridOpNode-members.html    |   18 +-
 .../doxygen/classtvm_1_1te_1_1HybridOpNode.html    |   95 +-
 ...classtvm_1_1te_1_1HybridOpNode__coll__graph.svg |  277 +-
 ...sstvm_1_1te_1_1HybridOpNode__inherit__graph.svg |  122 +-
 .../classtvm_1_1te_1_1HybridOp__coll__graph.svg    |   58 +
 .../classtvm_1_1te_1_1HybridOp__inherit__graph.svg |   58 +
 .../doxygen/classtvm_1_1te_1_1IterVarAttrNode.html |    2 +-
 ...sstvm_1_1te_1_1IterVarAttrNode__coll__graph.svg |  138 +-
 .../doxygen/classtvm_1_1te_1_1IterVarRelation.html |    6 +-
 .../classtvm_1_1te_1_1IterVarRelationNode.html     |    2 +-
 ..._1te_1_1IterVarRelationNode__inherit__graph.svg |  134 +-
 ...vm_1_1te_1_1IterVarRelation__inherit__graph.svg |  116 +-
 .../classtvm_1_1te_1_1Operation-members.html       |    1 -
 docs/api/doxygen/classtvm_1_1te_1_1Operation.html  |    7 +-
 .../classtvm_1_1te_1_1OperationNode-members.html   |   31 +-
 .../doxygen/classtvm_1_1te_1_1OperationNode.html   |  113 +-
 ...lasstvm_1_1te_1_1OperationNode__coll__graph.svg |  142 +-
 ...stvm_1_1te_1_1OperationNode__inherit__graph.svg |  447 +-
 .../classtvm_1_1te_1_1Operation__coll__graph.svg   |   60 +-
 ...classtvm_1_1te_1_1Operation__inherit__graph.svg |  174 +-
 .../classtvm_1_1te_1_1PlaceholderOp-members.html   |  112 +
 .../doxygen/classtvm_1_1te_1_1PlaceholderOp.html   |  221 +
 ...lasstvm_1_1te_1_1PlaceholderOpNode-members.html |   16 +-
 .../classtvm_1_1te_1_1PlaceholderOpNode.html       |   77 +-
 ...tvm_1_1te_1_1PlaceholderOpNode__coll__graph.svg |  267 +-
 ..._1_1te_1_1PlaceholderOpNode__inherit__graph.svg |  116 +-
 ...lasstvm_1_1te_1_1PlaceholderOp__coll__graph.svg |   58 +
 ...stvm_1_1te_1_1PlaceholderOp__inherit__graph.svg |   58 +
 .../doxygen/classtvm_1_1te_1_1Rebase-members.html  |  110 +
 docs/api/doxygen/classtvm_1_1te_1_1Rebase.html     |  204 +
 .../classtvm_1_1te_1_1RebaseNode-members.html      |   11 +-
 docs/api/doxygen/classtvm_1_1te_1_1RebaseNode.html |   48 +-
 .../classtvm_1_1te_1_1RebaseNode__coll__graph.svg  |   95 +-
 ...lasstvm_1_1te_1_1RebaseNode__inherit__graph.svg |   59 +-
 .../classtvm_1_1te_1_1Rebase__coll__graph.svg      |   57 +
 .../classtvm_1_1te_1_1Rebase__inherit__graph.svg   |   57 +
 .../doxygen/classtvm_1_1te_1_1ScanOp-members.html  |  112 +
 docs/api/doxygen/classtvm_1_1te_1_1ScanOp.html     |  251 +
 .../classtvm_1_1te_1_1ScanOpNode-members.html      |   18 +-
 docs/api/doxygen/classtvm_1_1te_1_1ScanOpNode.html |  107 +-
 .../classtvm_1_1te_1_1ScanOpNode__coll__graph.svg  |  277 +-
 ...lasstvm_1_1te_1_1ScanOpNode__inherit__graph.svg |  126 +-
 .../classtvm_1_1te_1_1ScanOp__coll__graph.svg      |   58 +
 .../classtvm_1_1te_1_1ScanOp__inherit__graph.svg   |   58 +
 .../classtvm_1_1te_1_1Schedule-members.html        |    1 +
 docs/api/doxygen/classtvm_1_1te_1_1Schedule.html   |   40 +-
 .../classtvm_1_1te_1_1ScheduleNode-members.html    |   13 +-
 .../doxygen/classtvm_1_1te_1_1ScheduleNode.html    |   44 +-
 ...classtvm_1_1te_1_1ScheduleNode__coll__graph.svg |  129 +-
 ...sstvm_1_1te_1_1ScheduleNode__inherit__graph.svg |   55 +-
 .../classtvm_1_1te_1_1Schedule__coll__graph.svg    |   35 +-
 .../classtvm_1_1te_1_1Schedule__inherit__graph.svg |   35 +-
 .../classtvm_1_1te_1_1Singleton-members.html       |  110 +
 docs/api/doxygen/classtvm_1_1te_1_1Singleton.html  |  202 +
 .../classtvm_1_1te_1_1SingletonNode-members.html   |    7 +-
 .../doxygen/classtvm_1_1te_1_1SingletonNode.html   |   38 +-
 ...lasstvm_1_1te_1_1SingletonNode__coll__graph.svg |   93 +-
 ...stvm_1_1te_1_1SingletonNode__inherit__graph.svg |   57 +-
 .../classtvm_1_1te_1_1Singleton__coll__graph.svg   |   57 +
 ...classtvm_1_1te_1_1Singleton__inherit__graph.svg |   57 +
 .../doxygen/classtvm_1_1te_1_1Split-members.html   |  110 +
 docs/api/doxygen/classtvm_1_1te_1_1Split.html      |  222 +
 .../classtvm_1_1te_1_1SplitNode-members.html       |   13 +-
 docs/api/doxygen/classtvm_1_1te_1_1SplitNode.html  |   66 +-
 .../classtvm_1_1te_1_1SplitNode__coll__graph.svg   |  147 +-
 ...classtvm_1_1te_1_1SplitNode__inherit__graph.svg |   65 +-
 .../classtvm_1_1te_1_1Split__coll__graph.svg       |   57 +
 .../classtvm_1_1te_1_1Split__inherit__graph.svg    |   57 +
 docs/api/doxygen/classtvm_1_1te_1_1Stage.html      |   16 +-
 docs/api/doxygen/classtvm_1_1te_1_1StageNode.html  |    2 +-
 .../classtvm_1_1te_1_1StageNode__coll__graph.svg   |  216 +-
 .../doxygen/classtvm_1_1te_1_1Tensor-members.html  |   17 +-
 docs/api/doxygen/classtvm_1_1te_1_1Tensor.html     |  156 +-
 .../classtvm_1_1te_1_1TensorComputeOp-members.html |  112 +
 .../doxygen/classtvm_1_1te_1_1TensorComputeOp.html |  257 +
 ...sstvm_1_1te_1_1TensorComputeOpNode-members.html |   20 +-
 .../classtvm_1_1te_1_1TensorComputeOpNode.html     |  117 +-
 ...m_1_1te_1_1TensorComputeOpNode__coll__graph.svg |  335 +-
 ..._1te_1_1TensorComputeOpNode__inherit__graph.svg |  148 +-
 ...sstvm_1_1te_1_1TensorComputeOp__coll__graph.svg |   58 +
 ...vm_1_1te_1_1TensorComputeOp__inherit__graph.svg |   58 +
 .../classtvm_1_1te_1_1TensorIntrin-members.html    |    6 +-
 .../doxygen/classtvm_1_1te_1_1TensorIntrin.html    |  157 +-
 ...classtvm_1_1te_1_1TensorIntrinCall-members.html |    6 +-
 .../classtvm_1_1te_1_1TensorIntrinCall.html        |  139 +-
 ...stvm_1_1te_1_1TensorIntrinCallNode-members.html |   13 +-
 .../classtvm_1_1te_1_1TensorIntrinCallNode.html    |   62 +-
 ..._1_1te_1_1TensorIntrinCallNode__coll__graph.svg |  149 +-
 ...1te_1_1TensorIntrinCallNode__inherit__graph.svg |   49 +-
 ...stvm_1_1te_1_1TensorIntrinCall__coll__graph.svg |   36 +-
 ...m_1_1te_1_1TensorIntrinCall__inherit__graph.svg |   36 +-
 ...classtvm_1_1te_1_1TensorIntrinNode-members.html |   17 +-
 .../classtvm_1_1te_1_1TensorIntrinNode.html        |   84 +-
 ...stvm_1_1te_1_1TensorIntrinNode__coll__graph.svg |  201 +-
 ...m_1_1te_1_1TensorIntrinNode__inherit__graph.svg |   57 +-
 ...classtvm_1_1te_1_1TensorIntrin__coll__graph.svg |   36 +-
 ...sstvm_1_1te_1_1TensorIntrin__inherit__graph.svg |   36 +-
 .../classtvm_1_1te_1_1TensorNode-members.html      |   18 +-
 docs/api/doxygen/classtvm_1_1te_1_1TensorNode.html |  130 +-
 .../classtvm_1_1te_1_1TensorNode__coll__graph.svg  |  201 +-
 ...lasstvm_1_1te_1_1TensorNode__inherit__graph.svg |   79 +-
 .../classtvm_1_1te_1_1Tensor__coll__graph.svg      |   68 +-
 .../classtvm_1_1te_1_1Tensor__inherit__graph.svg   |   68 +-
 .../doxygen/classtvm_1_1tir_1_1Add-members.html    |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Add.html       |  210 +
 .../classtvm_1_1tir_1_1AddNode-members.html        |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1AddNode.html   |   11 +-
 .../classtvm_1_1tir_1_1AddNode__coll__graph.svg    |  203 +-
 .../classtvm_1_1tir_1_1AddNode__inherit__graph.svg |   99 +-
 .../classtvm_1_1tir_1_1Add__coll__graph.svg        |   77 +
 .../classtvm_1_1tir_1_1Add__inherit__graph.svg     |   77 +
 .../classtvm_1_1tir_1_1Allocate-members.html       |  108 +
 docs/api/doxygen/classtvm_1_1tir_1_1Allocate.html  |  217 +
 .../classtvm_1_1tir_1_1AllocateNode-members.html   |   11 +-
 .../doxygen/classtvm_1_1tir_1_1AllocateNode.html   |   68 +-
 ...lasstvm_1_1tir_1_1AllocateNode__coll__graph.svg |  249 +-
 ...stvm_1_1tir_1_1AllocateNode__inherit__graph.svg |   81 +-
 .../classtvm_1_1tir_1_1Allocate__coll__graph.svg   |   56 +
 ...classtvm_1_1tir_1_1Allocate__inherit__graph.svg |   56 +
 .../doxygen/classtvm_1_1tir_1_1And-members.html    |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1And.html       |  210 +
 .../classtvm_1_1tir_1_1AndNode-members.html        |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1AndNode.html   |   48 +-
 .../classtvm_1_1tir_1_1AndNode__coll__graph.svg    |  195 +-
 .../classtvm_1_1tir_1_1AndNode__inherit__graph.svg |   93 +-
 .../classtvm_1_1tir_1_1And__coll__graph.svg        |   77 +
 .../classtvm_1_1tir_1_1And__inherit__graph.svg     |   77 +
 .../doxygen/classtvm_1_1tir_1_1Any-members.html    |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Any.html       |  199 +
 .../classtvm_1_1tir_1_1AnyNode-members.html        |   15 +-
 docs/api/doxygen/classtvm_1_1tir_1_1AnyNode.html   |   41 +-
 .../classtvm_1_1tir_1_1AnyNode__coll__graph.svg    |  137 +-
 .../classtvm_1_1tir_1_1AnyNode__inherit__graph.svg |   91 +-
 .../classtvm_1_1tir_1_1Any__coll__graph.svg        |   77 +
 .../classtvm_1_1tir_1_1Any__inherit__graph.svg     |   77 +
 .../classtvm_1_1tir_1_1AssertStmt-members.html     |  108 +
 .../api/doxygen/classtvm_1_1tir_1_1AssertStmt.html |  205 +
 .../classtvm_1_1tir_1_1AssertStmtNode-members.html |   13 +-
 .../doxygen/classtvm_1_1tir_1_1AssertStmtNode.html |   56 +-
 ...sstvm_1_1tir_1_1AssertStmtNode__coll__graph.svg |  153 +-
 ...vm_1_1tir_1_1AssertStmtNode__inherit__graph.svg |   75 +-
 .../classtvm_1_1tir_1_1AssertStmt__coll__graph.svg |   56 +
 ...asstvm_1_1tir_1_1AssertStmt__inherit__graph.svg |   56 +
 .../classtvm_1_1tir_1_1AttrStmt-members.html       |  108 +
 docs/api/doxygen/classtvm_1_1tir_1_1AttrStmt.html  |  211 +
 .../classtvm_1_1tir_1_1AttrStmtNode-members.html   |   17 +-
 .../doxygen/classtvm_1_1tir_1_1AttrStmtNode.html   |   72 +-
 ...lasstvm_1_1tir_1_1AttrStmtNode__coll__graph.svg |  256 +-
 ...stvm_1_1tir_1_1AttrStmtNode__inherit__graph.svg |   77 +-
 .../classtvm_1_1tir_1_1AttrStmt__coll__graph.svg   |   56 +
 ...classtvm_1_1tir_1_1AttrStmt__inherit__graph.svg |   56 +
 ...classtvm_1_1tir_1_1BijectiveLayout-members.html |    9 +-
 .../classtvm_1_1tir_1_1BijectiveLayout.html        |  124 +-
 .../classtvm_1_1tir_1_1BijectiveLayoutNode.html    |    6 +-
 ..._1_1tir_1_1BijectiveLayoutNode__coll__graph.svg |   58 +-
 ...stvm_1_1tir_1_1BijectiveLayout__coll__graph.svg |   47 +-
 ...m_1_1tir_1_1BijectiveLayout__inherit__graph.svg |   47 +-
 .../classtvm_1_1tir_1_1BinaryOpNode-members.html   |   13 +-
 .../doxygen/classtvm_1_1tir_1_1BinaryOpNode.html   |   46 +-
 ...lasstvm_1_1tir_1_1BinaryOpNode__coll__graph.svg |  195 +-
 ...stvm_1_1tir_1_1BinaryOpNode__inherit__graph.svg |   91 +-
 .../classtvm_1_1tir_1_1Broadcast-members.html      |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Broadcast.html |  210 +
 .../classtvm_1_1tir_1_1BroadcastNode-members.html  |   15 +-
 .../doxygen/classtvm_1_1tir_1_1BroadcastNode.html  |   48 +-
 ...asstvm_1_1tir_1_1BroadcastNode__coll__graph.svg |  195 +-
 ...tvm_1_1tir_1_1BroadcastNode__inherit__graph.svg |   93 +-
 .../classtvm_1_1tir_1_1Broadcast__coll__graph.svg  |   77 +
 ...lasstvm_1_1tir_1_1Broadcast__inherit__graph.svg |   77 +
 .../doxygen/classtvm_1_1tir_1_1Buffer-members.html |    6 +-
 docs/api/doxygen/classtvm_1_1tir_1_1Buffer.html    |  164 +-
 .../api/doxygen/classtvm_1_1tir_1_1BufferLoad.html |    8 +-
 .../doxygen/classtvm_1_1tir_1_1BufferLoadNode.html |   10 +-
 ...sstvm_1_1tir_1_1BufferLoadNode__coll__graph.svg |   54 +-
 .../classtvm_1_1tir_1_1BufferNode-members.html     |   19 +-
 .../api/doxygen/classtvm_1_1tir_1_1BufferNode.html |  116 +-
 .../classtvm_1_1tir_1_1BufferNode__coll__graph.svg |  328 +-
 ...asstvm_1_1tir_1_1BufferNode__inherit__graph.svg |   75 +-
 .../classtvm_1_1tir_1_1BufferRealizeNode.html      |   10 +-
 ...vm_1_1tir_1_1BufferRealizeNode__coll__graph.svg |   66 +-
 .../classtvm_1_1tir_1_1BufferStoreNode.html        |   14 +-
 ...stvm_1_1tir_1_1BufferStoreNode__coll__graph.svg |   28 +-
 .../classtvm_1_1tir_1_1Buffer__coll__graph.svg     |   46 +-
 .../classtvm_1_1tir_1_1Buffer__inherit__graph.svg  |   46 +-
 .../doxygen/classtvm_1_1tir_1_1Call-members.html   |  113 +
 docs/api/doxygen/classtvm_1_1tir_1_1Call.html      |  241 +
 .../classtvm_1_1tir_1_1CallNode-members.html       |   30 +-
 docs/api/doxygen/classtvm_1_1tir_1_1CallNode.html  |  131 +-
 .../classtvm_1_1tir_1_1CallNode__coll__graph.svg   |  312 +-
 ...classtvm_1_1tir_1_1CallNode__inherit__graph.svg |  131 +-
 .../classtvm_1_1tir_1_1Call__coll__graph.svg       |   77 +
 .../classtvm_1_1tir_1_1Call__inherit__graph.svg    |   77 +
 .../doxygen/classtvm_1_1tir_1_1Cast-members.html   |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Cast.html      |  210 +
 .../classtvm_1_1tir_1_1CastNode-members.html       |   15 +-
 docs/api/doxygen/classtvm_1_1tir_1_1CastNode.html  |   52 +-
 .../classtvm_1_1tir_1_1CastNode__coll__graph.svg   |  193 +-
 ...classtvm_1_1tir_1_1CastNode__inherit__graph.svg |   91 +-
 .../classtvm_1_1tir_1_1Cast__coll__graph.svg       |   77 +
 .../classtvm_1_1tir_1_1Cast__inherit__graph.svg    |   77 +
 .../classtvm_1_1tir_1_1CmpOpNode-members.html      |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1CmpOpNode.html |   46 +-
 .../classtvm_1_1tir_1_1CmpOpNode__coll__graph.svg  |  195 +-
 ...lasstvm_1_1tir_1_1CmpOpNode__inherit__graph.svg |   91 +-
 .../classtvm_1_1tir_1_1CommReducer-members.html    |    7 +-
 .../doxygen/classtvm_1_1tir_1_1CommReducer.html    |  159 +-
 ...classtvm_1_1tir_1_1CommReducerNode-members.html |   15 +-
 .../classtvm_1_1tir_1_1CommReducerNode.html        |   63 +-
 ...stvm_1_1tir_1_1CommReducerNode__coll__graph.svg |   93 +-
 ...m_1_1tir_1_1CommReducerNode__inherit__graph.svg |   61 +-
 ...classtvm_1_1tir_1_1CommReducer__coll__graph.svg |   39 +-
 ...sstvm_1_1tir_1_1CommReducer__inherit__graph.svg |   39 +-
 .../classtvm_1_1tir_1_1DataProducer-members.html   |  106 +
 .../doxygen/classtvm_1_1tir_1_1DataProducer.html   |  167 +
 ...lasstvm_1_1tir_1_1DataProducerNode-members.html |  115 +
 .../classtvm_1_1tir_1_1DataProducerNode.html       |  418 ++
 ...tvm_1_1tir_1_1DataProducerNode__coll__graph.svg |   46 +
 ..._1_1tir_1_1DataProducerNode__inherit__graph.svg |   72 +
 ...lasstvm_1_1tir_1_1DataProducer__coll__graph.svg |   37 +
 ...stvm_1_1tir_1_1DataProducer__inherit__graph.svg |   63 +
 .../doxygen/classtvm_1_1tir_1_1Div-members.html    |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Div.html       |  210 +
 .../classtvm_1_1tir_1_1DivNode-members.html        |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1DivNode.html   |   13 +-
 .../classtvm_1_1tir_1_1DivNode__coll__graph.svg    |  203 +-
 .../classtvm_1_1tir_1_1DivNode__inherit__graph.svg |   99 +-
 .../classtvm_1_1tir_1_1Div__coll__graph.svg        |   77 +
 .../classtvm_1_1tir_1_1Div__inherit__graph.svg     |   77 +
 .../api/doxygen/classtvm_1_1tir_1_1EQ-members.html |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1EQ.html        |  210 +
 .../doxygen/classtvm_1_1tir_1_1EQNode-members.html |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1EQNode.html    |   11 +-
 .../classtvm_1_1tir_1_1EQNode__coll__graph.svg     |  203 +-
 .../classtvm_1_1tir_1_1EQNode__inherit__graph.svg  |   99 +-
 .../doxygen/classtvm_1_1tir_1_1EQ__coll__graph.svg |   77 +
 .../classtvm_1_1tir_1_1EQ__inherit__graph.svg      |   77 +
 .../classtvm_1_1tir_1_1Evaluate-members.html       |  109 +
 docs/api/doxygen/classtvm_1_1tir_1_1Evaluate.html  |  223 +
 .../classtvm_1_1tir_1_1EvaluateNode-members.html   |   13 +-
 .../doxygen/classtvm_1_1tir_1_1EvaluateNode.html   |   44 +-
 ...lasstvm_1_1tir_1_1EvaluateNode__coll__graph.svg |  127 +-
 ...stvm_1_1tir_1_1EvaluateNode__inherit__graph.svg |   71 +-
 .../classtvm_1_1tir_1_1Evaluate__coll__graph.svg   |   57 +
 ...classtvm_1_1tir_1_1Evaluate__inherit__graph.svg |   57 +
 ...rimExpr_01_6n_00_01Args_8_8_8_08_4-members.html |   65 +-
 ...onst_01PrimExpr_01_6n_00_01Args_8_8_8_08_4.html |   38 +
 ...xpr_01_6n_00_01Args_8_8_8_08_4__coll__graph.svg |    2 +-
 .../classtvm_1_1tir_1_1ExprMutator-members.html    |   59 +-
 .../doxygen/classtvm_1_1tir_1_1ExprMutator.html    |   26 +
 ...classtvm_1_1tir_1_1ExprMutator__coll__graph.svg |    2 +-
 ...sstvm_1_1tir_1_1ExprMutator__inherit__graph.svg |    2 +-
 .../classtvm_1_1tir_1_1ExprVisitor-members.html    |   59 +-
 .../doxygen/classtvm_1_1tir_1_1ExprVisitor.html    |   26 +
 ...classtvm_1_1tir_1_1ExprVisitor__coll__graph.svg |    2 +-
 ...sstvm_1_1tir_1_1ExprVisitor__inherit__graph.svg |    2 +-
 .../classtvm_1_1tir_1_1FloorDiv-members.html       |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1FloorDiv.html  |  210 +
 .../classtvm_1_1tir_1_1FloorDivNode-members.html   |   13 +-
 .../doxygen/classtvm_1_1tir_1_1FloorDivNode.html   |   11 +-
 ...lasstvm_1_1tir_1_1FloorDivNode__coll__graph.svg |  203 +-
 ...stvm_1_1tir_1_1FloorDivNode__inherit__graph.svg |   99 +-
 .../classtvm_1_1tir_1_1FloorDiv__coll__graph.svg   |   77 +
 ...classtvm_1_1tir_1_1FloorDiv__inherit__graph.svg |   77 +
 .../classtvm_1_1tir_1_1FloorMod-members.html       |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1FloorMod.html  |  210 +
 .../classtvm_1_1tir_1_1FloorModNode-members.html   |   13 +-
 .../doxygen/classtvm_1_1tir_1_1FloorModNode.html   |   11 +-
 ...lasstvm_1_1tir_1_1FloorModNode__coll__graph.svg |  203 +-
 ...stvm_1_1tir_1_1FloorModNode__inherit__graph.svg |   99 +-
 .../classtvm_1_1tir_1_1FloorMod__coll__graph.svg   |   77 +
 ...classtvm_1_1tir_1_1FloorMod__inherit__graph.svg |   77 +
 .../doxygen/classtvm_1_1tir_1_1For-members.html    |  108 +
 docs/api/doxygen/classtvm_1_1tir_1_1For.html       |  223 +
 .../classtvm_1_1tir_1_1ForNode-members.html        |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1ForNode.html   |   74 +-
 .../classtvm_1_1tir_1_1ForNode__coll__graph.svg    |  187 +-
 .../classtvm_1_1tir_1_1ForNode__inherit__graph.svg |   81 +-
 .../classtvm_1_1tir_1_1For__coll__graph.svg        |   56 +
 .../classtvm_1_1tir_1_1For__inherit__graph.svg     |   56 +
 .../doxygen/classtvm_1_1tir_1_1Free-members.html   |  108 +
 docs/api/doxygen/classtvm_1_1tir_1_1Free.html      |  189 +
 .../classtvm_1_1tir_1_1FreeNode-members.html       |   11 +-
 docs/api/doxygen/classtvm_1_1tir_1_1FreeNode.html  |   44 +-
 .../classtvm_1_1tir_1_1FreeNode__coll__graph.svg   |  151 +-
 ...classtvm_1_1tir_1_1FreeNode__inherit__graph.svg |   71 +-
 .../classtvm_1_1tir_1_1Free__coll__graph.svg       |   56 +
 .../classtvm_1_1tir_1_1Free__inherit__graph.svg    |   56 +
 ...lasstvm_1_1tir_1_1FunctionBaseNode-members.html |  112 -
 .../classtvm_1_1tir_1_1FunctionBaseNode.html       |  328 --
 ...tvm_1_1tir_1_1FunctionBaseNode__coll__graph.svg |   43 -
 ..._1_1tir_1_1FunctionBaseNode__inherit__graph.svg |  292 --
 .../classtvm_1_1tir_1_1FunctionRef-members.html    |  106 -
 .../doxygen/classtvm_1_1tir_1_1FunctionRef.html    |  166 -
 ...classtvm_1_1tir_1_1FunctionRef__coll__graph.svg |   37 -
 ...sstvm_1_1tir_1_1FunctionRef__inherit__graph.svg |   57 -
 .../api/doxygen/classtvm_1_1tir_1_1GE-members.html |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1GE.html        |  210 +
 .../doxygen/classtvm_1_1tir_1_1GENode-members.html |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1GENode.html    |   11 +-
 .../classtvm_1_1tir_1_1GENode__coll__graph.svg     |  203 +-
 .../classtvm_1_1tir_1_1GENode__inherit__graph.svg  |   99 +-
 .../doxygen/classtvm_1_1tir_1_1GE__coll__graph.svg |   77 +
 .../classtvm_1_1tir_1_1GE__inherit__graph.svg      |   77 +
 .../api/doxygen/classtvm_1_1tir_1_1GT-members.html |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1GT.html        |  210 +
 .../doxygen/classtvm_1_1tir_1_1GTNode-members.html |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1GTNode.html    |   11 +-
 .../classtvm_1_1tir_1_1GTNode__coll__graph.svg     |  203 +-
 .../classtvm_1_1tir_1_1GTNode__inherit__graph.svg  |   99 +-
 .../doxygen/classtvm_1_1tir_1_1GT__coll__graph.svg |   77 +
 .../classtvm_1_1tir_1_1GT__inherit__graph.svg      |   77 +
 .../classtvm_1_1tir_1_1IfThenElse-members.html     |  108 +
 .../api/doxygen/classtvm_1_1tir_1_1IfThenElse.html |  205 +
 .../classtvm_1_1tir_1_1IfThenElseNode-members.html |   13 +-
 .../doxygen/classtvm_1_1tir_1_1IfThenElseNode.html |   60 +-
 ...sstvm_1_1tir_1_1IfThenElseNode__coll__graph.svg |  153 +-
 ...vm_1_1tir_1_1IfThenElseNode__inherit__graph.svg |   75 +-
 .../classtvm_1_1tir_1_1IfThenElse__coll__graph.svg |   56 +
 ...asstvm_1_1tir_1_1IfThenElse__inherit__graph.svg |   56 +
 .../classtvm_1_1tir_1_1IterVar-members.html        |    6 +-
 docs/api/doxygen/classtvm_1_1tir_1_1IterVar.html   |  128 +-
 .../classtvm_1_1tir_1_1IterVarNode-members.html    |   13 +-
 .../doxygen/classtvm_1_1tir_1_1IterVarNode.html    |   74 +-
 ...classtvm_1_1tir_1_1IterVarNode__coll__graph.svg |  266 +-
 ...sstvm_1_1tir_1_1IterVarNode__inherit__graph.svg |   59 +-
 .../classtvm_1_1tir_1_1IterVar__coll__graph.svg    |   38 +-
 .../classtvm_1_1tir_1_1IterVar__inherit__graph.svg |   38 +-
 .../api/doxygen/classtvm_1_1tir_1_1LE-members.html |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1LE.html        |  210 +
 .../doxygen/classtvm_1_1tir_1_1LE__coll__graph.svg |   77 +
 .../classtvm_1_1tir_1_1LE__inherit__graph.svg      |   77 +
 .../api/doxygen/classtvm_1_1tir_1_1LT-members.html |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1LT.html        |  210 +
 .../doxygen/classtvm_1_1tir_1_1LTNode-members.html |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1LTNode.html    |   11 +-
 .../classtvm_1_1tir_1_1LTNode__coll__graph.svg     |  203 +-
 .../classtvm_1_1tir_1_1LTNode__inherit__graph.svg  |   99 +-
 .../doxygen/classtvm_1_1tir_1_1LT__coll__graph.svg |   77 +
 .../classtvm_1_1tir_1_1LT__inherit__graph.svg      |   77 +
 .../doxygen/classtvm_1_1tir_1_1Layout-members.html |   29 +-
 docs/api/doxygen/classtvm_1_1tir_1_1Layout.html    |  153 +-
 .../classtvm_1_1tir_1_1LayoutAxis-members.html     |    4 +-
 .../api/doxygen/classtvm_1_1tir_1_1LayoutAxis.html |   26 +-
 .../classtvm_1_1tir_1_1LayoutAxis__coll__graph.svg |    2 +-
 .../classtvm_1_1tir_1_1LayoutNode-members.html     |    7 +-
 .../api/doxygen/classtvm_1_1tir_1_1LayoutNode.html |   55 +-
 .../classtvm_1_1tir_1_1LayoutNode__coll__graph.svg |  156 +-
 ...asstvm_1_1tir_1_1LayoutNode__inherit__graph.svg |   43 +-
 .../classtvm_1_1tir_1_1Layout__coll__graph.svg     |   48 +-
 .../classtvm_1_1tir_1_1Layout__inherit__graph.svg  |   48 +-
 .../doxygen/classtvm_1_1tir_1_1Let-members.html    |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Let.html       |  216 +
 .../classtvm_1_1tir_1_1LetNode-members.html        |   17 +-
 docs/api/doxygen/classtvm_1_1tir_1_1LetNode.html   |   58 +-
 .../classtvm_1_1tir_1_1LetNode__coll__graph.svg    |  225 +-
 .../classtvm_1_1tir_1_1LetNode__inherit__graph.svg |   95 +-
 .../classtvm_1_1tir_1_1LetStmt-members.html        |  108 +
 docs/api/doxygen/classtvm_1_1tir_1_1LetStmt.html   |  205 +
 .../classtvm_1_1tir_1_1LetStmtNode-members.html    |   15 +-
 .../doxygen/classtvm_1_1tir_1_1LetStmtNode.html    |   60 +-
 ...classtvm_1_1tir_1_1LetStmtNode__coll__graph.svg |  181 +-
 ...sstvm_1_1tir_1_1LetStmtNode__inherit__graph.svg |   75 +-
 .../classtvm_1_1tir_1_1LetStmt__coll__graph.svg    |   56 +
 .../classtvm_1_1tir_1_1LetStmt__inherit__graph.svg |   56 +
 .../classtvm_1_1tir_1_1Let__coll__graph.svg        |   77 +
 .../classtvm_1_1tir_1_1Let__inherit__graph.svg     |   77 +
 .../doxygen/classtvm_1_1tir_1_1Load-members.html   |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Load.html      |  222 +
 .../classtvm_1_1tir_1_1LoadNode-members.html       |   15 +-
 docs/api/doxygen/classtvm_1_1tir_1_1LoadNode.html  |   66 +-
 .../classtvm_1_1tir_1_1LoadNode__coll__graph.svg   |  225 +-
 ...classtvm_1_1tir_1_1LoadNode__inherit__graph.svg |   95 +-
 .../classtvm_1_1tir_1_1Load__coll__graph.svg       |   77 +
 .../classtvm_1_1tir_1_1Load__inherit__graph.svg    |   77 +
 .../doxygen/classtvm_1_1tir_1_1Max-members.html    |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Max.html       |  210 +
 .../classtvm_1_1tir_1_1MaxNode-members.html        |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1MaxNode.html   |   11 +-
 .../classtvm_1_1tir_1_1MaxNode__coll__graph.svg    |  203 +-
 .../classtvm_1_1tir_1_1MaxNode__inherit__graph.svg |   99 +-
 .../classtvm_1_1tir_1_1Max__coll__graph.svg        |   77 +
 .../classtvm_1_1tir_1_1Max__inherit__graph.svg     |   77 +
 .../doxygen/classtvm_1_1tir_1_1Min-members.html    |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Min.html       |  210 +
 .../classtvm_1_1tir_1_1MinNode-members.html        |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1MinNode.html   |   11 +-
 .../classtvm_1_1tir_1_1MinNode__coll__graph.svg    |  203 +-
 .../classtvm_1_1tir_1_1MinNode__inherit__graph.svg |   99 +-
 .../classtvm_1_1tir_1_1Min__coll__graph.svg        |   77 +
 .../classtvm_1_1tir_1_1Min__inherit__graph.svg     |   77 +
 .../doxygen/classtvm_1_1tir_1_1Mod-members.html    |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Mod.html       |  210 +
 .../classtvm_1_1tir_1_1ModNode-members.html        |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1ModNode.html   |   13 +-
 .../classtvm_1_1tir_1_1ModNode__coll__graph.svg    |  203 +-
 .../classtvm_1_1tir_1_1ModNode__inherit__graph.svg |   99 +-
 .../classtvm_1_1tir_1_1Mod__coll__graph.svg        |   77 +
 .../classtvm_1_1tir_1_1Mod__inherit__graph.svg     |   77 +
 .../doxygen/classtvm_1_1tir_1_1Mul-members.html    |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Mul.html       |  210 +
 .../classtvm_1_1tir_1_1MulNode-members.html        |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1MulNode.html   |   11 +-
 .../classtvm_1_1tir_1_1MulNode__coll__graph.svg    |  203 +-
 .../classtvm_1_1tir_1_1MulNode__inherit__graph.svg |   99 +-
 .../classtvm_1_1tir_1_1Mul__coll__graph.svg        |   77 +
 .../classtvm_1_1tir_1_1Mul__inherit__graph.svg     |   77 +
 .../api/doxygen/classtvm_1_1tir_1_1NE-members.html |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1NE.html        |  210 +
 .../doxygen/classtvm_1_1tir_1_1NENode-members.html |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1NENode.html    |   11 +-
 .../classtvm_1_1tir_1_1NENode__coll__graph.svg     |  203 +-
 .../classtvm_1_1tir_1_1NENode__inherit__graph.svg  |   99 +-
 .../doxygen/classtvm_1_1tir_1_1NE__coll__graph.svg |   77 +
 .../classtvm_1_1tir_1_1NE__inherit__graph.svg      |   77 +
 .../doxygen/classtvm_1_1tir_1_1Not-members.html    |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Not.html       |  200 +
 .../classtvm_1_1tir_1_1NotNode-members.html        |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1NotNode.html   |   38 +-
 .../classtvm_1_1tir_1_1NotNode__coll__graph.svg    |  193 +-
 .../classtvm_1_1tir_1_1NotNode__inherit__graph.svg |   91 +-
 .../classtvm_1_1tir_1_1Not__coll__graph.svg        |   77 +
 .../classtvm_1_1tir_1_1Not__inherit__graph.svg     |   77 +
 .../api/doxygen/classtvm_1_1tir_1_1Or-members.html |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Or.html        |  210 +
 .../doxygen/classtvm_1_1tir_1_1OrNode-members.html |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1OrNode.html    |   48 +-
 .../classtvm_1_1tir_1_1OrNode__coll__graph.svg     |  195 +-
 .../classtvm_1_1tir_1_1OrNode__inherit__graph.svg  |   93 +-
 .../doxygen/classtvm_1_1tir_1_1Or__coll__graph.svg |   77 +
 .../classtvm_1_1tir_1_1Or__inherit__graph.svg      |   77 +
 .../doxygen/classtvm_1_1tir_1_1PrefetchNode.html   |    8 +-
 ...lasstvm_1_1tir_1_1PrefetchNode__coll__graph.svg |   54 +-
 ...lasstvm_1_1tir_1_1PrimFuncNode__coll__graph.svg |   23 +-
 .../classtvm_1_1tir_1_1ProducerLoad-members.html   |  112 +
 .../doxygen/classtvm_1_1tir_1_1ProducerLoad.html   |  218 +
 ...lasstvm_1_1tir_1_1ProducerLoadNode-members.html |  118 +
 .../classtvm_1_1tir_1_1ProducerLoadNode.html       |  339 ++
 ...tvm_1_1tir_1_1ProducerLoadNode__coll__graph.svg |  162 +
 ..._1_1tir_1_1ProducerLoadNode__inherit__graph.svg |   82 +
 ...lasstvm_1_1tir_1_1ProducerLoad__coll__graph.svg |   77 +
 ...stvm_1_1tir_1_1ProducerLoad__inherit__graph.svg |   77 +
 ...classtvm_1_1tir_1_1ProducerRealize-members.html |  108 +
 .../classtvm_1_1tir_1_1ProducerRealize.html        |  211 +
 ...stvm_1_1tir_1_1ProducerRealizeNode-members.html |  118 +
 .../classtvm_1_1tir_1_1ProducerRealizeNode.html    |  361 ++
 ..._1_1tir_1_1ProducerRealizeNode__coll__graph.svg |  178 +
 ...1tir_1_1ProducerRealizeNode__inherit__graph.svg |   65 +
 ...stvm_1_1tir_1_1ProducerRealize__coll__graph.svg |   56 +
 ...m_1_1tir_1_1ProducerRealize__inherit__graph.svg |   56 +
 .../classtvm_1_1tir_1_1ProducerStore-members.html  |  108 +
 .../doxygen/classtvm_1_1tir_1_1ProducerStore.html  |  205 +
 ...asstvm_1_1tir_1_1ProducerStoreNode-members.html |  117 +
 .../classtvm_1_1tir_1_1ProducerStoreNode.html      |  344 ++
 ...vm_1_1tir_1_1ProducerStoreNode__coll__graph.svg |  154 +
 ...1_1tir_1_1ProducerStoreNode__inherit__graph.svg |   64 +
 ...asstvm_1_1tir_1_1ProducerStore__coll__graph.svg |   56 +
 ...tvm_1_1tir_1_1ProducerStore__inherit__graph.svg |   56 +
 .../classtvm_1_1tir_1_1ProvideNode-members.html    |  119 -
 .../doxygen/classtvm_1_1tir_1_1ProvideNode.html    |  412 --
 ...classtvm_1_1tir_1_1ProvideNode__coll__graph.svg |  156 -
 ...sstvm_1_1tir_1_1ProvideNode__inherit__graph.svg |   66 -
 .../doxygen/classtvm_1_1tir_1_1Ramp-members.html   |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Ramp.html      |  216 +
 .../classtvm_1_1tir_1_1RampNode-members.html       |   15 +-
 docs/api/doxygen/classtvm_1_1tir_1_1RampNode.html  |   54 +-
 .../classtvm_1_1tir_1_1RampNode__coll__graph.svg   |  197 +-
 ...classtvm_1_1tir_1_1RampNode__inherit__graph.svg |   95 +-
 .../classtvm_1_1tir_1_1Ramp__coll__graph.svg       |   77 +
 .../classtvm_1_1tir_1_1Ramp__inherit__graph.svg    |   77 +
 .../classtvm_1_1tir_1_1RealizeNode-members.html    |  121 -
 .../doxygen/classtvm_1_1tir_1_1RealizeNode.html    |  458 --
 ...classtvm_1_1tir_1_1RealizeNode__coll__graph.svg |  215 -
 ...sstvm_1_1tir_1_1RealizeNode__inherit__graph.svg |   68 -
 .../doxygen/classtvm_1_1tir_1_1Reduce-members.html |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Reduce.html    |  228 +
 .../classtvm_1_1tir_1_1ReduceNode-members.html     |   17 +-
 .../api/doxygen/classtvm_1_1tir_1_1ReduceNode.html |   69 +-
 .../classtvm_1_1tir_1_1ReduceNode__coll__graph.svg |  262 +-
 ...asstvm_1_1tir_1_1ReduceNode__inherit__graph.svg |   99 +-
 .../classtvm_1_1tir_1_1Reduce__coll__graph.svg     |   77 +
 .../classtvm_1_1tir_1_1Reduce__inherit__graph.svg  |   77 +
 .../doxygen/classtvm_1_1tir_1_1Select-members.html |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Select.html    |  216 +
 .../classtvm_1_1tir_1_1SelectNode-members.html     |   15 +-
 .../api/doxygen/classtvm_1_1tir_1_1SelectNode.html |   54 +-
 .../classtvm_1_1tir_1_1SelectNode__coll__graph.svg |  197 +-
 ...asstvm_1_1tir_1_1SelectNode__inherit__graph.svg |   95 +-
 .../classtvm_1_1tir_1_1Select__coll__graph.svg     |   77 +
 .../classtvm_1_1tir_1_1Select__inherit__graph.svg  |   77 +
 .../doxygen/classtvm_1_1tir_1_1SeqStmtNode.html    |    6 +-
 .../classtvm_1_1tir_1_1Shuffle-members.html        |  114 +
 docs/api/doxygen/classtvm_1_1tir_1_1Shuffle.html   |  276 ++
 .../classtvm_1_1tir_1_1ShuffleNode-members.html    |   17 +-
 .../doxygen/classtvm_1_1tir_1_1ShuffleNode.html    |  114 +-
 ...classtvm_1_1tir_1_1ShuffleNode__coll__graph.svg |  161 +-
 ...sstvm_1_1tir_1_1ShuffleNode__inherit__graph.svg |   95 +-
 .../classtvm_1_1tir_1_1Shuffle__coll__graph.svg    |   79 +
 .../classtvm_1_1tir_1_1Shuffle__inherit__graph.svg |   79 +
 .../classtvm_1_1tir_1_1SizeVar-members.html        |    8 +-
 docs/api/doxygen/classtvm_1_1tir_1_1SizeVar.html   |   28 +-
 .../classtvm_1_1tir_1_1SizeVarNode-members.html    |    2 +-
 .../doxygen/classtvm_1_1tir_1_1SizeVarNode.html    |    8 +-
 ...classtvm_1_1tir_1_1SizeVarNode__coll__graph.svg |  289 +-
 .../classtvm_1_1tir_1_1SizeVar__coll__graph.svg    |    2 +-
 .../classtvm_1_1tir_1_1SizeVar__inherit__graph.svg |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1Stmt.html      |    2 +-
 ...classtvm_1_1tir_1_1StmtExprMutator-members.html |   93 +-
 .../classtvm_1_1tir_1_1StmtExprMutator.html        |   10 +-
 ...stvm_1_1tir_1_1StmtExprMutator__coll__graph.svg |    2 +-
 ...m_1_1tir_1_1StmtExprMutator__inherit__graph.svg |    2 +-
 ...classtvm_1_1tir_1_1StmtExprVisitor-members.html |   89 +-
 .../classtvm_1_1tir_1_1StmtExprVisitor.html        |   10 +-
 ...stvm_1_1tir_1_1StmtExprVisitor__coll__graph.svg |    2 +-
 ...m_1_1tir_1_1StmtExprVisitor__inherit__graph.svg |    2 +-
 ...tmt_01_6n_00_01Args_8_8_8args_08_4-members.html |    4 +-
 ...onst_01Stmt_01_6n_00_01Args_8_8_8args_08_4.html |   16 +-
 .../classtvm_1_1tir_1_1StmtMutator-members.html    |    4 +-
 .../doxygen/classtvm_1_1tir_1_1StmtMutator.html    |   16 +-
 docs/api/doxygen/classtvm_1_1tir_1_1StmtNode.html  |    6 +-
 ...classtvm_1_1tir_1_1StmtNode__inherit__graph.svg |  502 +-
 .../classtvm_1_1tir_1_1StmtVisitor-members.html    |    4 +-
 .../doxygen/classtvm_1_1tir_1_1StmtVisitor.html    |   16 +-
 .../classtvm_1_1tir_1_1Stmt__inherit__graph.svg    |  340 +-
 .../doxygen/classtvm_1_1tir_1_1Store-members.html  |  108 +
 docs/api/doxygen/classtvm_1_1tir_1_1Store.html     |  211 +
 .../classtvm_1_1tir_1_1StoreNode-members.html      |   15 +-
 docs/api/doxygen/classtvm_1_1tir_1_1StoreNode.html |   68 +-
 .../classtvm_1_1tir_1_1StoreNode__coll__graph.svg  |  161 +-
 ...lasstvm_1_1tir_1_1StoreNode__inherit__graph.svg |   77 +-
 .../classtvm_1_1tir_1_1Store__coll__graph.svg      |   56 +
 .../classtvm_1_1tir_1_1Store__inherit__graph.svg   |   56 +
 .../classtvm_1_1tir_1_1StringImm-members.html      |    7 +-
 docs/api/doxygen/classtvm_1_1tir_1_1StringImm.html |   29 +-
 .../classtvm_1_1tir_1_1StringImmNode-members.html  |   15 +-
 .../doxygen/classtvm_1_1tir_1_1StringImmNode.html  |   48 +-
 ...asstvm_1_1tir_1_1StringImmNode__coll__graph.svg |  236 +-
 ...tvm_1_1tir_1_1StringImmNode__inherit__graph.svg |   91 +-
 .../classtvm_1_1tir_1_1StringImm__coll__graph.svg  |   75 +-
 ...lasstvm_1_1tir_1_1StringImm__inherit__graph.svg |   75 +-
 .../doxygen/classtvm_1_1tir_1_1Sub-members.html    |  112 +
 docs/api/doxygen/classtvm_1_1tir_1_1Sub.html       |  210 +
 .../classtvm_1_1tir_1_1SubNode-members.html        |   13 +-
 docs/api/doxygen/classtvm_1_1tir_1_1SubNode.html   |   11 +-
 .../classtvm_1_1tir_1_1SubNode__coll__graph.svg    |  203 +-
 .../classtvm_1_1tir_1_1SubNode__inherit__graph.svg |   99 +-
 .../classtvm_1_1tir_1_1Sub__coll__graph.svg        |   77 +
 .../classtvm_1_1tir_1_1Sub__inherit__graph.svg     |   77 +
 .../doxygen/classtvm_1_1tir_1_1Var-members.html    |    6 +-
 docs/api/doxygen/classtvm_1_1tir_1_1Var.html       |   36 +-
 .../classtvm_1_1tir_1_1VarNode-members.html        |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1VarNode.html   |   20 +-
 .../classtvm_1_1tir_1_1VarNode__coll__graph.svg    |  273 +-
 .../classtvm_1_1transform_1_1PassContext.html      |    8 +-
 ...vm_1_1transform_1_1PassContextNode-members.html |   19 +-
 .../classtvm_1_1transform_1_1PassContextNode.html  |   39 +-
 ..._1transform_1_1PassContextNode__coll__graph.svg |  173 +-
 ...ransform_1_1PassContextNode__inherit__graph.svg |   35 +-
 .../doxygen/classtvm_1_1transform_1_1PassInfo.html |    4 +-
 ...sstvm_1_1transform_1_1PassInfoNode-members.html |    4 +-
 .../classtvm_1_1transform_1_1PassInfoNode.html     |   22 +-
 ...m_1_1transform_1_1PassInfoNode__coll__graph.svg |  162 +-
 .../classtvm_1_1transform_1_1Sequential.html       |    4 +-
 docs/api/doxygen/codegen_8h_source.html            |    2 +-
 docs/api/doxygen/constant__utils_8h_source.html    |    6 +-
 docs/api/doxygen/cublas_8h_source.html             |   10 +-
 docs/api/doxygen/cuda_2dense_8h_source.html        |   32 +-
 docs/api/doxygen/cuda_2injective_8h_source.html    |   21 +-
 .../api/doxygen/cuda_2normalization_8h_source.html |   24 +-
 docs/api/doxygen/cuda_2pooling_8h_source.html      |   25 +-
 docs/api/doxygen/cuda_2reduction_8h_source.html    |   30 +-
 docs/api/doxygen/cuda_2softmax_8h_source.html      |   24 +-
 docs/api/doxygen/data__layout_8h.html              |    5 +-
 docs/api/doxygen/data__layout_8h_source.html       |   80 +-
 docs/api/doxygen/data__type_8h.html                |    6 +-
 docs/api/doxygen/data__type_8h__dep__incl.svg      |    2 +-
 docs/api/doxygen/data__type_8h_source.html         |  101 +-
 docs/api/doxygen/dataflow__matcher_8h.html         |    6 +-
 docs/api/doxygen/dataflow__matcher_8h_source.html  |    8 +-
 docs/api/doxygen/dataflow__pattern_8h.html         |   17 +
 docs/api/doxygen/dataflow__pattern_8h_source.html  |   99 +-
 .../dataflow__pattern__functor_8h_source.html      |   25 +-
 docs/api/doxygen/debug_8h_source.html              |    2 +-
 docs/api/doxygen/detail_2broadcast_8h_source.html  |   15 +-
 docs/api/doxygen/detail_2extern_8h_source.html     |   27 +-
 docs/api/doxygen/device__api_8h_source.html        |    6 +-
 docs/api/doxygen/device__copy_8h_source.html       |    2 +-
 docs/api/doxygen/dilate_8h_source.html             |   16 +-
 ...r_000002_000007.html => dir_000002_000004.html} |    0
 docs/api/doxygen/dir_000002_000007.html            |    4 +-
 docs/api/doxygen/dir_000002_000010.html            |   90 -
 ...r_000006_000007.html => dir_000003_000004.html} |    0
 ...r_000006_000011.html => dir_000003_000008.html} |    0
 ...r_000006_000017.html => dir_000003_000017.html} |    0
 ...r_000006_000018.html => dir_000003_000018.html} |    0
 ...r_000006_000019.html => dir_000003_000019.html} |    0
 docs/api/doxygen/dir_000004_000000.html            |   90 -
 ...r_000007_000008.html => dir_000004_000005.html} |    0
 ...r_000007_000011.html => dir_000004_000008.html} |    0
 ...r_000007_000013.html => dir_000004_000013.html} |    0
 ...r_000007_000017.html => dir_000004_000017.html} |    0
 docs/api/doxygen/dir_000005_000000.html            |   90 -
 ...r_000008_000007.html => dir_000005_000004.html} |    0
 ...r_000008_000010.html => dir_000005_000007.html} |    0
 ...r_000008_000011.html => dir_000005_000008.html} |    0
 ...r_000008_000012.html => dir_000005_000009.html} |    0
 ...r_000008_000013.html => dir_000005_000013.html} |    0
 ...r_000008_000018.html => dir_000005_000018.html} |    0
 ...r_000008_000019.html => dir_000005_000019.html} |    0
 ...r_000009_000007.html => dir_000006_000004.html} |    0
 ...r_000009_000011.html => dir_000006_000008.html} |    0
 ...r_000010_000007.html => dir_000007_000004.html} |    0
 docs/api/doxygen/dir_000007_000008.html            |    6 +-
 docs/api/doxygen/dir_000007_000013.html            |    6 +-
 ...r_000012_000007.html => dir_000009_000004.html} |    0
 docs/api/doxygen/dir_000010_000011.html            |   90 -
 docs/api/doxygen/dir_000010_000013.html            |   90 -
 docs/api/doxygen/dir_000011_000000.html            |   90 +
 docs/api/doxygen/dir_000012_000000.html            |   90 +
 ...r_000013_000011.html => dir_000013_000008.html} |    0
 ...r_000018_000007.html => dir_000018_000004.html} |    0
 docs/api/doxygen/dir_000018_000007.html            |    4 +-
 ...r_000018_000011.html => dir_000018_000008.html} |    0
 docs/api/doxygen/dir_000018_000010.html            |   90 -
 ...r_000019_000010.html => dir_000019_000007.html} |    0
 ...r_000019_000011.html => dir_000019_000008.html} |    0
 .../dir_02be2c9d68e402f80df60bd528724ee5_dep.svg   |   20 +-
 .../dir_194ecda214f05a38134392ac6a69b970.html      |    3 -
 .../dir_194ecda214f05a38134392ac6a69b970_dep.svg   |   12 +-
 .../dir_519be2d4a83a987dbf989f1de527b870_dep.svg   |    2 +-
 .../dir_5da96592f3a7c442b838b075c58254c2_dep.svg   |   20 +-
 .../dir_63946bee875c6d52bce55e72a67a86ad_dep.svg   |   40 +-
 .../dir_6cd4295f6ad5aa17e5b568d0e5b190e5_dep.svg   |    2 +-
 .../dir_72c2f11201cd7636dc7624de0754daa5_dep.svg   |   12 +-
 .../dir_85f3d6180da4edc5eb489febd20e807a.html      |    4 +-
 .../dir_a99f4dc995763900c0e382b7dd5d0038_dep.svg   |    2 +-
 .../dir_b4c7d8e826c599ba55146c099a14beb5_dep.svg   |   52 +-
 .../dir_d523279167051dc3aad9a40981221f4d_dep.svg   |    6 +-
 .../dir_dc867ff9a37cad1764f1670dc7eba6c1_dep.svg   |   14 +-
 .../dir_e79ffd3285e304ad4c501fa62028ed74_dep.svg   |    2 +-
 .../dir_f97d855a3173728370e632aa77170e34_dep.svg   |   12 +-
 docs/api/doxygen/driver__api_8h.html               |   24 +-
 docs/api/doxygen/driver__api_8h_source.html        |    6 +-
 docs/api/doxygen/elemwise_8h.html                  |    7 +-
 docs/api/doxygen/elemwise_8h_source.html           |   38 +-
 docs/api/doxygen/env__func_8h.html                 |    2 +-
 docs/api/doxygen/env__func_8h__dep__incl.svg       |  414 +-
 docs/api/doxygen/env__func_8h_source.html          |    7 +-
 docs/api/doxygen/error_8h_source.html              |    6 +-
 docs/api/doxygen/feature_8h_source.html            |    4 +-
 docs/api/doxygen/files.html                        |    3 +-
 docs/api/doxygen/flatten_8h_source.html            |   13 +-
 docs/api/doxygen/functions.html                    |   15 +-
 docs/api/doxygen/functions_0x7e.html               |    9 +-
 docs/api/doxygen/functions_a.html                  |   39 +-
 docs/api/doxygen/functions_b.html                  |   23 +-
 docs/api/doxygen/functions_c.html                  |   49 +-
 docs/api/doxygen/functions_d.html                  |   40 +-
 docs/api/doxygen/functions_e.html                  |   14 +-
 docs/api/doxygen/functions_eval.html               |    6 +-
 docs/api/doxygen/functions_f.html                  |   28 +-
 docs/api/doxygen/functions_func_0x7e.html          |    9 +-
 docs/api/doxygen/functions_func_a.html             |   18 +-
 docs/api/doxygen/functions_func_b.html             |   12 +-
 docs/api/doxygen/functions_func_c.html             |   29 +-
 docs/api/doxygen/functions_func_d.html             |    8 +-
 docs/api/doxygen/functions_func_e.html             |   14 +-
 docs/api/doxygen/functions_func_f.html             |   23 +-
 docs/api/doxygen/functions_func_g.html             |   41 +-
 docs/api/doxygen/functions_func_h.html             |    3 +
 docs/api/doxygen/functions_func_i.html             |    9 +-
 docs/api/doxygen/functions_func_l.html             |   17 +-
 docs/api/doxygen/functions_func_m.html             |   71 +-
 docs/api/doxygen/functions_func_n.html             |    8 +-
 docs/api/doxygen/functions_func_o.html             |   55 +-
 docs/api/doxygen/functions_func_p.html             |   14 +-
 docs/api/doxygen/functions_func_r.html             |   13 +-
 docs/api/doxygen/functions_func_s.html             |   50 +-
 docs/api/doxygen/functions_func_t.html             |   94 +-
 docs/api/doxygen/functions_func_v.html             |   29 +-
 docs/api/doxygen/functions_g.html                  |   38 +-
 docs/api/doxygen/functions_h.html                  |    6 +-
 docs/api/doxygen/functions_i.html                  |   18 +-
 docs/api/doxygen/functions_k.html                  |    7 +-
 docs/api/doxygen/functions_l.html                  |   17 +-
 docs/api/doxygen/functions_m.html                  |   73 +-
 docs/api/doxygen/functions_n.html                  |   28 +-
 docs/api/doxygen/functions_o.html                  |   67 +-
 docs/api/doxygen/functions_p.html                  |   29 +-
 docs/api/doxygen/functions_r.html                  |   18 +-
 docs/api/doxygen/functions_rela.html               |   17 +-
 docs/api/doxygen/functions_s.html                  |   68 +-
 docs/api/doxygen/functions_t.html                  |  101 +-
 docs/api/doxygen/functions_type.html               |   17 +-
 docs/api/doxygen/functions_u.html                  |    3 -
 docs/api/doxygen/functions_v.html                  |   41 +-
 docs/api/doxygen/functions_vars.html               |   15 +-
 docs/api/doxygen/functions_vars_a.html             |   21 +-
 docs/api/doxygen/functions_vars_b.html             |    9 +-
 docs/api/doxygen/functions_vars_c.html             |    5 +-
 docs/api/doxygen/functions_vars_d.html             |   32 +-
 docs/api/doxygen/functions_vars_e.html             |    2 +-
 docs/api/doxygen/functions_vars_f.html             |    9 -
 docs/api/doxygen/functions_vars_g.html             |    1 +
 docs/api/doxygen/functions_vars_i.html             |    5 +-
 docs/api/doxygen/functions_vars_k.html             |    4 +-
 docs/api/doxygen/functions_vars_m.html             |    2 +-
 docs/api/doxygen/functions_vars_n.html             |   20 +-
 docs/api/doxygen/functions_vars_o.html             |    9 +-
 docs/api/doxygen/functions_vars_p.html             |   11 +-
 docs/api/doxygen/functions_vars_r.html             |    5 +-
 docs/api/doxygen/functions_vars_s.html             |   14 +-
 docs/api/doxygen/functions_vars_t.html             |    4 +-
 docs/api/doxygen/functions_vars_u.html             |    3 -
 docs/api/doxygen/functions_vars_v.html             |    8 +-
 docs/api/doxygen/functions_w.html                  |    3 -
 docs/api/doxygen/fuse_8h_source.html               |    5 +-
 docs/api/doxygen/generic_2default_8h.html          |   12 +-
 docs/api/doxygen/generic_2default_8h_source.html   |   13 +-
 docs/api/doxygen/generic_2extern_8h.html           |    6 +-
 docs/api/doxygen/generic_2extern_8h_source.html    |   14 +-
 docs/api/doxygen/generic_2injective_8h_source.html |   17 +-
 docs/api/doxygen/generic__func_8h_source.html      |    6 +-
 docs/api/doxygen/globals.html                      |   55 +-
 docs/api/doxygen/globals_enum.html                 |    6 +-
 docs/api/doxygen/globals_eval.html                 |   43 +-
 docs/api/doxygen/globals_func.html                 |    6 +
 docs/api/doxygen/hierarchy.html                    | 1226 ++---
 docs/api/doxygen/image_8h_source.html              |    5 +-
 docs/api/doxygen/include_2tvm_2arith_2util_8h.html |  133 -
 .../doxygen/include_2tvm_2arith_2util_8h__incl.svg |   38 -
 .../include_2tvm_2arith_2util_8h_source.html       |  102 -
 .../doxygen/include_2tvm_2ir_2transform_8h.html    |    6 +-
 .../include_2tvm_2ir_2transform_8h_source.html     |   70 +-
 .../doxygen/include_2tvm_2relay_2attrs_2nn_8h.html |    3 +
 .../include_2tvm_2relay_2attrs_2nn_8h_source.html  |  434 +-
 .../include_2tvm_2relay_2attrs_2transform_8h.html  |   10 +
 ...de_2tvm_2relay_2attrs_2transform_8h_source.html |  150 +-
 .../doxygen/include_2tvm_2relay_2transform_8h.html |   10 +-
 .../include_2tvm_2relay_2transform_8h_source.html  |   25 +-
 .../doxygen/include_2tvm_2tir_2transform_8h.html   |   46 +-
 .../include_2tvm_2tir_2transform_8h_source.html    |   20 +-
 docs/api/doxygen/inherit_graph_100.svg             |   17 +-
 docs/api/doxygen/inherit_graph_101.svg             |   15 +-
 docs/api/doxygen/inherit_graph_102.svg             |   15 +-
 docs/api/doxygen/inherit_graph_103.svg             |   54 +-
 docs/api/doxygen/inherit_graph_104.svg             |   18 +-
 docs/api/doxygen/inherit_graph_105.svg             |   55 +-
 docs/api/doxygen/inherit_graph_106.svg             |   19 +-
 docs/api/doxygen/inherit_graph_107.svg             |   19 +-
 docs/api/doxygen/inherit_graph_108.svg             |   18 +-
 docs/api/doxygen/inherit_graph_109.svg             |   18 +-
 docs/api/doxygen/inherit_graph_110.svg             |   17 +-
 docs/api/doxygen/inherit_graph_111.svg             |   12 +-
 docs/api/doxygen/inherit_graph_112.svg             |   12 +-
 docs/api/doxygen/inherit_graph_113.svg             |   15 +-
 docs/api/doxygen/inherit_graph_114.svg             |   12 +-
 docs/api/doxygen/inherit_graph_115.svg             |   14 +-
 docs/api/doxygen/inherit_graph_116.svg             |   12 +-
 docs/api/doxygen/inherit_graph_117.svg             |   15 +-
 docs/api/doxygen/inherit_graph_118.svg             |   12 +-
 docs/api/doxygen/inherit_graph_119.svg             |   15 +-
 docs/api/doxygen/inherit_graph_120.svg             |   16 +-
 docs/api/doxygen/inherit_graph_121.svg             |   15 +-
 docs/api/doxygen/inherit_graph_122.svg             |   17 +-
 docs/api/doxygen/inherit_graph_123.svg             |   15 +-
 docs/api/doxygen/inherit_graph_124.svg             |   14 +-
 docs/api/doxygen/inherit_graph_125.svg             |   69 +-
 docs/api/doxygen/inherit_graph_126.svg             |   69 +-
 docs/api/doxygen/inherit_graph_127.svg             |   68 +-
 docs/api/doxygen/inherit_graph_128.svg             |   72 +-
 docs/api/doxygen/inherit_graph_129.svg             |   19 +-
 docs/api/doxygen/inherit_graph_130.svg             |   15 +-
 docs/api/doxygen/inherit_graph_131.svg             |   15 +-
 docs/api/doxygen/inherit_graph_132.svg             |   27 +-
 docs/api/doxygen/inherit_graph_133.svg             |   24 +-
 docs/api/doxygen/inherit_graph_134.svg             |   28 +-
 docs/api/doxygen/inherit_graph_135.svg             |   12 +-
 docs/api/doxygen/inherit_graph_136.svg             |   12 +-
 docs/api/doxygen/inherit_graph_137.svg             |   12 +-
 ...inherit_graph_137.svg => inherit_graph_138.svg} |    0
 docs/api/doxygen/inherit_graph_5.svg               | 4930 ++++++++++----------
 docs/api/doxygen/inherit_graph_53.svg              | 2682 +++++++----
 docs/api/doxygen/inherit_graph_56.svg              |   12 +-
 docs/api/doxygen/inherit_graph_57.svg              |   12 +-
 docs/api/doxygen/inherit_graph_58.svg              |   15 +-
 docs/api/doxygen/inherit_graph_59.svg              |   15 +-
 docs/api/doxygen/inherit_graph_60.svg              |   14 +-
 docs/api/doxygen/inherit_graph_61.svg              |   23 +-
 docs/api/doxygen/inherit_graph_62.svg              |   40 +-
 docs/api/doxygen/inherit_graph_63.svg              |   27 +-
 docs/api/doxygen/inherit_graph_64.svg              |   38 +-
 docs/api/doxygen/inherit_graph_65.svg              |   38 +-
 docs/api/doxygen/inherit_graph_66.svg              |   15 +-
 docs/api/doxygen/inherit_graph_67.svg              |   41 +-
 docs/api/doxygen/inherit_graph_68.svg              |   15 +-
 docs/api/doxygen/inherit_graph_69.svg              |   28 +-
 docs/api/doxygen/inherit_graph_70.svg              |   12 +-
 docs/api/doxygen/inherit_graph_71.svg              |   22 +-
 docs/api/doxygen/inherit_graph_72.svg              |   15 +-
 docs/api/doxygen/inherit_graph_73.svg              |   27 +-
 docs/api/doxygen/inherit_graph_74.svg              |   12 +-
 docs/api/doxygen/inherit_graph_75.svg              |   15 +-
 docs/api/doxygen/inherit_graph_76.svg              |   15 +-
 docs/api/doxygen/inherit_graph_77.svg              |   15 +-
 docs/api/doxygen/inherit_graph_78.svg              |   15 +-
 docs/api/doxygen/inherit_graph_79.svg              |   14 +-
 docs/api/doxygen/inherit_graph_80.svg              |   28 +-
 docs/api/doxygen/inherit_graph_81.svg              |  203 +-
 docs/api/doxygen/inherit_graph_82.svg              |   28 +-
 docs/api/doxygen/inherit_graph_83.svg              |  202 +-
 docs/api/doxygen/inherit_graph_86.svg              |  132 +-
 docs/api/doxygen/inherit_graph_87.svg              |   15 +-
 docs/api/doxygen/inherit_graph_88.svg              |  133 +-
 docs/api/doxygen/inherit_graph_89.svg              |    4 +-
 docs/api/doxygen/inherit_graph_90.svg              |   15 +-
 docs/api/doxygen/inherit_graph_91.svg              |   17 +-
 docs/api/doxygen/inherit_graph_92.svg              |   15 +-
 docs/api/doxygen/inherit_graph_93.svg              |   17 +-
 docs/api/doxygen/inherit_graph_94.svg              |   12 +-
 docs/api/doxygen/inherit_graph_95.svg              |   17 +-
 docs/api/doxygen/inherit_graph_96.svg              |   15 +-
 docs/api/doxygen/inherit_graph_97.svg              |   17 +-
 docs/api/doxygen/inherit_graph_98.svg              |   16 +-
 docs/api/doxygen/inherit_graph_99.svg              |   14 +-
 docs/api/doxygen/inherits.html                     |  164 +-
 docs/api/doxygen/int__set_8h.html                  |    6 +-
 docs/api/doxygen/int__set_8h_source.html           |   10 +-
 docs/api/doxygen/int__solver_8h_source.html        |    2 +-
 docs/api/doxygen/interpreter_8h_source.html        |    2 +-
 docs/api/doxygen/ir_2adt_8h.html                   |    2 +-
 docs/api/doxygen/ir_2adt_8h__dep__incl.svg         |  969 ++--
 docs/api/doxygen/ir_2adt_8h_source.html            |   13 +-
 docs/api/doxygen/ir_2attrs_8h.html                 |    8 +-
 docs/api/doxygen/ir_2attrs_8h__dep__incl.svg       |  891 ++--
 docs/api/doxygen/ir_2attrs_8h_source.html          |  172 +-
 docs/api/doxygen/ir_2expr_8h.html                  |    2 +-
 docs/api/doxygen/ir_2expr_8h__dep__incl.svg        |  809 ++--
 docs/api/doxygen/ir_2expr_8h_source.html           |  137 +-
 docs/api/doxygen/ir_2function_8h.html              |    2 +-
 docs/api/doxygen/ir_2function_8h__dep__incl.svg    |  917 ++--
 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      | 1028 ++--
 docs/api/doxygen/ir_2module_8h_source.html         |   11 +-
 docs/api/doxygen/ir_2op_8h.html                    |    2 +-
 docs/api/doxygen/ir_2op_8h__dep__incl.svg          |  288 +-
 docs/api/doxygen/ir_2op_8h_source.html             |   23 +-
 docs/api/doxygen/ir_2type_8h.html                  |    2 +-
 docs/api/doxygen/ir_2type_8h__dep__incl.svg        | 1239 ++---
 docs/api/doxygen/ir_2type_8h_source.html           |   17 +-
 .../doxygen/local__response__norm_8h_source.html   |   15 +-
 docs/api/doxygen/mapping_8h_source.html            |   11 +-
 docs/api/doxygen/namespacellvm.html                |   96 +
 docs/api/doxygen/namespacemembers.html             |   12 +-
 docs/api/doxygen/namespacemembers_b.html           |    3 +-
 docs/api/doxygen/namespacemembers_c.html           |   11 +-
 docs/api/doxygen/namespacemembers_d.html           |   15 +-
 docs/api/doxygen/namespacemembers_e.html           |    3 +-
 docs/api/doxygen/namespacemembers_f.html           |    9 +-
 docs/api/doxygen/namespacemembers_func.html        |    7 +-
 docs/api/doxygen/namespacemembers_func_b.html      |    3 +-
 docs/api/doxygen/namespacemembers_func_c.html      |   11 +-
 docs/api/doxygen/namespacemembers_func_d.html      |   14 +-
 docs/api/doxygen/namespacemembers_func_e.html      |    1 -
 docs/api/doxygen/namespacemembers_func_f.html      |   13 +-
 docs/api/doxygen/namespacemembers_func_g.html      |    8 +-
 docs/api/doxygen/namespacemembers_func_h.html      |    1 -
 docs/api/doxygen/namespacemembers_func_i.html      |    5 +-
 docs/api/doxygen/namespacemembers_func_j.html      |    1 -
 docs/api/doxygen/namespacemembers_func_k.html      |    1 -
 docs/api/doxygen/namespacemembers_func_l.html      |    7 +-
 docs/api/doxygen/namespacemembers_func_m.html      |    1 -
 docs/api/doxygen/namespacemembers_func_n.html      |    1 -
 docs/api/doxygen/namespacemembers_func_o.html      |   43 +-
 docs/api/doxygen/namespacemembers_func_p.html      |    3 +-
 docs/api/doxygen/namespacemembers_func_r.html      |    6 +-
 docs/api/doxygen/namespacemembers_func_s.html      |   12 +-
 docs/api/doxygen/namespacemembers_func_t.html      |   10 +-
 docs/api/doxygen/namespacemembers_func_u.html      |    3 +-
 docs/api/doxygen/namespacemembers_func_v.html      |    5 +-
 docs/api/doxygen/namespacemembers_func_w.html      |    1 -
 docs/api/doxygen/namespacemembers_func_x.html      |  137 -
 docs/api/doxygen/namespacemembers_func_y.html      |    1 -
 docs/api/doxygen/namespacemembers_g.html           |    6 +-
 docs/api/doxygen/namespacemembers_h.html           |    1 -
 docs/api/doxygen/namespacemembers_i.html           |    5 +-
 docs/api/doxygen/namespacemembers_j.html           |    1 -
 docs/api/doxygen/namespacemembers_k.html           |    1 -
 docs/api/doxygen/namespacemembers_l.html           |    7 +-
 docs/api/doxygen/namespacemembers_m.html           |    1 -
 docs/api/doxygen/namespacemembers_n.html           |    1 -
 docs/api/doxygen/namespacemembers_o.html           |   47 +-
 docs/api/doxygen/namespacemembers_p.html           |    3 +-
 docs/api/doxygen/namespacemembers_r.html           |    8 +-
 docs/api/doxygen/namespacemembers_s.html           |   12 +-
 docs/api/doxygen/namespacemembers_t.html           |    6 +-
 docs/api/doxygen/namespacemembers_type.html        |   10 +-
 docs/api/doxygen/namespacemembers_u.html           |    3 +-
 docs/api/doxygen/namespacemembers_v.html           |    5 +-
 docs/api/doxygen/namespacemembers_w.html           |    1 -
 docs/api/doxygen/namespacemembers_x.html           |  137 -
 docs/api/doxygen/namespacemembers_y.html           |    1 -
 docs/api/doxygen/namespaces.html                   |   59 +-
 docs/api/doxygen/namespacetopi.html                |  596 ++-
 docs/api/doxygen/namespacetopi_1_1generic.html     |   30 +-
 docs/api/doxygen/namespacetvm.html                 |  328 +-
 docs/api/doxygen/namespacetvm_1_1arith.html        |   63 +-
 docs/api/doxygen/namespacetvm_1_1relay.html        |   70 +-
 .../namespacetvm_1_1relay_1_1transform.html        |   24 +-
 docs/api/doxygen/namespacetvm_1_1runtime.html      | 1496 +++++-
 docs/api/doxygen/namespacetvm_1_1te.html           |  108 +-
 docs/api/doxygen/namespacetvm_1_1tir.html          |  303 +-
 docs/api/doxygen/namespacetvm_1_1tir_1_1attr.html  |    2 +-
 .../doxygen/namespacetvm_1_1tir_1_1intrinsic.html  |   28 +-
 .../doxygen/namespacetvm_1_1tir_1_1transform.html  |  140 +-
 docs/api/doxygen/namespacetvm_1_1transform.html    |   14 +-
 docs/api/doxygen/ndarray_8h.html                   |    2 +-
 docs/api/doxygen/ndarray_8h__dep__incl.svg         | 1277 ++---
 docs/api/doxygen/ndarray_8h_source.html            |   18 +-
 docs/api/doxygen/nn_2bnn_8h_source.html            |   22 +-
 docs/api/doxygen/nn_2dense_8h_source.html          |   15 +-
 docs/api/doxygen/nn_2pooling_8h_source.html        |   41 +-
 docs/api/doxygen/nn_2softmax_8h_source.html        |   26 +-
 docs/api/doxygen/node_2container_8h.html           |    9 +-
 docs/api/doxygen/node_2container_8h__dep__incl.svg |    2 +-
 docs/api/doxygen/node_2container_8h_source.html    |   86 +-
 docs/api/doxygen/node_8h.html                      |    2 +-
 docs/api/doxygen/node_8h__dep__incl.svg            | 1297 ++---
 docs/api/doxygen/node_8h_source.html               |    6 +-
 docs/api/doxygen/object_8h.html                    |   12 +-
 docs/api/doxygen/object_8h__dep__incl.svg          |    2 +-
 docs/api/doxygen/object_8h_source.html             |   32 +-
 docs/api/doxygen/op__attr__types_8h_source.html    |    2 +-
 docs/api/doxygen/op__strategy_8h_source.html       |   11 +-
 docs/api/doxygen/operation_8h.html                 |   54 +-
 docs/api/doxygen/operation_8h_source.html          |  130 +-
 docs/api/doxygen/packed__func_8h.html              |   23 +-
 docs/api/doxygen/packed__func_8h__dep__incl.svg    | 1029 ++--
 docs/api/doxygen/packed__func_8h_source.html       |  196 +-
 docs/api/doxygen/pad__utils_8h_source.html         |    4 +-
 docs/api/doxygen/pattern__functor_8h_source.html   |    2 +-
 docs/api/doxygen/ravel__unravel_8h_source.html     |    6 +-
 docs/api/doxygen/reduce_8h_source.html             |    2 +-
 docs/api/doxygen/reduction_8h_source.html          |   59 +-
 docs/api/doxygen/reflection_8h.html                |   10 +-
 docs/api/doxygen/reflection_8h__dep__incl.svg      | 1367 +++---
 docs/api/doxygen/reflection_8h_source.html         |   45 +-
 docs/api/doxygen/registry_8h.html                  |    2 +-
 docs/api/doxygen/registry_8h__dep__incl.svg        |  404 +-
 docs/api/doxygen/relay_2adt_8h_source.html         |    6 +-
 docs/api/doxygen/relay_2analysis_8h_source.html    |    4 +-
 .../doxygen/relay_2attrs_2memory_8h_source.html    |    6 +-
 docs/api/doxygen/relay_2expr_8h.html               |    2 +-
 docs/api/doxygen/relay_2expr_8h__dep__incl.svg     |  372 +-
 docs/api/doxygen/relay_2expr_8h_source.html        |   21 +-
 .../doxygen/relay_2expr__functor_8h_source.html    |    8 +-
 docs/api/doxygen/relay_2function_8h_source.html    |    8 +-
 docs/api/doxygen/relay_2qnn_2attrs_8h_source.html  |    2 +-
 docs/api/doxygen/relay_2type_8h.html               |    8 +-
 docs/api/doxygen/relay_2type_8h__dep__incl.svg     |  376 +-
 docs/api/doxygen/relay_2type_8h_source.html        |   55 +-
 docs/api/doxygen/reorg_8h_source.html              |   13 +-
 docs/api/doxygen/repr__printer_8h.html             |    2 +-
 docs/api/doxygen/repr__printer_8h__dep__incl.svg   | 1265 ++---
 docs/api/doxygen/rocblas_8h_source.html            |   10 +-
 docs/api/doxygen/rocm_2dense_8h_source.html        |   16 +-
 docs/api/doxygen/rocm_2injective_8h_source.html    |    6 +-
 .../api/doxygen/rocm_2normalization_8h_source.html |    4 +-
 docs/api/doxygen/rocm_2pooling_8h_source.html      |    4 +-
 docs/api/doxygen/rocm_2reduction_8h_source.html    |    4 +-
 docs/api/doxygen/rocm_2softmax_8h_source.html      |    4 +-
 docs/api/doxygen/runtime_2container_8h.html        |   76 +-
 .../doxygen/runtime_2container_8h__dep__incl.svg   |    2 +-
 docs/api/doxygen/runtime_2container_8h_source.html |  322 +-
 docs/api/doxygen/runtime_2memory_8h__dep__incl.svg |    2 +-
 docs/api/doxygen/runtime_2memory_8h_source.html    |    2 +-
 docs/api/doxygen/runtime_2module_8h.html           |    2 +-
 docs/api/doxygen/runtime_2module_8h__dep__incl.svg | 1027 ++--
 docs/api/doxygen/runtime_2module_8h_source.html    |    2 +-
 docs/api/doxygen/schedule_8h.html                  |   22 +-
 docs/api/doxygen/schedule_8h_source.html           |  154 +-
 docs/api/doxygen/search/all_0.js                   |    6 +-
 docs/api/doxygen/search/all_1.js                   |   44 +-
 docs/api/doxygen/search/all_10.js                  |   32 +-
 docs/api/doxygen/search/all_12.js                  |   24 +-
 docs/api/doxygen/search/all_13.js                  |   65 +-
 docs/api/doxygen/search/all_14.js                  |   71 +-
 docs/api/doxygen/search/all_15.js                  |    6 +-
 docs/api/doxygen/search/all_16.js                  |   18 +-
 docs/api/doxygen/search/all_17.js                  |    3 +-
 docs/api/doxygen/search/all_18.js                  |    3 +-
 docs/api/doxygen/search/all_19.js                  |   26 +-
 docs/api/doxygen/search/all_1a.html                |   26 -
 docs/api/doxygen/search/all_1a.js                  |   26 -
 docs/api/doxygen/search/all_2.js                   |   32 +-
 docs/api/doxygen/search/all_3.js                   |   61 +-
 docs/api/doxygen/search/all_4.js                   |   46 +-
 docs/api/doxygen/search/all_5.js                   |   23 +-
 docs/api/doxygen/search/all_6.js                   |   34 +-
 docs/api/doxygen/search/all_7.js                   |   20 +-
 docs/api/doxygen/search/all_8.js                   |    9 +-
 docs/api/doxygen/search/all_9.js                   |   13 +-
 docs/api/doxygen/search/all_b.js                   |   44 +-
 docs/api/doxygen/search/all_c.js                   |   22 +-
 docs/api/doxygen/search/all_d.js                   |   25 +-
 docs/api/doxygen/search/all_e.js                   |   14 +-
 docs/api/doxygen/search/all_f.js                   |   51 +-
 docs/api/doxygen/search/classes_0.js               |   11 +
 docs/api/doxygen/search/classes_1.js               |    5 +-
 docs/api/doxygen/search/classes_10.js              |   12 +-
 docs/api/doxygen/search/classes_11.js              |    2 +-
 docs/api/doxygen/search/classes_13.js              |    2 +-
 docs/api/doxygen/search/classes_2.js               |    8 +-
 docs/api/doxygen/search/classes_3.js               |    5 +
 docs/api/doxygen/search/classes_4.js               |    7 +-
 docs/api/doxygen/search/classes_5.js               |    7 +-
 docs/api/doxygen/search/classes_6.js               |    3 +
 docs/api/doxygen/search/classes_7.js               |    1 +
 docs/api/doxygen/search/classes_8.js               |    1 +
 docs/api/doxygen/search/classes_9.js               |    5 +
 docs/api/doxygen/search/classes_a.js               |   10 +-
 docs/api/doxygen/search/classes_b.js               |    2 +
 docs/api/doxygen/search/classes_c.js               |    7 +-
 docs/api/doxygen/search/classes_d.js               |   10 +-
 docs/api/doxygen/search/classes_f.js               |    7 +-
 docs/api/doxygen/search/enums_9.js                 |    2 +-
 docs/api/doxygen/search/enumvalues_4.js            |    6 +-
 docs/api/doxygen/search/enumvalues_5.js            |  106 +-
 docs/api/doxygen/search/enumvalues_6.js            |  101 +-
 docs/api/doxygen/search/enumvalues_7.js            |    3 +-
 docs/api/doxygen/search/enumvalues_8.js            |    2 +-
 docs/api/doxygen/search/enumvalues_9.js            |    4 +-
 docs/api/doxygen/search/enumvalues_a.js            |    4 +-
 docs/api/doxygen/search/enumvalues_b.js            |    2 +-
 docs/api/doxygen/search/enumvalues_c.js            |    2 +-
 docs/api/doxygen/search/enumvalues_d.js            |    2 +-
 docs/api/doxygen/search/enumvalues_e.html          |   26 -
 docs/api/doxygen/search/enumvalues_e.js            |    4 -
 docs/api/doxygen/search/files_10.js                |    3 +-
 docs/api/doxygen/search/functions_1.js             |   10 +-
 docs/api/doxygen/search/functions_10.js            |    6 +-
 docs/api/doxygen/search/functions_11.js            |    8 +-
 docs/api/doxygen/search/functions_12.js            |   30 +-
 docs/api/doxygen/search/functions_13.js            |   22 +-
 docs/api/doxygen/search/functions_14.js            |    2 +-
 docs/api/doxygen/search/functions_15.js            |   12 +-
 docs/api/doxygen/search/functions_17.js            |    2 +-
 docs/api/doxygen/search/functions_18.js            |   25 +-
 docs/api/doxygen/search/functions_19.html          |   26 -
 docs/api/doxygen/search/functions_19.js            |   26 -
 docs/api/doxygen/search/functions_2.js             |   10 +-
 docs/api/doxygen/search/functions_3.js             |   27 +-
 docs/api/doxygen/search/functions_4.js             |   14 +-
 docs/api/doxygen/search/functions_5.js             |    6 +-
 docs/api/doxygen/search/functions_6.js             |   11 +-
 docs/api/doxygen/search/functions_7.js             |   15 +-
 docs/api/doxygen/search/functions_8.js             |    1 +
 docs/api/doxygen/search/functions_9.js             |    7 +-
 docs/api/doxygen/search/functions_c.js             |   17 +-
 docs/api/doxygen/search/functions_d.js             |   11 +-
 docs/api/doxygen/search/functions_e.js             |    4 +-
 docs/api/doxygen/search/functions_f.js             |   24 +-
 docs/api/doxygen/search/namespaces_1.js            |   30 +-
 docs/api/doxygen/search/namespaces_2.html          |   26 +
 .../search/{namespaces_1.js => namespaces_2.js}    |    0
 docs/api/doxygen/search/related_8.js               |    3 +-
 docs/api/doxygen/search/related_b.js               |    1 +
 docs/api/doxygen/search/related_c.js               |    1 -
 docs/api/doxygen/search/searchdata.js              |    8 +-
 docs/api/doxygen/search/typedefs_0.js              |    3 +-
 docs/api/doxygen/search/typedefs_1.js              |    2 +-
 docs/api/doxygen/search/typedefs_2.js              |    3 +-
 docs/api/doxygen/search/typedefs_3.js              |    3 +-
 docs/api/doxygen/search/typedefs_4.js              |    2 +-
 docs/api/doxygen/search/variables_0.js             |    6 +-
 docs/api/doxygen/search/variables_1.js             |   14 +-
 docs/api/doxygen/search/variables_10.js            |    3 +-
 docs/api/doxygen/search/variables_11.js            |    8 +-
 docs/api/doxygen/search/variables_12.js            |    4 +-
 docs/api/doxygen/search/variables_13.js            |    1 -
 docs/api/doxygen/search/variables_14.js            |    4 +-
 docs/api/doxygen/search/variables_2.js             |    7 +-
 docs/api/doxygen/search/variables_3.js             |    6 +-
 docs/api/doxygen/search/variables_4.js             |   22 +-
 docs/api/doxygen/search/variables_5.js             |    2 +-
 docs/api/doxygen/search/variables_6.js             |    4 +-
 docs/api/doxygen/search/variables_7.js             |    2 +-
 docs/api/doxygen/search/variables_9.js             |    3 +-
 docs/api/doxygen/search/variables_a.js             |    6 +-
 docs/api/doxygen/search/variables_c.js             |    2 +-
 docs/api/doxygen/search/variables_d.js             |    4 +-
 docs/api/doxygen/search/variables_e.js             |    9 +-
 docs/api/doxygen/search/variables_f.js             |    8 +-
 docs/api/doxygen/serializer_8h.html                |    2 +-
 docs/api/doxygen/serializer_8h__dep__incl.svg      | 1275 ++---
 docs/api/doxygen/span_8h.html                      |    2 +-
 docs/api/doxygen/span_8h__dep__incl.svg            | 1011 ++--
 docs/api/doxygen/span_8h_source.html               |    6 +-
 docs/api/doxygen/stmt_8h.html                      |   58 +-
 docs/api/doxygen/stmt_8h_source.html               |  350 +-
 docs/api/doxygen/stmt__functor_8h.html             |    8 +-
 docs/api/doxygen/stmt__functor_8h_source.html      |   48 +-
 .../structtvm_1_1Map_1_1ValueConverter.html        |    4 +-
 .../doxygen/structtvm_1_1ObjectEqual-members.html  |  106 +
 docs/api/doxygen/structtvm_1_1ObjectEqual.html     |  162 +
 .../structtvm_1_1ObjectEqual__coll__graph.svg      |   22 +
 .../doxygen/structtvm_1_1ObjectHash-members.html   |  106 +
 docs/api/doxygen/structtvm_1_1ObjectHash.html      |  152 +
 .../structtvm_1_1ObjectHash__coll__graph.svg       |   22 +
 ...m_1_1relay_1_1Conv3DTransposeAttrs-members.html |  132 +
 ...structtvm_1_1relay_1_1Conv3DTransposeAttrs.html |  371 ++
 ...1relay_1_1Conv3DTransposeAttrs__coll__graph.svg |  199 +
 ...lay_1_1Conv3DTransposeAttrs__inherit__graph.svg |   98 +
 .../structtvm_1_1relay_1_1CorrelationAttrs.html    |    6 +-
 ...m_1_1relay_1_1CorrelationAttrs__coll__graph.svg |  227 +-
 .../structtvm_1_1relay_1_1GatherAttrs-members.html |  122 +
 .../doxygen/structtvm_1_1relay_1_1GatherAttrs.html |  226 +
 ...ucttvm_1_1relay_1_1GatherAttrs__coll__graph.svg |  186 +
 ...tvm_1_1relay_1_1GatherAttrs__inherit__graph.svg |   86 +
 .../structtvm_1_1relay_1_1GridSampleAttrs.html     |   10 +-
 ...vm_1_1relay_1_1GridSampleAttrs__coll__graph.svg |  203 +-
 .../structtvm_1_1relay_1_1InitOpAttrs-members.html |    2 +-
 .../doxygen/structtvm_1_1relay_1_1InitOpAttrs.html |   10 +-
 ...ucttvm_1_1relay_1_1InitOpAttrs__coll__graph.svg |   99 +-
 .../structtvm_1_1relay_1_1Resize3dAttrs.html       |   14 +-
 ...ttvm_1_1relay_1_1Resize3dAttrs__coll__graph.svg |  257 +-
 ...m_1_1relay_1_1ReverseSequenceAttrs-members.html |  123 +
 ...structtvm_1_1relay_1_1ReverseSequenceAttrs.html |  245 +
 ...1relay_1_1ReverseSequenceAttrs__coll__graph.svg |  189 +
 ...lay_1_1ReverseSequenceAttrs__inherit__graph.svg |   89 +
 ...structtvm_1_1relay_1_1ScatterAttrs-members.html |  122 +
 .../structtvm_1_1relay_1_1ScatterAttrs.html        |  226 +
 ...cttvm_1_1relay_1_1ScatterAttrs__coll__graph.svg |  186 +
 ...vm_1_1relay_1_1ScatterAttrs__inherit__graph.svg |   86 +
 ...tvm_1_1relay_1_1SparseToDenseAttrs-members.html |  122 +
 .../structtvm_1_1relay_1_1SparseToDenseAttrs.html  |  231 +
 ...1_1relay_1_1SparseToDenseAttrs__coll__graph.svg |  103 +
 ...relay_1_1SparseToDenseAttrs__inherit__graph.svg |   88 +
 ...ttvm_1_1relay_1_1StridedSliceAttrs-members.html |   21 +-
 .../structtvm_1_1relay_1_1StridedSliceAttrs.html   |   40 +-
 ..._1_1relay_1_1StridedSliceAttrs__coll__graph.svg |   19 +-
 ...1relay_1_1StridedSliceAttrs__inherit__graph.svg |  105 +-
 .../structtvm_1_1relay_1_1TopKAttrs-members.html   |    2 +-
 .../doxygen/structtvm_1_1relay_1_1TopKAttrs.html   |   10 +-
 ...tructtvm_1_1relay_1_1TopKAttrs__coll__graph.svg |  178 +-
 ...tructtvm_1_1runtime_1_1ObjectEqual-members.html |  107 -
 .../structtvm_1_1runtime_1_1ObjectEqual.html       |  201 -
 ...ttvm_1_1runtime_1_1ObjectEqual__coll__graph.svg |   23 -
 ...structtvm_1_1runtime_1_1ObjectHash-members.html |  107 -
 .../structtvm_1_1runtime_1_1ObjectHash.html        |  181 -
 ...cttvm_1_1runtime_1_1ObjectHash__coll__graph.svg |   23 -
 ...cttvm_1_1runtime_1_1ObjectPtrEqual-members.html |  107 +
 .../structtvm_1_1runtime_1_1ObjectPtrEqual.html    |  201 +
 ...m_1_1runtime_1_1ObjectPtrEqual__coll__graph.svg |   23 +
 ...ucttvm_1_1runtime_1_1ObjectPtrHash-members.html |  107 +
 .../structtvm_1_1runtime_1_1ObjectPtrHash.html     |  181 +
 ...vm_1_1runtime_1_1ObjectPtrHash__coll__graph.svg |   23 +
 .../doxygen/structtvm_1_1runtime_1_1TypeIndex.html |    2 +-
 .../structtvm_1_1tir_1_1LENode-members.html        |   13 +-
 docs/api/doxygen/structtvm_1_1tir_1_1LENode.html   |   11 +-
 .../structtvm_1_1tir_1_1LENode__coll__graph.svg    |  203 +-
 .../structtvm_1_1tir_1_1LENode__inherit__graph.svg |   99 +-
 .../structtvm_1_1tir_1_1TensorKey-members.html     |  109 -
 .../api/doxygen/structtvm_1_1tir_1_1TensorKey.html |  210 -
 .../structtvm_1_1tir_1_1TensorKey__coll__graph.svg |   56 -
 docs/api/doxygen/structural__equal_8h.html         |    2 +-
 .../doxygen/structural__equal_8h__dep__incl.svg    | 1137 ++---
 docs/api/doxygen/structural__hash_8h.html          |    2 +-
 .../api/doxygen/structural__hash_8h__dep__incl.svg | 1137 ++---
 docs/api/doxygen/structural__hash_8h_source.html   |    6 +-
 docs/api/doxygen/target_8h.html                    |    6 -
 docs/api/doxygen/target_8h_source.html             |   10 +-
 docs/api/doxygen/target__info_8h_source.html       |    2 +-
 docs/api/doxygen/tensor_8h.html                    |   12 +-
 docs/api/doxygen/tensor_8h_source.html             |   60 +-
 docs/api/doxygen/tensor__intrin_8h.html            |   10 +-
 docs/api/doxygen/tensor__intrin_8h_source.html     |   53 +-
 docs/api/doxygen/tensor__type_8h.html              |    2 +-
 docs/api/doxygen/tensor__type_8h__dep__incl.svg    |  386 +-
 docs/api/doxygen/tensor__type_8h_source.html       |    6 +-
 docs/api/doxygen/tensor__utils_8h_source.html      |   10 +-
 docs/api/doxygen/tir_2analysis_8h.html             |   14 +-
 docs/api/doxygen/tir_2analysis_8h_source.html      |   14 +-
 docs/api/doxygen/tir_2expr_8h.html                 |  123 +-
 docs/api/doxygen/tir_2expr_8h__dep__incl.svg       |  753 +--
 docs/api/doxygen/tir_2expr_8h_source.html          |  455 +-
 docs/api/doxygen/tir_2expr__functor_8h_source.html |   67 +-
 docs/api/doxygen/tir_2function_8h_source.html      |    8 +-
 docs/api/doxygen/tir_2op_8h.html                   |   10 +-
 docs/api/doxygen/tir_2op_8h_source.html            |  136 +-
 .../doxygen/topi_2include_2topi_2nn_8h_source.html |   42 +-
 .../doxygen/topi_2include_2topi_2transform_8h.html |   18 +-
 .../topi_2include_2topi_2transform_8h_source.html  |   94 +-
 docs/api/doxygen/topi_2include_2topi_2util_8h.html |  130 -
 .../topi_2include_2topi_2util_8h_source.html       |  110 -
 docs/api/doxygen/type__functor_8h_source.html      |    2 +-
 docs/api/doxygen/type__relation_8h.html            |    2 +-
 docs/api/doxygen/type__relation_8h__dep__incl.svg  |  376 +-
 docs/api/doxygen/type__relation_8h_source.html     |    8 +-
 docs/api/doxygen/util_8h.html                      |  130 +
 ..._2topi_2util_8h__incl.svg => util_8h__incl.svg} |    0
 docs/api/doxygen/util_8h_source.html               |  110 +
 docs/api/doxygen/var_8h.html                       |   10 +-
 docs/api/doxygen/var_8h_source.html                |   79 +-
 docs/api/doxygen/vision_8h_source.html             |   52 +-
 docs/api/doxygen/vm_8h_source.html                 |    6 +-
 docs/api/doxygen/with_8h_source.html               |    2 +-
 docs/api/doxygen/x86_2bnn_8h_source.html           |   24 +-
 docs/api/doxygen/x86_2default_8h_source.html       |   13 +-
 docs/api/doxygen/x86_2injective_8h_source.html     |   15 +-
 docs/api/javadoc/allclasses-frame.html             |    2 +-
 docs/api/javadoc/allclasses-noframe.html           |    2 +-
 docs/api/javadoc/index-all.html                    |   18 +-
 docs/api/javadoc/org/apache/tvm/APIInternal.html   |    4 +-
 docs/api/javadoc/org/apache/tvm/ArgTypeCode.html   |  539 +++
 docs/api/javadoc/org/apache/tvm/Function.html      |    4 +-
 docs/api/javadoc/org/apache/tvm/TVMValue.html      |   10 +-
 .../api/javadoc/org/apache/tvm/TVMValueHandle.html |    2 +-
 .../api/javadoc/org/apache/tvm/TVMValueString.html |    4 +-
 docs/api/javadoc/org/apache/tvm/TypeCode.html      |  539 ---
 .../org/apache/tvm/class-use/ArgTypeCode.html      |  198 +
 .../javadoc/org/apache/tvm/class-use/TVMValue.html |    2 +-
 .../javadoc/org/apache/tvm/class-use/TypeCode.html |  198 -
 docs/api/javadoc/org/apache/tvm/package-frame.html |    2 +-
 .../javadoc/org/apache/tvm/package-summary.html    |    4 +-
 docs/api/javadoc/org/apache/tvm/package-tree.html  |    2 +-
 docs/api/javadoc/org/apache/tvm/package-use.html   |   20 +-
 docs/api/javadoc/overview-tree.html                |    2 +-
 docs/api/python/autotvm.html                       |    6 +-
 docs/api/python/contrib.html                       |   40 +-
 docs/api/python/driver.html                        |    2 +
 docs/api/python/error.html                         |    2 +
 docs/api/python/graph_runtime.html                 |    2 +
 docs/api/python/index.html                         |    4 +
 docs/api/python/ir.html                            |  221 +-
 docs/api/python/micro.html                         |  423 ++
 docs/api/python/ndarray.html                       |    2 +
 docs/api/python/relay/analysis.html                |   20 +-
 docs/api/python/relay/backend.html                 |   20 +-
 docs/api/python/relay/dataflow_pattern.html        | 1204 +++++
 docs/api/python/relay/frontend.html                |    2 +
 docs/api/python/relay/image.html                   |    2 +
 docs/api/python/relay/index.html                   |  310 +-
 docs/api/python/relay/nn.html                      |  111 +-
 docs/api/python/relay/testing.html                 |   80 +-
 docs/api/python/relay/transform.html               |   28 +-
 docs/api/python/relay/vision.html                  |   33 +-
 docs/api/python/rpc.html                           |   31 +-
 docs/api/python/runtime.html                       |   58 +-
 docs/api/python/target.html                        |  113 +-
 docs/api/python/te.html                            |   43 +-
 docs/api/python/tir.html                           |  199 +-
 docs/api/python/topi.html                          |  322 +-
 docs/api/python/vta/index.html                     |    4 +-
 docs/api/typedoc/assets/js/search.json             |    2 +-
 docs/api/typedoc/classes/bytestreamreader.html     |   12 +-
 docs/api/typedoc/classes/cachedcallstack.html      |   34 +-
 docs/api/typedoc/classes/dlcontext.html            |   10 +-
 docs/api/typedoc/classes/dldatatype.html           |   12 +-
 docs/api/typedoc/classes/environment.html          |   12 +-
 docs/api/typedoc/classes/ffilibrary.html           |   20 +-
 docs/api/typedoc/classes/graphruntime.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            |  346 ++
 docs/api/typedoc/enums/aynccallbackcode.html       |    4 +-
 docs/api/typedoc/enums/dldatatypecode.html         |  192 +
 docs/api/typedoc/enums/rpcserverstate.html         |   12 +-
 docs/api/typedoc/enums/sizeof.html                 |   18 +-
 docs/api/typedoc/enums/typecode.html               |  346 --
 docs/api/typedoc/index.html                        |  132 +-
 docs/api/typedoc/interfaces/disposable.html        |    2 +-
 docs/api/typedoc/interfaces/functioninfo.html      |    6 +-
 docs/api/typedoc/interfaces/libraryprovider.html   |    4 +-
 docs/dev/codebase_walkthrough.html                 |    2 +-
 docs/dev/convert_layout.html                       |    2 +-
 docs/dev/relay_add_op.html                         |    2 +-
 docs/dev/relay_add_pass.html                       |    4 +-
 docs/dev/relay_pass_infra.html                     |   12 +-
 docs/genindex.html                                 |  294 +-
 docs/index.html                                    |    2 +
 docs/langref/index.html                            |    5 +-
 docs/langref/relay_op.html                         |   37 +-
 docs/langref/relay_pattern.html                    |  268 +-
 docs/objects.inv                                   |  Bin 14238 -> 14710 bytes
 docs/py-modindex.html                              |   10 +
 docs/searchindex.js                                |    2 +-
 docs/tutorials/autotvm/sg_execution_times.html     |   14 +-
 docs/tutorials/autotvm/tune_conv2d_cuda.html       |   42 +-
 docs/tutorials/autotvm/tune_relay_arm.html         |    2 +-
 docs/tutorials/autotvm/tune_relay_cuda.html        |    2 +-
 docs/tutorials/autotvm/tune_relay_mobile_gpu.html  |    2 +-
 docs/tutorials/autotvm/tune_relay_x86.html         |    2 +-
 docs/tutorials/autotvm/tune_simple_template.html   |   20 +-
 docs/tutorials/cross_compilation_and_rpc.html      |    2 +-
 docs/tutorials/dev/low_level_custom_pass.html      |   19 +-
 docs/tutorials/dev/relay_pass_infra.html           |   10 +-
 docs/tutorials/dev/sg_execution_times.html         |    6 +-
 docs/tutorials/frontend/build_gcn.html             |    2 +-
 .../frontend/deploy_model_on_android.html          |    4 +-
 docs/tutorials/frontend/deploy_model_on_rasp.html  |    2 +-
 docs/tutorials/frontend/deploy_prequantized.html   |    4 +-
 .../frontend/deploy_prequantized_tflite.html       |   10 +-
 docs/tutorials/frontend/deploy_ssd_gluoncv.html    |    2 +-
 docs/tutorials/frontend/from_caffe2.html           |    4 +-
 docs/tutorials/frontend/from_coreml.html           |    2 +-
 docs/tutorials/frontend/from_darknet.html          |    2 +-
 docs/tutorials/frontend/from_keras.html            |    2 +-
 docs/tutorials/frontend/from_mxnet.html            |    2 +-
 docs/tutorials/frontend/from_onnx.html             |   10 +-
 docs/tutorials/frontend/from_pytorch.html          |    2 +-
 docs/tutorials/frontend/from_tensorflow.html       |    6 +-
 docs/tutorials/frontend/from_tflite.html           |    4 +-
 docs/tutorials/frontend/sg_execution_times.html    |   36 +-
 docs/tutorials/index.html                          |    2 +-
 docs/tutorials/language/reduction.html             |   16 +-
 docs/tutorials/language/scan.html                  |   22 +-
 docs/tutorials/language/schedule_primitives.html   |   34 +-
 docs/tutorials/language/sg_execution_times.html    |   18 +-
 docs/tutorials/language/tensorize.html             |   26 +-
 docs/tutorials/language/tuple_inputs.html          |   32 +-
 docs/tutorials/optimize/opt_conv_cuda.html         |    2 +-
 docs/tutorials/optimize/opt_conv_tensorcore.html   |   26 +-
 docs/tutorials/optimize/opt_gemm.html              |   30 +-
 .../optimize/opt_matmul_auto_tensorcore.html       |    7 +-
 docs/tutorials/optimize/sg_execution_times.html    |   10 +-
 docs/tutorials/relay_quick_start.html              |  104 +-
 docs/tutorials/sg_execution_times.html             |    8 +-
 docs/tutorials/topi/intro_topi.html                |  218 +-
 docs/tutorials/topi/sg_execution_times.html        |    4 +-
 docs/vta/tutorials/autotvm/sg_execution_times.html |    4 +-
 docs/vta/tutorials/autotvm/tune_relay_vta.html     |  222 +-
 .../tutorials/frontend/deploy_classification.html  |   34 +-
 docs/vta/tutorials/frontend/deploy_detection.html  |    4 +-
 .../vta/tutorials/frontend/sg_execution_times.html |    6 +-
 docs/vta/tutorials/matrix_multiply.html            |   44 +-
 docs/vta/tutorials/optimize/convolution_opt.html   |  102 +-
 .../tutorials/optimize/matrix_multiply_opt.html    |   84 +-
 .../vta/tutorials/optimize/sg_execution_times.html |    6 +-
 docs/vta/tutorials/sg_execution_times.html         |    6 +-
 docs/vta/tutorials/vta_get_started.html            |   28 +-
 1722 files changed, 87485 insertions(+), 52356 deletions(-)

diff --git a/docs/_downloads/02fc8627299fa0b05eb017773b471bfa/from_tflite.py b/docs/_downloads/02fc8627299fa0b05eb017773b471bfa/from_tflite.py
index e01a4ec..35a308c 100644
--- a/docs/_downloads/02fc8627299fa0b05eb017773b471bfa/from_tflite.py
+++ b/docs/_downloads/02fc8627299fa0b05eb017773b471bfa/from_tflite.py
@@ -128,14 +128,14 @@ input_shape = (1, 224, 224, 3)
 input_dtype = "float32"
 
 # Parse TFLite model and convert it to a Relay module
-from tvm import relay
+from tvm import relay, transform
 mod, params = relay.frontend.from_tflite(tflite_model,
                                          shape_dict={input_tensor: input_shape},
                                          dtype_dict={input_tensor: input_dtype})
 
 # Build the module against to x86 CPU
 target = "llvm"
-with relay.build_config(opt_level=3):
+with transform.PassContext(opt_level=3):
     graph, lib, params = relay.build(mod, target, params=params)
 
 ######################################################################
diff --git a/docs/_downloads/0c30ce88b67b0e8d46494348ab36c9fb/from_tflite.ipynb b/docs/_downloads/0c30ce88b67b0e8d46494348ab36c9fb/from_tflite.ipynb
index f9ff631..ff25080 100644
--- a/docs/_downloads/0c30ce88b67b0e8d46494348ab36c9fb/from_tflite.ipynb
+++ b/docs/_downloads/0c30ce88b67b0e8d46494348ab36c9fb/from_tflite.ipynb
@@ -87,7 +87,7 @@
       },
       "outputs": [],
       "source": [
-        "# TFLite input tensor name, shape and type\ninput_tensor = \"input\"\ninput_shape = (1, 224, 224, 3)\ninput_dtype = \"float32\"\n\n# Parse TFLite model and convert it to a Relay module\nfrom tvm import relay\nmod, params = relay.frontend.from_tflite(tflite_model,\n                                         shape_dict={input_tensor: input_shape},\n                                         dtype_dict={input_tensor: input_dtype})\n\n# Build the module against to x86 CPU\ntarget = \"ll [...]
+        "# TFLite input tensor name, shape and type\ninput_tensor = \"input\"\ninput_shape = (1, 224, 224, 3)\ninput_dtype = \"float32\"\n\n# Parse TFLite model and convert it to a Relay module\nfrom tvm import relay, transform\nmod, params = relay.frontend.from_tflite(tflite_model,\n                                         shape_dict={input_tensor: input_shape},\n                                         dtype_dict={input_tensor: input_dtype})\n\n# Build the module against to x86 CPU\nta [...]
       ]
     },
     {
diff --git a/docs/_downloads/10e16681be542cc483fa89e9b4678a27/opt_matmul_auto_tensorcore.py b/docs/_downloads/10e16681be542cc483fa89e9b4678a27/opt_matmul_auto_tensorcore.py
index 50cc1eb..7dbd475 100644
--- a/docs/_downloads/10e16681be542cc483fa89e9b4678a27/opt_matmul_auto_tensorcore.py
+++ b/docs/_downloads/10e16681be542cc483fa89e9b4678a27/opt_matmul_auto_tensorcore.py
@@ -287,10 +287,9 @@ def tune_and_evaluate(M, N, L, dtype, layout):
   print(best_config)
   with autotvm.apply_history_best('matmul.log'):
     with tvm.target.create("cuda"):
-        with tvm.target.build_config():
-            s, arg_bufs = test_gemm(N, L, M, dtype, layout)
-            print(tvm.lower(s, arg_bufs, simple_mode=True))
-            func = tvm.build(s, arg_bufs)
+          s, arg_bufs = test_gemm(N, L, M, dtype, layout)
+          print(tvm.lower(s, arg_bufs, simple_mode=True))
+          func = tvm.build(s, arg_bufs)
   dev_module = func.imported_modules[0]
   print(dev_module.get_source())
 
diff --git a/docs/_downloads/1604460dde2b82fb9db809bb388890f8/deploy_prequantized_tflite.ipynb b/docs/_downloads/1604460dde2b82fb9db809bb388890f8/deploy_prequantized_tflite.ipynb
index 31f4c53..3c67a09 100644
--- a/docs/_downloads/1604460dde2b82fb9db809bb388890f8/deploy_prequantized_tflite.ipynb
+++ b/docs/_downloads/1604460dde2b82fb9db809bb388890f8/deploy_prequantized_tflite.ipynb
@@ -15,7 +15,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "\nDeploy a Framework-prequantized Model with TVM - Part 3 (TFLite)\n================================================================\n**Author**: `Siju Samuel <https://github.com/siju-samuel>`_\nWelcome to part 3 of the Deploy Framework-Prequantized Model with TVM tutorial.\nIn this part, we will start with a Quantized TFLite graph and then compile and execute it via TVM.\n\n\nFor more details on quantizing the model using TFLite, readers are encouraged to\ngo through `Convertin [...]
+        "\nDeploy a Framework-prequantized Model with TVM - Part 3 (TFLite)\n================================================================\n**Author**: `Siju Samuel <https://github.com/siju-samuel>`_\n\nWelcome to part 3 of the Deploy Framework-Prequantized Model with TVM tutorial.\nIn this part, we will start with a Quantized TFLite graph and then compile and execute it via TVM.\n\n\nFor more details on quantizing the model using TFLite, readers are encouraged to\ngo through `Convert [...]
       ]
     },
     {
@@ -223,7 +223,7 @@
       },
       "outputs": [],
       "source": [
-        "target = 'llvm'\nwith relay.build_config(opt_level=3):\n    graph, lib, params = relay.build_module.build(mod, target=target,\n                                                  params=params)"
+        "target = 'llvm'\nwith tvm.transform.PassContext(opt_level=3):\n    graph, lib, params = relay.build_module.build(mod, target=target,\n                                                  params=params)"
       ]
     },
     {
diff --git a/docs/_downloads/272a5a893d007658546dc0eaf0a7aeed/tune_relay_cuda.py b/docs/_downloads/272a5a893d007658546dc0eaf0a7aeed/tune_relay_cuda.py
index 4195075..a6fe45b 100644
--- a/docs/_downloads/272a5a893d007658546dc0eaf0a7aeed/tune_relay_cuda.py
+++ b/docs/_downloads/272a5a893d007658546dc0eaf0a7aeed/tune_relay_cuda.py
@@ -222,7 +222,7 @@ def tune_and_evaluate(tuning_opt):
     # compile kernels with history best records
     with autotvm.apply_history_best(log_file):
         print("Compile...")
-        with relay.build_config(opt_level=3):
+        with tvm.transform.PassContext(opt_level=3):
             graph, lib, params = relay.build_module.build(
                 mod, target=target, params=params)
 
diff --git a/docs/_downloads/289640e7ded85c57931fc0537d443c5f/relay_pass_infra.ipynb b/docs/_downloads/289640e7ded85c57931fc0537d443c5f/relay_pass_infra.ipynb
index 12bb90f..bc8691a 100644
--- a/docs/_downloads/289640e7ded85c57931fc0537d443c5f/relay_pass_infra.ipynb
+++ b/docs/_downloads/289640e7ded85c57931fc0537d443c5f/relay_pass_infra.ipynb
@@ -152,7 +152,7 @@
       },
       "outputs": [],
       "source": [
-        "with relay.build_config(opt_level=3):\n    mod2 = seq(mod)\nprint(mod2)"
+        "with tvm.transform.PassContext(opt_level=3):\n    mod2 = seq(mod)\nprint(mod2)"
       ]
     },
     {
@@ -170,7 +170,7 @@
       },
       "outputs": [],
       "source": [
-        "with relay.build_config(opt_level=3, disabled_pass=[\"EliminateCommonSubexpr\"]):\n    mod3 = seq(mod)\nprint(mod3)"
+        "with tvm.transform.PassContext(opt_level=3, disabled_pass=[\"EliminateCommonSubexpr\"]):\n    mod3 = seq(mod)\nprint(mod3)"
       ]
     },
     {
@@ -188,7 +188,7 @@
       },
       "outputs": [],
       "source": [
-        "with relay.build_config(opt_level=3):\n    mod4 = seq(mod)\nprint(mod4)\n\nseq1 = tvm.transform.Sequential([relay.transform.AlterOpLayout()])\nwith relay.build_config(opt_level=3):\n    with tvm.target.create(\"llvm\"):\n        mod5 = seq1(mod)\nprint(mod5)"
+        "with tvm.transform.PassContext(opt_level=3):\n    mod4 = seq(mod)\nprint(mod4)\n\nseq1 = tvm.transform.Sequential([relay.transform.AlterOpLayout()])\nwith tvm.transform.PassContext(opt_level=3):\n    with tvm.target.create(\"llvm\"):\n        mod5 = seq1(mod)\nprint(mod5)"
       ]
     },
     {
@@ -224,7 +224,7 @@
       },
       "outputs": [],
       "source": [
-        "f = example()\nmod = tvm.IRModule.from_expr(f)\nseq = tvm.transform.Sequential([relay.transform.FoldConstant(),\n                                tvm.transform.PrintIR(),\n                                relay.transform.EliminateCommonSubexpr(),\n                                relay.transform.FuseOps(),\n                                tvm.transform.PrintIR()])\nwith relay.build_config(opt_level=3):\n    mod = seq(mod)\n\nprint(\"done\")"
+        "f = example()\nmod = tvm.IRModule.from_expr(f)\nseq = tvm.transform.Sequential([relay.transform.FoldConstant(),\n                                tvm.transform.PrintIR(),\n                                relay.transform.EliminateCommonSubexpr(),\n                                relay.transform.FuseOps(),\n                                tvm.transform.PrintIR()])\nwith tvm.transform.PassContext(opt_level=3):\n    mod = seq(mod)\n\nprint(\"done\")"
       ]
     }
   ],
diff --git a/docs/_downloads/2c0ed53a9ebd68caf76cd8235fae2711/tune_relay_mobile_gpu.ipynb b/docs/_downloads/2c0ed53a9ebd68caf76cd8235fae2711/tune_relay_mobile_gpu.ipynb
index ddd7c4f..eacfead 100644
--- a/docs/_downloads/2c0ed53a9ebd68caf76cd8235fae2711/tune_relay_mobile_gpu.ipynb
+++ b/docs/_downloads/2c0ed53a9ebd68caf76cd8235fae2711/tune_relay_mobile_gpu.ipynb
@@ -126,7 +126,7 @@
       },
       "outputs": [],
       "source": [
-        "def tune_and_evaluate(tuning_opt):\n    # extract workloads from relay program\n    print(\"Extract tasks...\")\n    mod, params, input_shape, _ = get_network(network, batch_size=1)\n    tasks = autotvm.task.extract_from_program(mod[\"main\"],\n                                              target=target,\n                                              target_host=target_host,\n                                              params=params,\n                                           [...]
+        "def tune_and_evaluate(tuning_opt):\n    # extract workloads from relay program\n    print(\"Extract tasks...\")\n    mod, params, input_shape, _ = get_network(network, batch_size=1)\n    tasks = autotvm.task.extract_from_program(mod[\"main\"],\n                                              target=target,\n                                              target_host=target_host,\n                                              params=params,\n                                           [...]
       ]
     },
     {
diff --git a/docs/_downloads/2e974b05b6d59fcf944f96d27106b994/from_keras.ipynb b/docs/_downloads/2e974b05b6d59fcf944f96d27106b994/from_keras.ipynb
index 54e5370..b78d755 100644
--- a/docs/_downloads/2e974b05b6d59fcf944f96d27106b994/from_keras.ipynb
+++ b/docs/_downloads/2e974b05b6d59fcf944f96d27106b994/from_keras.ipynb
@@ -80,7 +80,7 @@
       },
       "outputs": [],
       "source": [
-        "shape_dict = {'input_1': data.shape}\nmod, params = relay.frontend.from_keras(keras_resnet50, shape_dict)\n# compile the model\ntarget = 'cuda'\nctx = tvm.gpu(0)\nwith relay.build_config(opt_level=3):\n    executor = relay.build_module.create_executor('graph', mod, ctx, target)"
+        "shape_dict = {'input_1': data.shape}\nmod, params = relay.frontend.from_keras(keras_resnet50, shape_dict)\n# compile the model\ntarget = 'cuda'\nctx = tvm.gpu(0)\nwith tvm.transform.PassContext(opt_level=3):\n    executor = relay.build_module.create_executor('graph', mod, ctx, target)"
       ]
     },
     {
diff --git a/docs/_downloads/2f6dcf56b15f857f94b6d320c1ace6e5/from_coreml.ipynb b/docs/_downloads/2f6dcf56b15f857f94b6d320c1ace6e5/from_coreml.ipynb
index 6f98860..abb835c 100644
--- a/docs/_downloads/2f6dcf56b15f857f94b6d320c1ace6e5/from_coreml.ipynb
+++ b/docs/_downloads/2f6dcf56b15f857f94b6d320c1ace6e5/from_coreml.ipynb
@@ -80,7 +80,7 @@
       },
       "outputs": [],
       "source": [
-        "target = 'llvm'\nshape_dict = {'image': x.shape}\n\n# Parse CoreML model and convert into Relay computation graph\nmod, params = relay.frontend.from_coreml(mlmodel, shape_dict)\n\nwith relay.build_config(opt_level=3):\n    graph, lib, params = relay.build(mod,\n                                     target,\n                                     params=params)"
+        "target = 'llvm'\nshape_dict = {'image': x.shape}\n\n# Parse CoreML model and convert into Relay computation graph\nmod, params = relay.frontend.from_coreml(mlmodel, shape_dict)\n\nwith tvm.transform.PassContext(opt_level=3):\n    graph, lib, params = relay.build(mod,\n                                     target,\n                                     params=params)"
       ]
     },
     {
diff --git a/docs/_downloads/30015213c2882505d466865fafaed52d/from_caffe2.ipynb b/docs/_downloads/30015213c2882505d466865fafaed52d/from_caffe2.ipynb
index 70a7e7f..03cd570 100644
--- a/docs/_downloads/30015213c2882505d466865fafaed52d/from_caffe2.ipynb
+++ b/docs/_downloads/30015213c2882505d466865fafaed52d/from_caffe2.ipynb
@@ -69,7 +69,7 @@
       },
       "outputs": [],
       "source": [
-        "# Caffe2 input tensor name, shape and type\ninput_name = resnet50.predict_net.op[0].input[0]\nshape_dict = {input_name: data.shape}\ndtype_dict = {input_name: data.dtype}\n\n# parse Caffe2 model and convert into Relay computation graph\nfrom tvm import relay\nmod, params = relay.frontend.from_caffe2(resnet50.init_net, resnet50.predict_net, shape_dict, dtype_dict)\n\n# compile the model\n# target x86 CPU\ntarget = 'llvm'\nwith relay.build_config(opt_level=3):\n    graph, lib, par [...]
+        "# Caffe2 input tensor name, shape and type\ninput_name = resnet50.predict_net.op[0].input[0]\nshape_dict = {input_name: data.shape}\ndtype_dict = {input_name: data.dtype}\n\n# parse Caffe2 model and convert into Relay computation graph\nfrom tvm import relay, transform\nmod, params = relay.frontend.from_caffe2(resnet50.init_net, resnet50.predict_net, shape_dict, dtype_dict)\n\n# compile the model\n# target x86 CPU\ntarget = 'llvm'\nwith transform.PassContext(opt_level=3):\n    g [...]
       ]
     },
     {
diff --git a/docs/_downloads/38606228ff7130fbd6473b7c0625ddcd/deploy_model_on_android.ipynb b/docs/_downloads/38606228ff7130fbd6473b7c0625ddcd/deploy_model_on_android.ipynb
index 6a993e9..5dfb414 100644
--- a/docs/_downloads/38606228ff7130fbd6473b7c0625ddcd/deploy_model_on_android.ipynb
+++ b/docs/_downloads/38606228ff7130fbd6473b7c0625ddcd/deploy_model_on_android.ipynb
@@ -119,7 +119,7 @@
       },
       "outputs": [],
       "source": [
-        "local_demo = True\n\n# by default on CPU target will execute.\n# select 'cpu', 'opencl' and 'vulkan'\ntest_target = 'cpu'\n\n# Change target configuration.\n# Run `adb shell cat /proc/cpuinfo` to find the arch.\narch = 'arm64'\ntarget = 'llvm -target=%s-linux-android' % arch\ntarget_host = None\n\nif local_demo:\n    target_host = None\n    target = 'llvm'\nelif test_target == 'opencl':\n    target_host = target\n    target = 'opencl'\nelif test_target == 'vulkan':\n    target_h [...]
+        "local_demo = True\n\n# by default on CPU target will execute.\n# select 'cpu', 'opencl' and 'vulkan'\ntest_target = 'cpu'\n\n# Change target configuration.\n# Run `adb shell cat /proc/cpuinfo` to find the arch.\narch = 'arm64'\ntarget = 'llvm -target=%s-linux-android' % arch\ntarget_host = None\n\nif local_demo:\n    target_host = None\n    target = 'llvm'\nelif test_target == 'opencl':\n    target_host = target\n    target = 'opencl'\nelif test_target == 'vulkan':\n    target_h [...]
       ]
     },
     {
diff --git a/docs/_downloads/3961fdfa7abff1b6dc996faa43b4c40f/deploy_model_on_android.py b/docs/_downloads/3961fdfa7abff1b6dc996faa43b4c40f/deploy_model_on_android.py
index 17ec9cb..bc5b523 100644
--- a/docs/_downloads/3961fdfa7abff1b6dc996faa43b4c40f/deploy_model_on_android.py
+++ b/docs/_downloads/3961fdfa7abff1b6dc996faa43b4c40f/deploy_model_on_android.py
@@ -263,7 +263,7 @@ input_name = 'input_1'
 shape_dict = {input_name: x.shape}
 mod, params = relay.frontend.from_keras(keras_mobilenet_v2, shape_dict)
 
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     graph, lib, params = relay.build(mod, target=target,
                                      target_host=target_host, params=params)
 
diff --git a/docs/_downloads/39e437b36375e97c049f64073eade7a6/relay_quick_start.py b/docs/_downloads/39e437b36375e97c049f64073eade7a6/relay_quick_start.py
index b2174a0..e52a99a 100644
--- a/docs/_downloads/39e437b36375e97c049f64073eade7a6/relay_quick_start.py
+++ b/docs/_downloads/39e437b36375e97c049f64073eade7a6/relay_quick_start.py
@@ -96,7 +96,7 @@ print(mod.astext(show_meta_data=False))
 
 opt_level = 3
 target = tvm.target.cuda()
-with relay.build_config(opt_level=opt_level):
+with tvm.transform.PassContext(opt_level=opt_level):
     graph, lib, params = relay.build(mod, target, params=params)
 
 #####################################################################
diff --git a/docs/_downloads/48bd751ebaae08fce134e559f86a25cc/tune_relay_vta.ipynb b/docs/_downloads/48bd751ebaae08fce134e559f86a25cc/tune_relay_vta.ipynb
index 17b3109..2e10e0a 100644
--- a/docs/_downloads/48bd751ebaae08fce134e559f86a25cc/tune_relay_vta.ipynb
+++ b/docs/_downloads/48bd751ebaae08fce134e559f86a25cc/tune_relay_vta.ipynb
@@ -51,7 +51,7 @@
       },
       "outputs": [],
       "source": [
-        "def compile_network(env, target, model, start_pack, stop_pack):\n\n    # Populate the shape and data type dictionary\n    dtype_dict = {\"data\": 'float32'}\n    shape_dict = {\"data\": (env.BATCH, 3, 224, 224)}\n\n    # Get off the shelf gluon model, and convert to relay\n    gluon_model = vision.get_model(model, pretrained=True)\n    mod, params = relay.frontend.from_mxnet(gluon_model, shape_dict)\n\n    # Update shape and type dictionary\n    shape_dict.update({k: v.shape for [...]
+        "def compile_network(env, target, model, start_pack, stop_pack):\n\n    # Populate the shape and data type dictionary\n    dtype_dict = {\"data\": 'float32'}\n    shape_dict = {\"data\": (env.BATCH, 3, 224, 224)}\n\n    # Get off the shelf gluon model, and convert to relay\n    gluon_model = vision.get_model(model, pretrained=True)\n    mod, params = relay.frontend.from_mxnet(gluon_model, shape_dict)\n\n    # Update shape and type dictionary\n    shape_dict.update({k: v.shape for [...]
       ]
     },
     {
@@ -144,7 +144,7 @@
       },
       "outputs": [],
       "source": [
-        "def tune_and_evaluate(tuning_opt):\n\n    if env.TARGET != \"sim\":\n        # Get remote from fleet node\n        remote = autotvm.measure.request_remote(env.TARGET,\n                                                tracker_host,\n                                                tracker_port,\n                                                timeout=10000)\n        # Reconfigure the JIT runtime and FPGA.\n        vta.reconfig_runtime(remote)\n        vta.program_fpga(remote, bitst [...]
+        "def tune_and_evaluate(tuning_opt):\n\n    if env.TARGET != \"sim\":\n        # Get remote from fleet node\n        remote = autotvm.measure.request_remote(env.TARGET,\n                                                tracker_host,\n                                                tracker_port,\n                                                timeout=10000)\n        # Reconfigure the JIT runtime and FPGA.\n        vta.reconfig_runtime(remote)\n        vta.program_fpga(remote, bitst [...]
       ]
     },
     {
diff --git a/docs/_downloads/50b174352ccf0a0defcbd8e6b40145e2/from_tensorflow.py b/docs/_downloads/50b174352ccf0a0defcbd8e6b40145e2/from_tensorflow.py
index 0ebd733..b7b3d69 100644
--- a/docs/_downloads/50b174352ccf0a0defcbd8e6b40145e2/from_tensorflow.py
+++ b/docs/_downloads/50b174352ccf0a0defcbd8e6b40145e2/from_tensorflow.py
@@ -144,7 +144,7 @@ print("Tensorflow protobuf imported to relay frontend.")
 #   params: final params after compilation.
 #   lib: target library which can be deployed on target with TVM runtime.
 
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     graph, lib, params = relay.build(mod,
                                      target=target,
                                      target_host=target_host,
diff --git a/docs/_downloads/52b04835c256bb81bbf4187f18950a0a/relay_pass_infra.py b/docs/_downloads/52b04835c256bb81bbf4187f18950a0a/relay_pass_infra.py
index 980d96c..df40733 100644
--- a/docs/_downloads/52b04835c256bb81bbf4187f18950a0a/relay_pass_infra.py
+++ b/docs/_downloads/52b04835c256bb81bbf4187f18950a0a/relay_pass_infra.py
@@ -160,7 +160,7 @@ print(mod1)
 # however, provides a configuration interface
 # for users to customize the optimization level that they want to execute.
 
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     mod2 = seq(mod)
 print(mod2)
 
@@ -173,7 +173,7 @@ print(mod2)
 # EliminateCommonSubexpr as following. The printed module will again show two
 # identical addition operations.
 
-with relay.build_config(opt_level=3, disabled_pass=["EliminateCommonSubexpr"]):
+with tvm.transform.PassContext(opt_level=3, disabled_pass=["EliminateCommonSubexpr"]):
     mod3 = seq(mod)
 print(mod3)
 
@@ -182,12 +182,12 @@ print(mod3)
 # provides a means to make pass target-aware. For example, the layout
 # alteration pass falls in such category.
 
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     mod4 = seq(mod)
 print(mod4)
 
 seq1 = tvm.transform.Sequential([relay.transform.AlterOpLayout()])
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     with tvm.target.create("llvm"):
         mod5 = seq1(mod)
 print(mod5)
@@ -242,7 +242,7 @@ seq = tvm.transform.Sequential([relay.transform.FoldConstant(),
                                 relay.transform.EliminateCommonSubexpr(),
                                 relay.transform.FuseOps(),
                                 tvm.transform.PrintIR()])
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     mod = seq(mod)
 
 print("done")
diff --git a/docs/_downloads/5c443f88ea44ce77c5ccade429af6e74/deploy_prequantized_tflite.py b/docs/_downloads/5c443f88ea44ce77c5ccade429af6e74/deploy_prequantized_tflite.py
index 3cdd423..ecd283a 100644
--- a/docs/_downloads/5c443f88ea44ce77c5ccade429af6e74/deploy_prequantized_tflite.py
+++ b/docs/_downloads/5c443f88ea44ce77c5ccade429af6e74/deploy_prequantized_tflite.py
@@ -18,6 +18,7 @@
 Deploy a Framework-prequantized Model with TVM - Part 3 (TFLite)
 ================================================================
 **Author**: `Siju Samuel <https://github.com/siju-samuel>`_
+
 Welcome to part 3 of the Deploy Framework-Prequantized Model with TVM tutorial.
 In this part, we will start with a Quantized TFLite graph and then compile and execute it via TVM.
 
@@ -197,7 +198,7 @@ mod, params = relay.frontend.from_tflite(tflite_model,
 # Lets now the compile the Relay module. We use the "llvm" target here. Please replace it with the
 # target platform that you are interested in.
 target = 'llvm'
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     graph, lib, params = relay.build_module.build(mod, target=target,
                                                   params=params)
 
diff --git a/docs/_downloads/612f9e42b0247df5c8ab277534e2af65/tune_relay_vta.py b/docs/_downloads/612f9e42b0247df5c8ab277534e2af65/tune_relay_vta.py
index 571dde6..a92b1ee 100644
--- a/docs/_downloads/612f9e42b0247df5c8ab277534e2af65/tune_relay_vta.py
+++ b/docs/_downloads/612f9e42b0247df5c8ab277534e2af65/tune_relay_vta.py
@@ -92,7 +92,7 @@ def compile_network(env, target, model, start_pack, stop_pack):
 
     # Perform quantization in Relay
     # Note: We set opt_level to 3 in order to fold batch norm
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         with relay.quantize.qconfig(global_scale=8.0, skip_conv_layers=[0]):
             mod = relay.quantize.quantize(mod, params=params)
 
@@ -392,19 +392,19 @@ def tune_and_evaluate(tuning_opt):
     with autotvm.tophub.context(target, extra_files=[log_file]):
         # Compile network
         print("Compile...")
-        with relay.build_config(opt_level=3, disabled_pass={"AlterOpLayout"}):
-            if target.device_name != "vta":
+        if target.device_name != "vta":
+            with tvm.transform.PassContext(opt_level=3, disabled_pass={"AlterOpLayout"}):
                 graph, lib, params = relay.build(relay_prog,
-                                                 target=target,
-                                                 params=params,
-                                                 target_host=env.target_host)
-            else:
-                with vta.build_config():
-                    graph, lib, params = relay.build(
-                        relay_prog,
-                        target=target,
-                        params=params,
-                        target_host=env.target_host)
+                                                target=target,
+                                                params=params,
+                                                target_host=env.target_host)
+        else:
+            with vta.build_config(opt_level=3, disabled_pass={"AlterOpLayout"}):
+                graph, lib, params = relay.build(
+                    relay_prog,
+                    target=target,
+                    params=params,
+                    target_host=env.target_host)
 
         # Export library
         print("Upload...")
diff --git a/docs/_downloads/65bd9927a152de6eed3444185b24287f/tensorize.ipynb b/docs/_downloads/65bd9927a152de6eed3444185b24287f/tensorize.ipynb
index 49493fe..6ce0db4 100644
--- a/docs/_downloads/65bd9927a152de6eed3444185b24287f/tensorize.ipynb
+++ b/docs/_downloads/65bd9927a152de6eed3444185b24287f/tensorize.ipynb
@@ -80,7 +80,7 @@
       },
       "outputs": [],
       "source": [
-        "def intrin_gemv(m, l):\n    a = te.placeholder((l,), name='a')\n    b = te.placeholder((m, l), name='b')\n    k = te.reduce_axis((0, l), name='k')\n    c = te.compute((m,), lambda i: te.sum(a[k] * b[i, k], axis=k), name='c')\n    Ab = tvm.tir.decl_buffer(a.shape, a.dtype,\n                         name=\"A\",\n                         offset_factor=1,\n                         strides=[1])\n    Bb = tvm.tir.decl_buffer(b.shape, b.dtype,\n                         name=\"B\",\n    [...]
+        "def intrin_gemv(m, l):\n    a = te.placeholder((l,), name='a')\n    b = te.placeholder((m, l), name='b')\n    k = te.reduce_axis((0, l), name='k')\n    c = te.compute((m,), lambda i: te.sum(a[k] * b[i, k], axis=k), name='c')\n    Ab = tvm.tir.decl_buffer(a.shape, a.dtype,\n                         name=\"A\",\n                         offset_factor=1,\n                         strides=[1])\n    Bb = tvm.tir.decl_buffer(b.shape, b.dtype,\n                         name=\"B\",\n    [...]
       ]
     },
     {
@@ -188,7 +188,7 @@
       },
       "outputs": [],
       "source": [
-        "def gemv_impl():\n    cc_code = \"\"\"\n      extern \"C\" int gemv_update(float *cc, float *aa, float *bb, int m, int l, int stride) {\n        for (int i = 0; i < m; ++i) {\n            for (int j = 0; j < l; ++j) {\n                cc[i] += aa[j] * bb[i * stride + j];\n            }\n        }\n        return 0;\n      }\n      extern \"C\" int gemv_reset(float *cc, int m) {\n        for (int i = 0; i < m; ++i) {\n            cc[i] = 0.0;\n        }\n        return 0;\n       [...]
+        "def gemv_impl():\n    cc_code = \"\"\"\n      extern \"C\" int gemv_update(float *cc, float *aa, float *bb, int m, int l, int stride) {\n        for (int i = 0; i < m; ++i) {\n            for (int j = 0; j < l; ++j) {\n                cc[i] += aa[j] * bb[i * stride + j];\n            }\n        }\n        return 0;\n      }\n      extern \"C\" int gemv_reset(float *cc, int m) {\n        for (int i = 0; i < m; ++i) {\n            cc[i] = 0.0;\n        }\n        return 0;\n       [...]
       ]
     },
     {
diff --git a/docs/_downloads/66258823cf03d1875c9ea84a82131101/deploy_detection.ipynb b/docs/_downloads/66258823cf03d1875c9ea84a82131101/deploy_detection.ipynb
index 372bb0a..8ce07ae 100644
--- a/docs/_downloads/66258823cf03d1875c9ea84a82131101/deploy_detection.ipynb
+++ b/docs/_downloads/66258823cf03d1875c9ea84a82131101/deploy_detection.ipynb
@@ -123,7 +123,7 @@
       },
       "outputs": [],
       "source": [
-        "# Load pre-configured AutoTVM schedules\nwith autotvm.tophub.context(target):\n    net = __darknetffi__.dlopen(darknet_lib_path).load_network(cfg_path.encode('utf-8'),\n                                                               weights_path.encode('utf-8'),\n                                                               0)\n    dshape = (env.BATCH, net.c, net.h, net.w)\n    dtype = 'float32'\n\n    # Measure build start time\n    build_start = time.time()\n\n    # Start fron [...]
+        "# Load pre-configured AutoTVM schedules\nwith autotvm.tophub.context(target):\n    net = __darknetffi__.dlopen(darknet_lib_path).load_network(cfg_path.encode('utf-8'),\n                                                               weights_path.encode('utf-8'),\n                                                               0)\n    dshape = (env.BATCH, net.c, net.h, net.w)\n    dtype = 'float32'\n\n    # Measure build start time\n    build_start = time.time()\n\n    # Start fron [...]
       ]
     },
     {
diff --git a/docs/_downloads/696dd37904ef92773435ca321ff41bfb/from_onnx.py b/docs/_downloads/696dd37904ef92773435ca321ff41bfb/from_onnx.py
index 766451c..9973a08 100644
--- a/docs/_downloads/696dd37904ef92773435ca321ff41bfb/from_onnx.py
+++ b/docs/_downloads/696dd37904ef92773435ca321ff41bfb/from_onnx.py
@@ -74,7 +74,7 @@ input_name = '1'
 shape_dict = {input_name: x.shape}
 mod, params = relay.frontend.from_onnx(onnx_model, shape_dict)
 
-with relay.build_config(opt_level=1):
+with tvm.transform.PassContext(opt_level=1):
     intrp = relay.build_module.create_executor('graph', mod, tvm.cpu(0), target)
 
 ######################################################################
diff --git a/docs/_downloads/6c8a9d3bc4c689f8680a968349965ee5/from_pytorch.ipynb b/docs/_downloads/6c8a9d3bc4c689f8680a968349965ee5/from_pytorch.ipynb
index 6c66225..30ff482 100644
--- a/docs/_downloads/6c8a9d3bc4c689f8680a968349965ee5/from_pytorch.ipynb
+++ b/docs/_downloads/6c8a9d3bc4c689f8680a968349965ee5/from_pytorch.ipynb
@@ -98,7 +98,7 @@
       },
       "outputs": [],
       "source": [
-        "target = 'llvm'\ntarget_host = 'llvm'\nctx = tvm.cpu(0)\nwith relay.build_config(opt_level=3):\n    graph, lib, params = relay.build(mod,\n                                     target=target,\n                                     target_host=target_host,\n                                     params=params)"
+        "target = 'llvm'\ntarget_host = 'llvm'\nctx = tvm.cpu(0)\nwith tvm.transform.PassContext(opt_level=3):\n    graph, lib, params = relay.build(mod,\n                                     target=target,\n                                     target_host=target_host,\n                                     params=params)"
       ]
     },
     {
diff --git a/docs/_downloads/70d345c5409f99cb5de9dc44f147ff6f/build_gcn.py b/docs/_downloads/70d345c5409f99cb5de9dc44f147ff6f/build_gcn.py
index 6ac518e..19719a5 100644
--- a/docs/_downloads/70d345c5409f99cb5de9dc44f147ff6f/build_gcn.py
+++ b/docs/_downloads/70d345c5409f99cb5de9dc44f147ff6f/build_gcn.py
@@ -336,7 +336,7 @@ func = relay.build_module.bind_params_by_name(func, params)
 mod = tvm.IRModule()
 mod["main"] = func
 # Build with Relay
-with relay.build_config(opt_level=0): # Currently only support opt_level=0
+with tvm.transform.PassContext(opt_level=0): # Currently only support opt_level=0
     graph, lib, params = relay.build(mod, target, params=params)
 
 # Generate graph runtime
diff --git a/docs/_downloads/72871483681951fd0400ddc905113f11/from_caffe2.py b/docs/_downloads/72871483681951fd0400ddc905113f11/from_caffe2.py
index 8fad80d..5988525 100644
--- a/docs/_downloads/72871483681951fd0400ddc905113f11/from_caffe2.py
+++ b/docs/_downloads/72871483681951fd0400ddc905113f11/from_caffe2.py
@@ -82,13 +82,13 @@ shape_dict = {input_name: data.shape}
 dtype_dict = {input_name: data.dtype}
 
 # parse Caffe2 model and convert into Relay computation graph
-from tvm import relay
+from tvm import relay, transform
 mod, params = relay.frontend.from_caffe2(resnet50.init_net, resnet50.predict_net, shape_dict, dtype_dict)
 
 # compile the model
 # target x86 CPU
 target = 'llvm'
-with relay.build_config(opt_level=3):
+with transform.PassContext(opt_level=3):
     graph, lib, params = relay.build(mod, target, params=params)
 
 ######################################################################
diff --git a/docs/_downloads/739deb9ab034a5315ce6ba6bf7e5ff44/tune_relay_cuda.ipynb b/docs/_downloads/739deb9ab034a5315ce6ba6bf7e5ff44/tune_relay_cuda.ipynb
index b7e4b22..f9d16a8 100644
--- a/docs/_downloads/739deb9ab034a5315ce6ba6bf7e5ff44/tune_relay_cuda.ipynb
+++ b/docs/_downloads/739deb9ab034a5315ce6ba6bf7e5ff44/tune_relay_cuda.ipynb
@@ -112,7 +112,7 @@
       },
       "outputs": [],
       "source": [
-        "def tune_and_evaluate(tuning_opt):\n    # extract workloads from relay program\n    print(\"Extract tasks...\")\n    mod, params, input_shape, out_shape = get_network(network, batch_size=1)\n    tasks = autotvm.task.extract_from_program(mod[\"main\"], target=target,\n                                              params=params,\n                                              ops=(relay.op.get(\"nn.conv2d\"),))\n\n    # run tuning tasks\n    print(\"Tuning...\")\n    tune_tasks(tas [...]
+        "def tune_and_evaluate(tuning_opt):\n    # extract workloads from relay program\n    print(\"Extract tasks...\")\n    mod, params, input_shape, out_shape = get_network(network, batch_size=1)\n    tasks = autotvm.task.extract_from_program(mod[\"main\"], target=target,\n                                              params=params,\n                                              ops=(relay.op.get(\"nn.conv2d\"),))\n\n    # run tuning tasks\n    print(\"Tuning...\")\n    tune_tasks(tas [...]
       ]
     },
     {
diff --git a/docs/_downloads/78da213eae381b8ff94cc356ee7c5423/deploy_prequantized.ipynb b/docs/_downloads/78da213eae381b8ff94cc356ee7c5423/deploy_prequantized.ipynb
index 2927b78..4608363 100644
--- a/docs/_downloads/78da213eae381b8ff94cc356ee7c5423/deploy_prequantized.ipynb
+++ b/docs/_downloads/78da213eae381b8ff94cc356ee7c5423/deploy_prequantized.ipynb
@@ -51,7 +51,7 @@
       },
       "outputs": [],
       "source": [
-        "def get_transform():\n    import torchvision.transforms as transforms\n    normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],\n                                     std=[0.229, 0.224, 0.225])\n    return transforms.Compose([\n            transforms.Resize(256),\n            transforms.CenterCrop(224),\n            transforms.ToTensor(),\n            normalize,\n        ])\n\n\ndef get_real_image(im_height, im_width):\n    img_url = 'https://github.com/dmlc/mxnet.js/blob [...]
+        "def get_transform():\n    import torchvision.transforms as transforms\n    normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],\n                                     std=[0.229, 0.224, 0.225])\n    return transforms.Compose([\n            transforms.Resize(256),\n            transforms.CenterCrop(224),\n            transforms.ToTensor(),\n            normalize,\n        ])\n\n\ndef get_real_image(im_height, im_width):\n    img_url = 'https://github.com/dmlc/mxnet.js/blob [...]
       ]
     },
     {
diff --git a/docs/_downloads/8246644805c8dfcb0b33ca356cc1fafc/deploy_ssd_gluoncv.ipynb b/docs/_downloads/8246644805c8dfcb0b33ca356cc1fafc/deploy_ssd_gluoncv.ipynb
index b4e2fe2..11356f1 100644
--- a/docs/_downloads/8246644805c8dfcb0b33ca356cc1fafc/deploy_ssd_gluoncv.ipynb
+++ b/docs/_downloads/8246644805c8dfcb0b33ca356cc1fafc/deploy_ssd_gluoncv.ipynb
@@ -80,7 +80,7 @@
       },
       "outputs": [],
       "source": [
-        "block = model_zoo.get_model(model_name, pretrained=True)\n\ndef build(target):\n    mod, params = relay.frontend.from_mxnet(block, {\"data\": dshape})\n    with relay.build_config(opt_level=3):\n        graph, lib, params = relay.build(mod, target, params=params)\n    return graph, lib, params"
+        "block = model_zoo.get_model(model_name, pretrained=True)\n\ndef build(target):\n    mod, params = relay.frontend.from_mxnet(block, {\"data\": dshape})\n    with tvm.transform.PassContext(opt_level=3):\n        graph, lib, params = relay.build(mod, target, params=params)\n    return graph, lib, params"
       ]
     },
     {
diff --git a/docs/_downloads/835a4def1e256b7a1f711621fc031418/from_darknet.ipynb b/docs/_downloads/835a4def1e256b7a1f711621fc031418/from_darknet.ipynb
index c2c176b..cc1892e 100644
--- a/docs/_downloads/835a4def1e256b7a1f711621fc031418/from_darknet.ipynb
+++ b/docs/_downloads/835a4def1e256b7a1f711621fc031418/from_darknet.ipynb
@@ -80,7 +80,7 @@
       },
       "outputs": [],
       "source": [
-        "target = 'llvm'\ntarget_host = 'llvm'\nctx = tvm.cpu(0)\ndata = np.empty([batch_size, net.c, net.h, net.w], dtype)\nshape = {'data': data.shape}\nprint(\"Compiling the model...\")\nwith relay.build_config(opt_level=3):\n    graph, lib, params = relay.build(mod,\n                                     target=target,\n                                     target_host=target_host,\n                                     params=params)\n\n[neth, netw] = shape['data'][2:] # Current image  [...]
+        "target = 'llvm'\ntarget_host = 'llvm'\nctx = tvm.cpu(0)\ndata = np.empty([batch_size, net.c, net.h, net.w], dtype)\nshape = {'data': data.shape}\nprint(\"Compiling the model...\")\nwith tvm.transform.PassContext(opt_level=3):\n    graph, lib, params = relay.build(mod,\n                                     target=target,\n                                     target_host=target_host,\n                                     params=params)\n\n[neth, netw] = shape['data'][2:] # Current [...]
       ]
     },
     {
diff --git a/docs/_downloads/83dedc6352b4016772e17480ef01345d/deploy_model_on_rasp.py b/docs/_downloads/83dedc6352b4016772e17480ef01345d/deploy_model_on_rasp.py
index ef707fe..25df341 100644
--- a/docs/_downloads/83dedc6352b4016772e17480ef01345d/deploy_model_on_rasp.py
+++ b/docs/_downloads/83dedc6352b4016772e17480ef01345d/deploy_model_on_rasp.py
@@ -179,7 +179,7 @@ else:
     # The above line is a simple form of
     # target = tvm.target.create('llvm -device=arm_cpu -model=bcm2837 -target=armv7l-linux-gnueabihf -mattr=+neon')
 
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     graph, lib, params = relay.build(func, target, params=params)
 
 # After `relay.build`, you will get three return values: graph,
diff --git a/docs/_downloads/85ba00b8ada85b8c5367f37b526a8caa/tune_relay_x86.py b/docs/_downloads/85ba00b8ada85b8c5367f37b526a8caa/tune_relay_x86.py
index 15ce2de..dcc5b25 100644
--- a/docs/_downloads/85ba00b8ada85b8c5367f37b526a8caa/tune_relay_x86.py
+++ b/docs/_downloads/85ba00b8ada85b8c5367f37b526a8caa/tune_relay_x86.py
@@ -189,7 +189,7 @@ def tune_and_evaluate(tuning_opt):
     # compile kernels with graph-level best records
     with autotvm.apply_graph_best(graph_opt_sch_file):
         print("Compile...")
-        with relay.build_config(opt_level=3):
+        with tvm.transform.PassContext(opt_level=3):
             graph, lib, params = relay.build_module.build(
                 mod, target=target, params=params)
 
diff --git a/docs/_downloads/870680567a5bf1e4697356b416e302b4/opt_matmul_auto_tensorcore.ipynb b/docs/_downloads/870680567a5bf1e4697356b416e302b4/opt_matmul_auto_tensorcore.ipynb
index 6287d6e..6eb4e22 100644
--- a/docs/_downloads/870680567a5bf1e4697356b416e302b4/opt_matmul_auto_tensorcore.ipynb
+++ b/docs/_downloads/870680567a5bf1e4697356b416e302b4/opt_matmul_auto_tensorcore.ipynb
@@ -69,7 +69,7 @@
       },
       "outputs": [],
       "source": [
-        "# check whether the gpu has tensorcore\nif not tvm.gpu(0).exist or not tvm.runtime.enabled(\"cuda\"):\n  print(\"skip because cuda is not enabled..\")\n  sys.exit(0)\n\nctx = tvm.gpu()\nif not nvcc.have_tensorcore(ctx.compute_version):\n  print('the gpu has no tensorcore, skipping...')\n  sys.exit(0)\n\nM, N, L = 512, 32, 512\ndtype = 'float16'\nlayout = 'NN'\nif len(sys.argv) >= 4:\n  M, N, L = int(sys.argv[1]), int(sys.argv[2]), int(sys.argv[3])\nif len(sys.argv) >= 5:\n  dtyp [...]
+        "# check whether the gpu has tensorcore\nif not tvm.gpu(0).exist or not tvm.runtime.enabled(\"cuda\"):\n  print(\"skip because cuda is not enabled..\")\n  sys.exit(0)\n\nctx = tvm.gpu()\nif not nvcc.have_tensorcore(ctx.compute_version):\n  print('the gpu has no tensorcore, skipping...')\n  sys.exit(0)\n\nM, N, L = 512, 32, 512\ndtype = 'float16'\nlayout = 'NN'\nif len(sys.argv) >= 4:\n  M, N, L = int(sys.argv[1]), int(sys.argv[2]), int(sys.argv[3])\nif len(sys.argv) >= 5:\n  dtyp [...]
       ]
     },
     {
diff --git a/docs/_downloads/8a7f17665207908e373e8146da09443a/deploy_prequantized.py b/docs/_downloads/8a7f17665207908e373e8146da09443a/deploy_prequantized.py
index 4027977..d6183d6 100644
--- a/docs/_downloads/8a7f17665207908e373e8146da09443a/deploy_prequantized.py
+++ b/docs/_downloads/8a7f17665207908e373e8146da09443a/deploy_prequantized.py
@@ -81,7 +81,7 @@ def get_synset():
 
 
 def run_tvm_model(mod, params, input_name, inp, target="llvm"):
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         json, lib, params = relay.build(mod, target=target, params=params)
 
     runtime = tvm.contrib.graph_runtime.create(json, lib, tvm.context(target, 0))
diff --git a/docs/_downloads/9a7956336431664ba6d628347b08f5cb/opt_conv_tensorcore.ipynb b/docs/_downloads/9a7956336431664ba6d628347b08f5cb/opt_conv_tensorcore.ipynb
index 3f3e083..e8ff100 100644
--- a/docs/_downloads/9a7956336431664ba6d628347b08f5cb/opt_conv_tensorcore.ipynb
+++ b/docs/_downloads/9a7956336431664ba6d628347b08f5cb/opt_conv_tensorcore.ipynb
@@ -130,7 +130,7 @@
       },
       "outputs": [],
       "source": [
-        "ctx = tvm.gpu(0)\nif nvcc.have_tensorcore(ctx.compute_version):\n    with tvm.target.build_config(auto_unroll_max_step=16):\n        func = tvm.build(s, [A, W, Conv], 'cuda')\n    a_np = np.random.uniform(size=data_shape).astype(A.dtype)\n    w_np = np.random.uniform(size=kernel_shape).astype(W.dtype)\n    a = tvm.nd.array(a_np, ctx)\n    w = tvm.nd.array(w_np, ctx)\n    c = tvm.nd.array(np.zeros(output_shape, dtype=Conv.dtype), ctx)\n    evaluator = func.time_evaluator(func.ent [...]
+        "ctx = tvm.gpu(0)\nif nvcc.have_tensorcore(ctx.compute_version):\n    with tvm.transform.PassContext(config={\"tir.UnrollLoop\": {\n        \"auto_max_step\": 16\n    }}):\n        func = tvm.build(s, [A, W, Conv], 'cuda')\n    a_np = np.random.uniform(size=data_shape).astype(A.dtype)\n    w_np = np.random.uniform(size=kernel_shape).astype(W.dtype)\n    a = tvm.nd.array(a_np, ctx)\n    w = tvm.nd.array(w_np, ctx)\n    c = tvm.nd.array(np.zeros(output_shape, dtype=Conv.dtype), ctx [...]
       ]
     },
     {
diff --git a/docs/_downloads/9cf0213876be0a9cc4aaa52a1ebd9586/low_level_custom_pass.py b/docs/_downloads/9cf0213876be0a9cc4aaa52a1ebd9586/low_level_custom_pass.py
index 03eae1c..17f864f 100644
--- a/docs/_downloads/9cf0213876be0a9cc4aaa52a1ebd9586/low_level_custom_pass.py
+++ b/docs/_downloads/9cf0213876be0a9cc4aaa52a1ebd9586/low_level_custom_pass.py
@@ -84,7 +84,7 @@ print(ir)
 
 loops = []
 def find_width8(op):
-    """ Find all the 'For' nodes whose extent can be divided by 8. """
+    """ Find all the 'tir.For' nodes whose extent can be divided by 8. """
     if isinstance(op, tvm.tir.For):
         if isinstance(op.extent, tvm.tir.IntImm):
             if op.extent.value % 8 == 0:
@@ -129,7 +129,7 @@ def vectorize(f, mod, ctx):
     # The last list arugment indicates what kinds of nodes will be transformed.
     # Thus, in this case only `For` nodes will call `vectorize8`
     return f.with_body(
-        tvm.tir.stmt_functor.ir_transform(f.body, None, vectorize8, ['For']))
+        tvm.tir.stmt_functor.ir_transform(f.body, None, vectorize8, ['tir.For']))
 
 
 #####################################################################
@@ -138,9 +138,8 @@ def vectorize(f, mod, ctx):
 # So far, we are done with writing this IR transformation pass. What we need to do next is to glue
 # this pass to TVM's lower pass.
 #
-# In TVM, there is a property called ``BuildConfig``. You can use this property to customize your
-# own lowering options. In this case, we inject the pass written above into the TVM standard lowering
-# pass by feeding **a list of tuple** as argument to ``add_lower_pass``. "Tuple" indicates different
+# In this case, we inject the pass written above into the TVM standard lowering
+# pass by feeding **a list of tuple** as argument to ``tir.add_lower_pass``. "Tuple" indicates different
 # phases of lowering. In TVM, there are four phases of lowering and user-customized ones will be
 # called after each phase is done.
 #
@@ -154,7 +153,7 @@ def vectorize(f, mod, ctx):
 # Thus, a good place to put this transformation pass is just after Phase 1.
 #
 
-with tvm.target.build_config(add_lower_pass=[(1, vectorize)]) as cfg:
+with tvm.transform.PassContext(config={"tir.add_lower_pass": [(1, vectorize)]}):
     print(tvm.lower(sch, [a, b, c]))
 
 #####################################################################
@@ -164,5 +163,5 @@ with tvm.target.build_config(add_lower_pass=[(1, vectorize)]) as cfg:
 # - Use ``tvm.tir.stmt_functor.post_order_visit`` to gather information on each IR nodes.
 # - Use ``tvm.tir.stmt_functor.ir_transform`` to transform IR nodes.
 # - Wrap up two above to write an IR-transformation function.
-# - Use ``tvm.target.build_config`` to put this function to TVM lowering pass
+# - Use ``tvm.transform.PassContext`` to put this function to TVM lowering pass
 #
diff --git a/docs/_downloads/a2903d9ade85eae7ce486f80ddaf9cfe/relay_quick_start.ipynb b/docs/_downloads/a2903d9ade85eae7ce486f80ddaf9cfe/relay_quick_start.ipynb
index faebab0..d9ac3bd 100644
--- a/docs/_downloads/a2903d9ade85eae7ce486f80ddaf9cfe/relay_quick_start.ipynb
+++ b/docs/_downloads/a2903d9ade85eae7ce486f80ddaf9cfe/relay_quick_start.ipynb
@@ -69,7 +69,7 @@
       },
       "outputs": [],
       "source": [
-        "opt_level = 3\ntarget = tvm.target.cuda()\nwith relay.build_config(opt_level=opt_level):\n    graph, lib, params = relay.build(mod, target, params=params)"
+        "opt_level = 3\ntarget = tvm.target.cuda()\nwith tvm.transform.PassContext(opt_level=opt_level):\n    graph, lib, params = relay.build(mod, target, params=params)"
       ]
     },
     {
diff --git a/docs/_downloads/a7ce44923ffcc359fd2e532ac1f62c9e/from_darknet.py b/docs/_downloads/a7ce44923ffcc359fd2e532ac1f62c9e/from_darknet.py
index e2c1ea5..6d84463 100644
--- a/docs/_downloads/a7ce44923ffcc359fd2e532ac1f62c9e/from_darknet.py
+++ b/docs/_downloads/a7ce44923ffcc359fd2e532ac1f62c9e/from_darknet.py
@@ -100,7 +100,7 @@ ctx = tvm.cpu(0)
 data = np.empty([batch_size, net.c, net.h, net.w], dtype)
 shape = {'data': data.shape}
 print("Compiling the model...")
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     graph, lib, params = relay.build(mod,
                                      target=target,
                                      target_host=target_host,
diff --git a/docs/_downloads/b9891d1a23f84eec3271025d99d005f7/tune_relay_x86.ipynb b/docs/_downloads/b9891d1a23f84eec3271025d99d005f7/tune_relay_x86.ipynb
index 15d4431..e705461 100644
--- a/docs/_downloads/b9891d1a23f84eec3271025d99d005f7/tune_relay_x86.ipynb
+++ b/docs/_downloads/b9891d1a23f84eec3271025d99d005f7/tune_relay_x86.ipynb
@@ -80,7 +80,7 @@
       },
       "outputs": [],
       "source": [
-        "def tune_and_evaluate(tuning_opt):\n    # extract workloads from relay program\n    print(\"Extract tasks...\")\n    mod, params, data_shape, out_shape = get_network(model_name, batch_size)\n    tasks = autotvm.task.extract_from_program(mod[\"main\"], target=target,\n                                              params=params,\n                                              ops=(relay.op.get(\"nn.conv2d\"),))\n\n    # run tuning tasks\n    tune_kernels(tasks, **tuning_opt)\n    t [...]
+        "def tune_and_evaluate(tuning_opt):\n    # extract workloads from relay program\n    print(\"Extract tasks...\")\n    mod, params, data_shape, out_shape = get_network(model_name, batch_size)\n    tasks = autotvm.task.extract_from_program(mod[\"main\"], target=target,\n                                              params=params,\n                                              ops=(relay.op.get(\"nn.conv2d\"),))\n\n    # run tuning tasks\n    tune_kernels(tasks, **tuning_opt)\n    t [...]
       ]
     },
     {
diff --git a/docs/_downloads/baa4de13ce6d932de43e0eb5c4cb8f16/tensorize.py b/docs/_downloads/baa4de13ce6d932de43e0eb5c4cb8f16/tensorize.py
index 6224c10..8a77c77 100644
--- a/docs/_downloads/baa4de13ce6d932de43e0eb5c4cb8f16/tensorize.py
+++ b/docs/_downloads/baa4de13ce6d932de43e0eb5c4cb8f16/tensorize.py
@@ -115,8 +115,7 @@ def intrin_gemv(m, l):
                                 bb.access_ptr("r"),
                                 m, l, bb.strides[0]))
         return ib.get()
-    with tvm.target.build_config(offset_factor=1):
-        return te.decl_tensor_intrin(c.op, intrin_func, binds={a: Ab, b: Bb, c: Cb})
+    return te.decl_tensor_intrin(c.op, intrin_func, binds={a: Ab, b: Bb, c: Cb})
 
 ######################################################################
 # Here :code:`te.decl_tensor_intrin` declares how to execute the computation :code:`c.op`.
@@ -269,8 +268,7 @@ def intrin_gemv(m, l):
         def _reduce_update():
             return _body()
         return _body(), _reduce_reset(), _reduce_update()
-    with tvm.target.build_config(offset_factor=1):
-        return te.decl_tensor_intrin(c.op, intrin_func, binds={a: Ab, b: Bb, c: Cb})
+    return te.decl_tensor_intrin(c.op, intrin_func, binds={a: Ab, b: Bb, c: Cb})
 
 ######################################################################
 # Note that :code:`intrin_func` now returns a triplet:
diff --git a/docs/_downloads/baf1373314e0e040008107ff2571b4cd/tune_relay_arm.py b/docs/_downloads/baf1373314e0e040008107ff2571b4cd/tune_relay_arm.py
index ffd3e8b..3b07097 100644
--- a/docs/_downloads/baf1373314e0e040008107ff2571b4cd/tune_relay_arm.py
+++ b/docs/_downloads/baf1373314e0e040008107ff2571b4cd/tune_relay_arm.py
@@ -311,7 +311,7 @@ def tune_and_evaluate(tuning_opt):
     # compile kernels with history best records
     with autotvm.apply_history_best(log_file):
         print("Compile...")
-        with relay.build_config(opt_level=3):
+        with tvm.transform.PassContext(opt_level=3):
             graph, lib, params = relay.build_module.build(
                 mod, target=target, params=params)
 
diff --git a/docs/_downloads/beb2188d497d67b66bcfbc2c254dccb7/deploy_model_on_rasp.ipynb b/docs/_downloads/beb2188d497d67b66bcfbc2c254dccb7/deploy_model_on_rasp.ipynb
index bc36e78..f22dcd8 100644
--- a/docs/_downloads/beb2188d497d67b66bcfbc2c254dccb7/deploy_model_on_rasp.ipynb
+++ b/docs/_downloads/beb2188d497d67b66bcfbc2c254dccb7/deploy_model_on_rasp.ipynb
@@ -155,7 +155,7 @@
       },
       "outputs": [],
       "source": [
-        "local_demo = True\n\nif local_demo:\n    target = tvm.target.create('llvm')\nelse:\n    target = tvm.target.arm_cpu('rasp3b')\n    # The above line is a simple form of\n    # target = tvm.target.create('llvm -device=arm_cpu -model=bcm2837 -target=armv7l-linux-gnueabihf -mattr=+neon')\n\nwith relay.build_config(opt_level=3):\n    graph, lib, params = relay.build(func, target, params=params)\n\n# After `relay.build`, you will get three return values: graph,\n# library and the new  [...]
+        "local_demo = True\n\nif local_demo:\n    target = tvm.target.create('llvm')\nelse:\n    target = tvm.target.arm_cpu('rasp3b')\n    # The above line is a simple form of\n    # target = tvm.target.create('llvm -device=arm_cpu -model=bcm2837 -target=armv7l-linux-gnueabihf -mattr=+neon')\n\nwith tvm.transform.PassContext(opt_level=3):\n    graph, lib, params = relay.build(func, target, params=params)\n\n# After `relay.build`, you will get three return values: graph,\n# library and t [...]
       ]
     },
     {
diff --git a/docs/_downloads/c316f4b828b813e437473ee752bacdf9/build_gcn.ipynb b/docs/_downloads/c316f4b828b813e437473ee752bacdf9/build_gcn.ipynb
index 910f1eb..ed1884c 100644
--- a/docs/_downloads/c316f4b828b813e437473ee752bacdf9/build_gcn.ipynb
+++ b/docs/_downloads/c316f4b828b813e437473ee752bacdf9/build_gcn.ipynb
@@ -177,7 +177,7 @@
       },
       "outputs": [],
       "source": [
-        "model_params = {}\nfor param_tensor in torch_model.state_dict():\n    model_params[param_tensor] = torch_model.state_dict()[param_tensor].numpy()\n\nfor i in range(num_layers+1):\n    params[\"layers.%d.weight\"%(i)] = model_params[\"layers.%d.weight\"%(i)]\n    params[\"layers.%d.bias\"%(i)] = model_params[\"layers.%d.bias\"%(i)]\n\n# Set the TVM build target\ntarget = 'llvm' # Currently only support `llvm` as target\n\nfunc = relay.Function(relay.analysis.free_vars(output), ou [...]
+        "model_params = {}\nfor param_tensor in torch_model.state_dict():\n    model_params[param_tensor] = torch_model.state_dict()[param_tensor].numpy()\n\nfor i in range(num_layers+1):\n    params[\"layers.%d.weight\"%(i)] = model_params[\"layers.%d.weight\"%(i)]\n    params[\"layers.%d.bias\"%(i)] = model_params[\"layers.%d.bias\"%(i)]\n\n# Set the TVM build target\ntarget = 'llvm' # Currently only support `llvm` as target\n\nfunc = relay.Function(relay.analysis.free_vars(output), ou [...]
       ]
     },
     {
diff --git a/docs/_downloads/c4d683ae80a4b8a011286f239422638a/deploy_classification.ipynb b/docs/_downloads/c4d683ae80a4b8a011286f239422638a/deploy_classification.ipynb
index cf6b413..93455af 100644
--- a/docs/_downloads/c4d683ae80a4b8a011286f239422638a/deploy_classification.ipynb
+++ b/docs/_downloads/c4d683ae80a4b8a011286f239422638a/deploy_classification.ipynb
@@ -87,7 +87,7 @@
       },
       "outputs": [],
       "source": [
-        "# Load pre-configured AutoTVM schedules\nwith autotvm.tophub.context(target):\n\n    # Populate the shape and data type dictionary for ImageNet classifier input\n    dtype_dict = {\"data\": 'float32'}\n    shape_dict = {\"data\": (env.BATCH, 3, 224, 224)}\n\n    # Get off the shelf gluon model, and convert to relay\n    gluon_model = vision.get_model(model, pretrained=True)\n\n    # Measure build start time\n    build_start = time.time()\n\n    # Start front end compilation\n    [...]
+        "# Load pre-configured AutoTVM schedules\nwith autotvm.tophub.context(target):\n\n    # Populate the shape and data type dictionary for ImageNet classifier input\n    dtype_dict = {\"data\": 'float32'}\n    shape_dict = {\"data\": (env.BATCH, 3, 224, 224)}\n\n    # Get off the shelf gluon model, and convert to relay\n    gluon_model = vision.get_model(model, pretrained=True)\n\n    # Measure build start time\n    build_start = time.time()\n\n    # Start front end compilation\n    [...]
       ]
     },
     {
diff --git a/docs/_downloads/ca08de6c440df207921d807474d26f06/deploy_ssd_gluoncv.py b/docs/_downloads/ca08de6c440df207921d807474d26f06/deploy_ssd_gluoncv.py
index 6126df0..e2fc3c5 100644
--- a/docs/_downloads/ca08de6c440df207921d807474d26f06/deploy_ssd_gluoncv.py
+++ b/docs/_downloads/ca08de6c440df207921d807474d26f06/deploy_ssd_gluoncv.py
@@ -87,7 +87,7 @@ block = model_zoo.get_model(model_name, pretrained=True)
 
 def build(target):
     mod, params = relay.frontend.from_mxnet(block, {"data": dshape})
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         graph, lib, params = relay.build(mod, target, params=params)
     return graph, lib, params
 
diff --git a/docs/_downloads/e09aef52edc37570c0178591a87d328c/from_tensorflow.ipynb b/docs/_downloads/e09aef52edc37570c0178591a87d328c/from_tensorflow.ipynb
index 2646e66..23ee2ad 100644
--- a/docs/_downloads/e09aef52edc37570c0178591a87d328c/from_tensorflow.ipynb
+++ b/docs/_downloads/e09aef52edc37570c0178591a87d328c/from_tensorflow.ipynb
@@ -134,7 +134,7 @@
       },
       "outputs": [],
       "source": [
-        "with relay.build_config(opt_level=3):\n    graph, lib, params = relay.build(mod,\n                                     target=target,\n                                     target_host=target_host,\n                                     params=params)"
+        "with tvm.transform.PassContext(opt_level=3):\n    graph, lib, params = relay.build(mod,\n                                     target=target,\n                                     target_host=target_host,\n                                     params=params)"
       ]
     },
     {
diff --git a/docs/_downloads/e3748c6e5b8a427385ff1afdf1562c3c/opt_conv_tensorcore.py b/docs/_downloads/e3748c6e5b8a427385ff1afdf1562c3c/opt_conv_tensorcore.py
index 44b9de3..cd40a91 100644
--- a/docs/_downloads/e3748c6e5b8a427385ff1afdf1562c3c/opt_conv_tensorcore.py
+++ b/docs/_downloads/e3748c6e5b8a427385ff1afdf1562c3c/opt_conv_tensorcore.py
@@ -331,7 +331,9 @@ print(tvm.lower(s, [A, W, Conv], simple_mode=True))
 
 ctx = tvm.gpu(0)
 if nvcc.have_tensorcore(ctx.compute_version):
-    with tvm.target.build_config(auto_unroll_max_step=16):
+    with tvm.transform.PassContext(config={"tir.UnrollLoop": {
+        "auto_max_step": 16
+    }}):
         func = tvm.build(s, [A, W, Conv], 'cuda')
     a_np = np.random.uniform(size=data_shape).astype(A.dtype)
     w_np = np.random.uniform(size=kernel_shape).astype(W.dtype)
diff --git a/docs/_downloads/e41367a7f459e4f4dca82180009c1539/tune_relay_mobile_gpu.py b/docs/_downloads/e41367a7f459e4f4dca82180009c1539/tune_relay_mobile_gpu.py
index ad74608..4748f41 100644
--- a/docs/_downloads/e41367a7f459e4f4dca82180009c1539/tune_relay_mobile_gpu.py
+++ b/docs/_downloads/e41367a7f459e4f4dca82180009c1539/tune_relay_mobile_gpu.py
@@ -308,7 +308,7 @@ def tune_and_evaluate(tuning_opt):
     # compile kernels with history best records
     with autotvm.apply_history_best(log_file):
         print("Compile...")
-        with relay.build_config(opt_level=3):
+        with tvm.transform.PassContext(opt_level=3):
             graph, lib, params = relay.build_module.build(
                 mod, target=target, params=params, target_host=target_host)
         # export library
diff --git a/docs/_downloads/e732d71c83de9fd8c6c7a72184d3ee0a/from_coreml.py b/docs/_downloads/e732d71c83de9fd8c6c7a72184d3ee0a/from_coreml.py
index 2a0c8db..beac483 100644
--- a/docs/_downloads/e732d71c83de9fd8c6c7a72184d3ee0a/from_coreml.py
+++ b/docs/_downloads/e732d71c83de9fd8c6c7a72184d3ee0a/from_coreml.py
@@ -74,7 +74,7 @@ shape_dict = {'image': x.shape}
 # Parse CoreML model and convert into Relay computation graph
 mod, params = relay.frontend.from_coreml(mlmodel, shape_dict)
 
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     graph, lib, params = relay.build(mod,
                                      target,
                                      params=params)
diff --git a/docs/_downloads/e87c21d127b0b825efcf978b9f8e2cd7/low_level_custom_pass.ipynb b/docs/_downloads/e87c21d127b0b825efcf978b9f8e2cd7/low_level_custom_pass.ipynb
index 991bc88..f8b0ee5 100644
--- a/docs/_downloads/e87c21d127b0b825efcf978b9f8e2cd7/low_level_custom_pass.ipynb
+++ b/docs/_downloads/e87c21d127b0b825efcf978b9f8e2cd7/low_level_custom_pass.ipynb
@@ -69,7 +69,7 @@
       },
       "outputs": [],
       "source": [
-        "loops = []\ndef find_width8(op):\n    \"\"\" Find all the 'For' nodes whose extent can be divided by 8. \"\"\"\n    if isinstance(op, tvm.tir.For):\n        if isinstance(op.extent, tvm.tir.IntImm):\n            if op.extent.value % 8 == 0:\n                loops.append(op)"
+        "loops = []\ndef find_width8(op):\n    \"\"\" Find all the 'tir.For' nodes whose extent can be divided by 8. \"\"\"\n    if isinstance(op, tvm.tir.For):\n        if isinstance(op.extent, tvm.tir.IntImm):\n            if op.extent.value % 8 == 0:\n                loops.append(op)"
       ]
     },
     {
@@ -87,14 +87,14 @@
       },
       "outputs": [],
       "source": [
-        "def vectorize8(op):\n    \"\"\" Split can vectorize the loops found in `find_width8`. \"\"\"\n    if op in loops:\n        extent = op.extent.value\n        name = op.loop_var.name\n        lo, li = te.var(name + '.outer'), te.var(name + '.inner')\n        body = tvm.tir.stmt_functor.substitute(op.body, {op.loop_var: lo * 8 + li})\n        body = tvm.tir.For(li, 0, 8, tvm.tir.For.Vectorized, 0, body)\n        body = tvm.tir.For(lo, 0, extent // 8, tvm.tir.For.Serial, 0, body)\n  [...]
+        "def vectorize8(op):\n    \"\"\" Split can vectorize the loops found in `find_width8`. \"\"\"\n    if op in loops:\n        extent = op.extent.value\n        name = op.loop_var.name\n        lo, li = te.var(name + '.outer'), te.var(name + '.inner')\n        body = tvm.tir.stmt_functor.substitute(op.body, {op.loop_var: lo * 8 + li})\n        body = tvm.tir.For(li, 0, 8, tvm.tir.For.Vectorized, 0, body)\n        body = tvm.tir.For(lo, 0, extent // 8, tvm.tir.For.Serial, 0, body)\n  [...]
       ]
     },
     {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Glue to Lowering\n----------------\nSo far, we are done with writing this IR transformation pass. What we need to do next is to glue\nthis pass to TVM's lower pass.\n\nIn TVM, there is a property called ``BuildConfig``. You can use this property to customize your\nown lowering options. In this case, we inject the pass written above into the TVM standard lowering\npass by feeding **a list of tuple** as argument to ``add_lower_pass``. \"Tuple\" indicates different\nphases of lower [...]
+        "Glue to Lowering\n----------------\nSo far, we are done with writing this IR transformation pass. What we need to do next is to glue\nthis pass to TVM's lower pass.\n\nIn this case, we inject the pass written above into the TVM standard lowering\npass by feeding **a list of tuple** as argument to ``tir.add_lower_pass``. \"Tuple\" indicates different\nphases of lowering. In TVM, there are four phases of lowering and user-customized ones will be\ncalled after each phase is done.\n [...]
       ]
     },
     {
@@ -105,14 +105,14 @@
       },
       "outputs": [],
       "source": [
-        "with tvm.target.build_config(add_lower_pass=[(1, vectorize)]) as cfg:\n    print(tvm.lower(sch, [a, b, c]))"
+        "with tvm.transform.PassContext(config={\"tir.add_lower_pass\": [(1, vectorize)]}):\n    print(tvm.lower(sch, [a, b, c]))"
       ]
     },
     {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Quick View\n----------\nThis tutorial gives a quick view of writing a customized IR transformation pass:\n- Use ``tvm.tir.stmt_functor.post_order_visit`` to gather information on each IR nodes.\n- Use ``tvm.tir.stmt_functor.ir_transform`` to transform IR nodes.\n- Wrap up two above to write an IR-transformation function.\n- Use ``tvm.target.build_config`` to put this function to TVM lowering pass\n\n\n"
+        "Quick View\n----------\nThis tutorial gives a quick view of writing a customized IR transformation pass:\n- Use ``tvm.tir.stmt_functor.post_order_visit`` to gather information on each IR nodes.\n- Use ``tvm.tir.stmt_functor.ir_transform`` to transform IR nodes.\n- Wrap up two above to write an IR-transformation function.\n- Use ``tvm.transform.PassContext`` to put this function to TVM lowering pass\n\n\n"
       ]
     }
   ],
diff --git a/docs/_downloads/e92c7219a1cd7838e61f9683f4228a7f/from_onnx.ipynb b/docs/_downloads/e92c7219a1cd7838e61f9683f4228a7f/from_onnx.ipynb
index 289a695..af31db1 100644
--- a/docs/_downloads/e92c7219a1cd7838e61f9683f4228a7f/from_onnx.ipynb
+++ b/docs/_downloads/e92c7219a1cd7838e61f9683f4228a7f/from_onnx.ipynb
@@ -80,7 +80,7 @@
       },
       "outputs": [],
       "source": [
-        "target = 'llvm'\n\ninput_name = '1'\nshape_dict = {input_name: x.shape}\nmod, params = relay.frontend.from_onnx(onnx_model, shape_dict)\n\nwith relay.build_config(opt_level=1):\n    intrp = relay.build_module.create_executor('graph', mod, tvm.cpu(0), target)"
+        "target = 'llvm'\n\ninput_name = '1'\nshape_dict = {input_name: x.shape}\nmod, params = relay.frontend.from_onnx(onnx_model, shape_dict)\n\nwith tvm.transform.PassContext(opt_level=1):\n    intrp = relay.build_module.create_executor('graph', mod, tvm.cpu(0), target)"
       ]
     },
     {
diff --git a/docs/_downloads/ea0c81cab71096d16b825a33fd276c58/from_mxnet.py b/docs/_downloads/ea0c81cab71096d16b825a33fd276c58/from_mxnet.py
index d0e4c4a..6e6b2d7 100644
--- a/docs/_downloads/ea0c81cab71096d16b825a33fd276c58/from_mxnet.py
+++ b/docs/_downloads/ea0c81cab71096d16b825a33fd276c58/from_mxnet.py
@@ -90,7 +90,7 @@ func = relay.Function(func.params, relay.nn.softmax(func.body), None, func.type_
 ######################################################################
 # now compile the graph
 target = 'cuda'
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     graph, lib, params = relay.build(func, target, params=params)
 
 ######################################################################
diff --git a/docs/_downloads/ed4fcfc19b39f91a14d817676480a454/deploy_detection.py b/docs/_downloads/ed4fcfc19b39f91a14d817676480a454/deploy_detection.py
index efcd2c4..5039488 100644
--- a/docs/_downloads/ed4fcfc19b39f91a14d817676480a454/deploy_detection.py
+++ b/docs/_downloads/ed4fcfc19b39f91a14d817676480a454/deploy_detection.py
@@ -207,7 +207,7 @@ with autotvm.tophub.context(target):
     if target.device_name == "vta":
     # Perform quantization in Relay
     # Note: We set opt_level to 3 in order to fold batch norm
-        with relay.build_config(opt_level=3):
+        with tvm.transform.PassContext(opt_level=3):
             with relay.quantize.qconfig(global_scale=33.0,
                                         skip_conv_layers=[0],
                                         store_lowbit_output=True,
diff --git a/docs/_downloads/ef2454f5c8b007c53ff214943df808ad/deploy_classification.py b/docs/_downloads/ef2454f5c8b007c53ff214943df808ad/deploy_classification.py
index 62fb321..3a36785 100644
--- a/docs/_downloads/ef2454f5c8b007c53ff214943df808ad/deploy_classification.py
+++ b/docs/_downloads/ef2454f5c8b007c53ff214943df808ad/deploy_classification.py
@@ -171,7 +171,7 @@ with autotvm.tophub.context(target):
     if target.device_name == "vta":
         # Perform quantization in Relay
         # Note: We set opt_level to 3 in order to fold batch norm
-        with relay.build_config(opt_level=3):
+        with tvm.transform.PassContext(opt_level=3):
             with relay.quantize.qconfig(global_scale=8.0,
                                         skip_conv_layers=[0]):
                 mod = relay.quantize.quantize(mod, params=params)
@@ -188,16 +188,16 @@ with autotvm.tophub.context(target):
         relay_prog = mod["main"]
 
     # Compile Relay program with AlterOpLayout disabled
-    with relay.build_config(opt_level=3, disabled_pass={"AlterOpLayout"}):
-        if target.device_name != "vta":
+    if target.device_name != "vta":
+        with tvm.transform.PassContext(opt_level=3, disabled_pass={"AlterOpLayout"}):
+            graph, lib, params = relay.build(
+                relay_prog, target=target,
+                params=params, target_host=env.target_host)
+    else:
+        with vta.build_config(opt_level=3, disabled_pass={"AlterOpLayout"}):
             graph, lib, params = relay.build(
                 relay_prog, target=target,
                 params=params, target_host=env.target_host)
-        else:
-            with vta.build_config():
-                graph, lib, params = relay.build(
-                    relay_prog, target=target,
-                    params=params, target_host=env.target_host)
 
     # Measure Relay build time
     build_time = time.time() - build_start
diff --git a/docs/_downloads/f2f3dea1548903b315df5847ee60f87d/from_mxnet.ipynb b/docs/_downloads/f2f3dea1548903b315df5847ee60f87d/from_mxnet.ipynb
index 387afa2..7e5d275 100644
--- a/docs/_downloads/f2f3dea1548903b315df5847ee60f87d/from_mxnet.ipynb
+++ b/docs/_downloads/f2f3dea1548903b315df5847ee60f87d/from_mxnet.ipynb
@@ -80,7 +80,7 @@
       },
       "outputs": [],
       "source": [
-        "target = 'cuda'\nwith relay.build_config(opt_level=3):\n    graph, lib, params = relay.build(func, target, params=params)"
+        "target = 'cuda'\nwith tvm.transform.PassContext(opt_level=3):\n    graph, lib, params = relay.build(func, target, params=params)"
       ]
     },
     {
diff --git a/docs/_downloads/f59fd8b968f7dcde34ed872c8527c192/from_keras.py b/docs/_downloads/f59fd8b968f7dcde34ed872c8527c192/from_keras.py
index 928a8ac..7ece790 100644
--- a/docs/_downloads/f59fd8b968f7dcde34ed872c8527c192/from_keras.py
+++ b/docs/_downloads/f59fd8b968f7dcde34ed872c8527c192/from_keras.py
@@ -79,7 +79,7 @@ mod, params = relay.frontend.from_keras(keras_resnet50, shape_dict)
 # compile the model
 target = 'cuda'
 ctx = tvm.gpu(0)
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     executor = relay.build_module.create_executor('graph', mod, ctx, target)
 
 ######################################################################
diff --git a/docs/_downloads/f83f0c3da8a2ab10657c61e034b7218d/from_pytorch.py b/docs/_downloads/f83f0c3da8a2ab10657c61e034b7218d/from_pytorch.py
index 8354b0e..53d29a9 100644
--- a/docs/_downloads/f83f0c3da8a2ab10657c61e034b7218d/from_pytorch.py
+++ b/docs/_downloads/f83f0c3da8a2ab10657c61e034b7218d/from_pytorch.py
@@ -101,7 +101,7 @@ mod, params = relay.frontend.from_pytorch(scripted_model,
 target = 'llvm'
 target_host = 'llvm'
 ctx = tvm.cpu(0)
-with relay.build_config(opt_level=3):
+with tvm.transform.PassContext(opt_level=3):
     graph, lib, params = relay.build(mod,
                                      target=target,
                                      target_host=target_host,
diff --git a/docs/_downloads/f8f7a2adf30f5033603d79cdbacd9235/tune_relay_arm.ipynb b/docs/_downloads/f8f7a2adf30f5033603d79cdbacd9235/tune_relay_arm.ipynb
index c82d762..2fa3551 100644
--- a/docs/_downloads/f8f7a2adf30f5033603d79cdbacd9235/tune_relay_arm.ipynb
+++ b/docs/_downloads/f8f7a2adf30f5033603d79cdbacd9235/tune_relay_arm.ipynb
@@ -126,7 +126,7 @@
       },
       "outputs": [],
       "source": [
-        "def tune_and_evaluate(tuning_opt):\n    # extract workloads from relay program\n    print(\"Extract tasks...\")\n    mod, params, input_shape, _ = get_network(network, batch_size=1)\n    tasks = autotvm.task.extract_from_program(mod[\"main\"], target=target,\n                                              params=params,\n                                              ops=(relay.op.get(\"nn.conv2d\"),))\n\n    # run tuning tasks\n    print(\"Tuning...\")\n    tune_tasks(tasks, **tu [...]
+        "def tune_and_evaluate(tuning_opt):\n    # extract workloads from relay program\n    print(\"Extract tasks...\")\n    mod, params, input_shape, _ = get_network(network, batch_size=1)\n    tasks = autotvm.task.extract_from_program(mod[\"main\"], target=target,\n                                              params=params,\n                                              ops=(relay.op.get(\"nn.conv2d\"),))\n\n    # run tuning tasks\n    print(\"Tuning...\")\n    tune_tasks(tasks, **tu [...]
       ]
     },
     {
diff --git a/docs/_sources/api/python/index.rst.txt b/docs/_sources/api/python/index.rst.txt
index c279dc2..bee6e56 100644
--- a/docs/_sources/api/python/index.rst.txt
+++ b/docs/_sources/api/python/index.rst.txt
@@ -37,9 +37,11 @@ Python API
    relay/transform
    relay/analysis
    relay/backend
+   relay/dataflow_pattern
    relay/testing
    autotvm
    rpc
+   micro
    contrib
    graph_runtime
    vta/index
diff --git a/docs/_sources/api/python/micro.rst.txt b/docs/_sources/api/python/micro.rst.txt
new file mode 100644
index 0000000..1a93f74
--- /dev/null
+++ b/docs/_sources/api/python/micro.rst.txt
@@ -0,0 +1,23 @@
+..  Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+..    http://www.apache.org/licenses/LICENSE-2.0
+
+..  Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+tvm.micro
+---------
+.. automodule:: tvm.micro
+   :members:
+   :imported-members:
+   :autosummary:
diff --git a/docs/_sources/api/python/relay/dataflow_pattern.rst.txt b/docs/_sources/api/python/relay/dataflow_pattern.rst.txt
new file mode 100644
index 0000000..fe1d4e9
--- /dev/null
+++ b/docs/_sources/api/python/relay/dataflow_pattern.rst.txt
@@ -0,0 +1,25 @@
+..  Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+..    http://www.apache.org/licenses/LICENSE-2.0
+
+..  Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+tvm.relay.dataflow_pattern
+--------------------------
+
+.. automodule:: tvm.relay.dataflow_pattern
+    :members:
+    :imported-members:
+    :exclude-members: Object, Node
+    :autosummary:
diff --git a/docs/_sources/api/python/topi.rst.txt b/docs/_sources/api/python/topi.rst.txt
index cef2999..53f2f3c 100644
--- a/docs/_sources/api/python/topi.rst.txt
+++ b/docs/_sources/api/python/topi.rst.txt
@@ -46,14 +46,17 @@ List of operators
    topi.reinterpret
    topi.transpose
    topi.flip
+   topi.reverse_sequence
    topi.strided_slice
    topi.expand_dims
    topi.reshape
    topi.unravel_index
+   topi.sparse_to_dense
    topi.squeeze
    topi.concatenate
    topi.split
    topi.take
+   topi.gather
    topi.gather_nd
    topi.full
    topi.full_like
@@ -150,14 +153,17 @@ topi
 .. autofunction:: topi.reinterpret
 .. autofunction:: topi.transpose
 .. autofunction:: topi.flip
+.. autofunction:: topi.reverse_sequence
 .. autofunction:: topi.strided_slice
 .. autofunction:: topi.expand_dims
 .. autofunction:: topi.reshape
 .. autofunction:: topi.unravel_index
+.. autofunction:: topi.sparse_to_dense
 .. autofunction:: topi.squeeze
 .. autofunction:: topi.concatenate
 .. autofunction:: topi.split
 .. autofunction:: topi.take
+.. autofunction:: topi.gather
 .. autofunction:: topi.gather_nd
 .. autofunction:: topi.full
 .. autofunction:: topi.full_like
@@ -212,6 +218,8 @@ topi.nn
 .. autofunction:: topi.nn.conv2d_hwcn
 .. autofunction:: topi.nn.depthwise_conv2d_nchw
 .. autofunction:: topi.nn.depthwise_conv2d_nhwc
+.. autofunction:: topi.nn.conv3d_ncdhw
+.. autofunction:: topi.nn.conv3d_transpose_ncdhw
 .. autofunction:: topi.nn.fifo_buffer
 
 topi.image
@@ -231,6 +239,8 @@ topi.generic
 
 .. autofunction:: topi.generic.schedule_conv2d_nchw
 .. autofunction:: topi.generic.schedule_depthwise_conv2d_nchw
+.. autofunction:: topi.generic.schedule_conv3d_ncdhw
+.. autofunction:: topi.generic.schedule_conv3d_transpose_ncdhw
 .. autofunction:: topi.generic.schedule_reduce
 .. autofunction:: topi.generic.schedule_broadcast
 .. autofunction:: topi.generic.schedule_injective
diff --git a/docs/_sources/dev/codebase_walkthrough.rst.txt b/docs/_sources/dev/codebase_walkthrough.rst.txt
index a66328f..8674c8e 100644
--- a/docs/_sources/dev/codebase_walkthrough.rst.txt
+++ b/docs/_sources/dev/codebase_walkthrough.rst.txt
@@ -84,7 +84,7 @@ This function is mapped to the C++ function in ``include/tvm/schedule.h``.
 ::
 
    inline Schedule create_schedule(Array<Operation> ops) {
-     return ScheduleNode::make(ops);
+     return Schedule(ops);
    }
 
 ``Schedule`` consists of collections of ``Stage`` and output ``Operation``.
diff --git a/docs/_sources/dev/convert_layout.rst.txt b/docs/_sources/dev/convert_layout.rst.txt
index ee5350c..07ebc20 100644
--- a/docs/_sources/dev/convert_layout.rst.txt
+++ b/docs/_sources/dev/convert_layout.rst.txt
@@ -246,7 +246,7 @@ In order to specify the layouts to convert to, we create a mapping of heavily-la
     # RemoveUnunsedFunctions is used to clean up the graph.
     seq = tvm.transform.Sequential([relay.transform.RemoveUnusedFunctions(),
                                     relay.transform.ConvertLayout(desired_layouts)])
-    with relay.transform.PassContext(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         mod = seq(mod)
 
     # Call relay compilation
diff --git a/docs/_sources/dev/relay_add_op.rst.txt b/docs/_sources/dev/relay_add_op.rst.txt
index f494cc6..7dca251 100644
--- a/docs/_sources/dev/relay_add_op.rst.txt
+++ b/docs/_sources/dev/relay_add_op.rst.txt
@@ -99,7 +99,7 @@ the arguments to the call node, as below.
     TVM_REGISTER_GLOBAL("relay.op._make.add")
         .set_body_typed<Expr(Expr, Expr)>([](Expr lhs, Expr rhs) {
             static const Op& op = Op::Get("add");
-          return CallNode::make(op, {lhs, rhs}, Attrs(), {});
+          return Call(op, {lhs, rhs}, Attrs(), {});
         });
 
 Including a Python API Hook
diff --git a/docs/_sources/dev/relay_add_pass.rst.txt b/docs/_sources/dev/relay_add_pass.rst.txt
index 3eb9586..a82ae4f 100644
--- a/docs/_sources/dev/relay_add_pass.rst.txt
+++ b/docs/_sources/dev/relay_add_pass.rst.txt
@@ -138,7 +138,7 @@ is shown below.
       if (g->tuple == t) {
         return GetRef<Expr>(g);
       } else {
-        return TupleGetItemNode::make(t, g->index);
+        return TupleGetItem(t, g->index);
       }
     }
 
@@ -261,7 +261,7 @@ the pass.
             body.same_as(op->body)) {
           return GetRef<Expr>(op);
         } else {
-          return LetNode::make(var, value, body);
+          return Let(var, value, body);
         }
       }
     }
diff --git a/docs/_sources/dev/relay_pass_infra.rst.txt b/docs/_sources/dev/relay_pass_infra.rst.txt
index b40b06e..446a91b 100644
--- a/docs/_sources/dev/relay_pass_infra.rst.txt
+++ b/docs/_sources/dev/relay_pass_infra.rst.txt
@@ -344,13 +344,13 @@ registration.
 .. code:: c++
 
     // Create a simple Relay program.
-    auto tensor_type = relay::TensorTypeNode::make({}, tvm::Bool());
-    auto x = relay::VarNode::make("x", relay::Type());
-    auto f = relay::FunctionNode::make(tvm::Array<relay::Var>{ x }, x, relay::Type(), {});
+    auto tensor_type = relay::TensorType({}, tvm::Bool());
+    auto x = relay::Var("x", relay::Type());
+    auto f = relay::Function(tvm::Array<relay::Var>{ x }, x, relay::Type(), {});
 
-    auto y = relay::VarNode::make("y", tensor_type);
-    auto call = relay::CallNode::make(f, tvm::Array<relay::Expr>{ y });
-    auto fx = relay::FunctionNode::make(tvm::Array<relay::Var>{ y }, call, relay::Type(), {});
+    auto y = relay::Var("y", tensor_type);
+    auto call = relay::Call(f, tvm::Array<relay::Expr>{ y });
+    auto fx = relay::Function(tvm::Array<relay::Var>{ y }, call, relay::Type(), {});
 
     // Create a module for optimization.
     auto mod = IRModule::FromExpr(fx);
diff --git a/docs/_sources/langref/relay_op.rst.txt b/docs/_sources/langref/relay_op.rst.txt
index 798d440..86e0c0d 100644
--- a/docs/_sources/langref/relay_op.rst.txt
+++ b/docs/_sources/langref/relay_op.rst.txt
@@ -69,6 +69,8 @@ This level enables typical convnet models.
 
    tvm.relay.nn.conv2d
    tvm.relay.nn.conv2d_transpose
+   tvm.relay.nn.conv3d
+   tvm.relay.nn.conv3d_transpose
    tvm.relay.nn.dense
    tvm.relay.nn.max_pool2d
    tvm.relay.nn.max_pool3d
@@ -118,6 +120,7 @@ This level enables additional math and transform operators.
    tvm.relay.zeros_like
    tvm.relay.ones
    tvm.relay.ones_like
+   tvm.relay.gather
    tvm.relay.gather_nd
    tvm.relay.full
    tvm.relay.full_like
@@ -129,7 +132,9 @@ This level enables additional math and transform operators.
    tvm.relay.repeat
    tvm.relay.tile
    tvm.relay.reverse
+   tvm.relay.reverse_sequence
    tvm.relay.unravel_index
+   tvm.relay.sparse_to_dense
 
 
 **Level 4: Broadcast and Reductions**
@@ -224,4 +229,4 @@ This level supports dialect operators.
    :nosignatures:
 
    tvm.relay.qnn.op.requantize
-   tvm.relay.qnn.op.conv2d
\ No newline at end of file
+   tvm.relay.qnn.op.conv2d
diff --git a/docs/_sources/langref/relay_pattern.rst.txt b/docs/_sources/langref/relay_pattern.rst.txt
index f56d496..962dcc6 100644
--- a/docs/_sources/langref/relay_pattern.rst.txt
+++ b/docs/_sources/langref/relay_pattern.rst.txt
@@ -28,17 +28,40 @@ Such a language is not just useful for building a rewriter but also providing ex
 
 In the backend world, we could use the same machinery to build a higher level API using bring your own code generation. This API takes set of patterns describing your hardware capabilities and an external compiler, providing a relatively smooth heterogeneous experience out of the box.
 
-Examples
-========
+Pattern Examples
+================
 
-There are quite a few properties that are worth matching of operators below we examine how to match tree properties, and expand on some use cases that are not fully explored in the prototype. The first example is a simple case where we want to match one operator with a single input OR another operator with a single input, see the below diagram for a graphical representation and corresponding code::
+There are quite a few properties of operators that are worth matching. Below we examine how to match tree properties, and expand on some use cases that are not fully explored in the prototype. This section
+demonstrates how to write patterns. It is recommended to check `tests/python/relay/test_dataflow_pattern.py`_
+for more use cases.
+
+.. _tests/python/relay/test_dataflow_pattern.py: https://github.com/apache/incubator-tvm/blob/master/tests/python/relay/test_dataflow_pattern.py
+
+.. note::
+
+    If you cannot find the corresponding pattern node to match the Relay node you want,
+    you are welcome to raise an issue or submit a PR to add it.
+
+Matching One of Two Ops
+***********************
+
+The first example is a simple case where we want to match one operator with a single input OR
+another operator with a single input:
+
+.. code-block:: python
 
     def test_match_op_or():
         is_add_or_sub = is_op('add') | is_op('subtract')
         assert is_add_or_sub.match(relay.op.op.get("add"))
         assert is_add_or_sub.match(relay.op.op.get("subtract"))
 
-The next example is a dense operation with any operator that is marked element-wise::
+
+Matching an Op with Attributes
+******************************
+
+The next example is a dense operation with any operator that is marked element-wise:
+
+.. code-block:: python
 
     def test_no_match_attr():
         op = is_op('nn.dense').has_attr({"TOpPattern": K_ELEMWISE})
@@ -47,11 +70,130 @@ The next example is a dense operation with any operator that is marked element-w
         y = relay.var('y')
         assert not op_pat.match(relay.op.nn.dense(x, y))
 
+Here is another example to match an op with a specific attribute:
+
+.. code-block:: python
+
+    def test_match_data_layout():
+        is_conv2d = is_op('nn.conv2d')(wildcard(), wildcard()).has_attr({"data_layout": "NHWC"})
+        x = relay.var('x')
+        y = relay.var('y')
+        assert not is_conv2d.match(relay.op.nn.conv2d(x, y))
+
+Matching an Optional Op
+***********************
+
+The next example is matching a pattern with one optional operator. In this pattern,
+we can match the graph of conv2d+bias_add+relu or the graph of conv2d+bias_add.
+
+.. code-block:: python
+
+    def test_match_optional():
+        conv_node = is_op('nn.conv2d')(wildcard(), wildcard())
+        bias_node = is_op('nn.bias_add')(conv_node, wildcard())
+        pat = bias_node.optional(lambda x: is_op('nn.relu')(x))
+
+        x = relay.var('x')
+        y = relay.var('y')
+        z = relay.var('z')
+        conv2d = relay.op.nn.conv2d(x, y)
+        bias = relay.op.nn.bias_add(conv2d, z)
+        assert pat.match(bias)
+        relu = relay.op.nn.relu(bias)
+        assert pat.match(relu)
+
+Matching Non-Call Nodes
+***********************
+
+Sometimes we may also want to match a pattern that includes Tuple or TupleGetItem nodes.
+Since there are not call nodes, we need to use specific pattern nodes to match them:
+
+.. code-block:: python
+
+    def test_match_tuple():
+        x = relay.var('x')
+        y = relay.var('y')
+        z = relay.var('z')
+        tuple_pattern = is_tuple((wildcard(), wildcard(), wildcard()))
+        assert tuple_pattern.match(relay.expr.Tuple((x,y,z)))
+
+The next example is matching a pattern of batch_norm -> get(0) -> relu:
+
+.. code-block:: python
+
+    def test_match_tuple_get_item():
+        bn_node = is_op('nn.batch_norm')(wildcard(), wildcard(), wildcard(), wildcard(), wildcard())
+        tuple_get_item_node = is_tuple_get_item(bn_node, 0)
+        pat = is_op('nn.relu')(tuple_get_item_node)
+
+        x = relay.var('x', shape=(1, 8))
+        gamma = relay.var("gamma", shape=(8,))
+        beta = relay.var("beta", shape=(8,))
+        moving_mean = relay.var("moving_mean", shape=(8,))
+        moving_var = relay.var("moving_var", shape=(8,))
+        bn_node = relay.nn.batch_norm(x, gamma, beta, moving_mean, moving_var)
+        tuple_get_item_node = bn_node[0]
+        out = relay.nn.relu(tuple_get_item_node)
+        pat.match(out)
+
+The next example is matching a constant node regarding its values. This is useful to check
+if a specific parameter in a subgraph has been bound or not.
+
+.. code-block:: python
+
+    def test_match_constant():
+        conv2d = is_op('nn.conv2d')(wildcard(), is_constant())
+        pattern = is_op('nn.bias_add')(conv2d, wildcard())
+
+        x = relay.var('x', shape=(1, 3, 224, 224))
+        w = relay.var('w', shape=(3, 3, 3, 3))
+        b = relay.var('b', shape=(3, ))
+        conv2d = relay.op.nn.conv2d(x, w)
+        out = relay.op.nn.bias_add(conv2d, b)
+        func = relay.Function([x, w, b], out)
+        mod = tvm.IRModule.from_expr(func)
+
+        # Two inputs of the conv2d in the graph are VarNode by default, so no match.
+        assert not pattern.match(mod['main'].body)
+
+        # The second input (weight) has been bind with constant values so it is now a constant node.
+        mod["main"] = bind_params_by_name(mod["main"],
+                                        {'w': tvm.nd.array(np.ones(shape=(3, 3, 3, 3)))})
+        assert pattern.match(mod['main'].body)
+
+On the other hand, if you need to match the constant with a specific value, you can directly
+use ``is_expr``. This could be useful for algebraic simplify.
+
+.. code-block:: python
+
+    def test_match_plus_zero():
+        zero = (is_expr(relay.const(0)) | is_expr(relay.const(0.0)))
+        pattern = wildcard() + zero
+        
+        x = relay.Var('x')
+        y = x + relay.const(0)
+        assert pattern.match(y)
+
+The next example is matching function nodes with a specific attribute:
+
+.. code-block:: python
+
+    def test_match_function():
+        pattern = wildcard().has_attr({"Composite": "add"})
+
+        x = relay.var('x')
+        y = relay.var('y')
+        f = relay.Function([x, y], x + y).with_attr("Composite", "add")
+        assert pattern.match(f)
+
+Matching Diamonds and Post-Dominator Graphs
+*******************************************
+
 The next example is matching a diamond with two inputs at the top of the diamond::
 
     def test_match_diamond():
         # Pattern
-        is_conv2d = is_op('nn.conv2d')(is_input(), is_input())
+        is_conv2d = is_op('nn.conv2d')(is_var(), is_var())
         path1 = is_op('nn.relu')(is_conv2d)
         path2 = is_op('nn.leaky_relu')(is_conv2d)
         diamond = is_op('add')(path1, path2)
@@ -67,11 +209,11 @@ The next example is matching a diamond with two inputs at the top of the diamond
         # Check
         assert diamond.match(out)
 
-The final example  is matching diamonds with a post-dominator relationship. We embed dominator analysis as type of matching in the pattern language in order to allow for pattern matching with unknown topology. This is important because we want to be able to use the language to describe fuse patterns, like elementwise operations followed by a conv2d::
+The final example is matching diamonds with a post-dominator relationship. We embed dominator analysis as type of matching in the pattern language in order to allow for pattern matching with unknown topology. This is important because we want to be able to use the language to describe fuse patterns, like elementwise operations followed by a conv2d::
 
     def test_match_dom_diamond():
         # Pattern
-        is_conv2d = is_op('nn.conv2d')(is_input(), is_input())
+        is_conv2d = is_op('nn.conv2d')(is_var(), is_var())
         reduction = is_op('add')(wildcard(), wildcard())
         diamond = dominates(is_conv2d, is_elemwise, reduction)
 
@@ -86,8 +228,8 @@ The final example  is matching diamonds with a post-dominator relationship. We e
         # Check
         assert diamond.match(out)
 
-Design
-======
+Pattern Language Design
+=======================
 
 The pattern language proposed is designed to be a mirror of Relay's IR with additional support for common scenarios. The goal of the pattern language is to provide a regular-expression like capability for matching data-flow graphs and doing rewriting.
 
@@ -98,7 +240,12 @@ The high level design is to introduce a language of patterns for now we propose
             | pattern(pattern1, ... patternN)
             | has_type(pattern, type)
             | has_attr(pattern, attrs)
-            | is_input(name)
+            | is_var(name)
+            | is_constant()
+            | is_expr(expr)
+            | is_op(op_name)
+            | is_tuple()
+            | is_tuple_get_item()
             | pattern1 `|` pattern2
             | dominates(parent_pattern, path_pattern, child_pattern)
 
@@ -124,10 +271,10 @@ Attribute Pattern
 
 Check that the operator matched by the pattern has an attribute with a particular value.
 
-Input
-*****
+Variable Pattern
+****************
 
-Check that the expression is an input, i.e has no parents and is a variable.
+Check that the expression is a relay Variable, and optional provide a name to match to the Variable name.
 
 
 Alternate
@@ -139,3 +286,124 @@ Domination
 **********
 
 Match child pattern, find a match for the parent pattern, insuring that the child ultimately dominates the parrent (i.e., no nodes outside the pattern use outputs of the parent), and that ever node betwen the child and the pattern matches the path pattern.
+
+Applications
+============
+
+The pattern language provides not only the pattern matching but also pattern processing.
+Here we introduce two pattern processing approaches and provide some examples.
+
+Pattern Rewriting
+*****************
+
+If you would like to replace the matched pattern with another subgraph, you can leverage
+the ``rewrite`` transformation. Here is an example of rewriting a series of arithmetic operators
+with a single batch_norm op:
+
+.. code-block:: python
+
+    class BatchnormCallback(DFPatternCallback):
+        # A callback class to rewrite the matched pattern to a batch_norm op.
+        def __init__(self):
+            self.x = wildcard()
+            self.var = wildcard()
+            self.mean = wildcard()
+            self.beta = wildcard()
+            self.gamma = wildcard()
+            self.eps = wildcard()
+            
+            self.pattern = self.gamma * (self.x - self.mean)/is_op("sqrt")(self.var + self.eps) + self.beta
+
+        def callback(self, pre, post, node_map):
+            x = node_map[self.x][0]
+            var = node_map[self.var][0]
+            mean = node_map[self.mean][0]
+            beta = node_map[self.beta][0]
+            gamma = node_map[self.gamma][0]
+            eps = node_map[self.eps][0]
+            return relay.op.nn.batch_norm(x, gamma, beta, mean, var, epsilon = eps.data.asnumpy().item())[0]
+
+        # A graph of arithmetic operators that are functional equivalent to batch_norm.
+        x = relay.var('x')
+        var = relay.var('var')
+        mean = relay.var('mean')
+        beta = relay.var('beta')
+        gamma = relay.var('gamma')
+        BN = gamma * (x - mean)/relay.op.sqrt(var + relay.const(1e-5)) + beta
+
+        from tvm.relay.dataflow_pattern import rewrite
+        out = rewrite(BatchnormCallback(), BN)
+        assert tvm.ir.structural_equal(out, relay.op.nn.batch_norm(x, gamma, beta, mean, var, epsilon = 1e-5)[0])
+
+The function ``def callback(self, pre, post, node_map)`` will be invoked when the rewriter matches
+``self.pattern``. ``node_map`` is a dictionary mapping from pattern nodes to matched nodes in the graph.
+
+Pattern Partitioning
+********************
+
+If you would like to perform a more complex processing for matched subgraphs and you are not
+satisfied with ``rewrite``, you may consider partitioning the matched subgraphs to a separate
+Relay function and perform other processes to the function. Here we use ``pattern.partition``
+to create a new Relay function for each matched subgraph. The functionality is similar to
+the op fusion pass in TVM:
+
+.. code-block:: python
+
+    # A pattern matching conv2d+relu.
+    pattern = is_op("nn.relu")(is_op("nn.conv2d")(wildcard(), wildcard()))
+
+    # A graph.
+    x = relay.var('input')
+    w = relay.var('weight')
+    conv2d = relay.op.nn.conv2d(x, w)
+    relu = relay.op.nn.relu(conv2d)
+    print('relu')
+    # free_var %x: Tensor[(1, 3, 224, 224), float32]
+    # free_var %w: Tensor[(3, 3, 3, 3), float32]
+    # %0 = nn.conv2d(%x, %w, padding=[0, 0, 0, 0]) /* ty=Tensor[(1, 3, 222, 222), float32] */;
+    # free_var %b: Tensor[(3), float32]
+    # nn.bias_add(%0, %b) /* ty=Tensor[(1, 3, 222, 222), float32] */
+
+    # After partition.
+    print(pattern.partition(relu))
+    # free_var %x: Tensor[(1, 3, 224, 224), float32]
+    # free_var %w: Tensor[(3, 3, 3, 3), float32]
+    # free_var %b: Tensor[(3), float32]
+    # %1 = fn (%FunctionVar_0_0, %FunctionVar_0_1,
+    #          %FunctionVar_0_2, PartitionedFromPattern="nn.conv2d_nn.bias_add_") {
+    #   %0 = nn.conv2d(%FunctionVar_0_0, %FunctionVar_0_1, padding=[0, 0, 0, 0]);
+    #   nn.bias_add(%0, %FunctionVar_0_2)
+    # };
+    # %1(%x, %w, %b)
+
+Note that you can also specify the attributes for the created functions:
+
+.. code-block:: python
+
+    print(pattern.partition(relu, {'Composite': 'one_layer'}))
+    # free_var %x: Tensor[(1, 3, 224, 224), float32]
+    # free_var %w: Tensor[(3, 3, 3, 3), float32]
+    # free_var %b: Tensor[(3), float32]
+    # %1 = fn (%FunctionVar_0_0, %FunctionVar_0_1,
+    #          %FunctionVar_0_2, Composite="one_layer",
+    #                            PartitionedFromPattern="nn.conv2d_nn.bias_add_") {
+    #   %0 = nn.conv2d(%FunctionVar_0_0, %FunctionVar_0_1, padding=[0, 0, 0, 0]);
+    #   nn.bias_add(%0, %FunctionVar_0_2)
+    # };
+    # %1(%x, %w, %b)
+
+If you need a customized checking function that cannot be specified using pattern language,
+you can specify ``check`` function when partitioning. The following example demonstrates a
+case that checks input data layout of a subgraph:
+
+.. code-block:: python
+
+    def check(pre):
+        conv = pre.args[0]
+        return (conv.attrs.data_layout == "NCHW") and bool(conv.checked_type.shape[0] == 1)
+
+    pattern.partition(relu, check=check)
+
+In this example, we check if the first argument of the matched subgraph (i.e., ``pre.args[0]``)
+has data layout "NCHW" and if its batch size is 1. This feature is useful if the conditions
+of matching a pattern cannot be verified by analyzing the pattern itself.
diff --git a/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt b/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt
index cd650b9..bba1d45 100644
--- a/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt
@@ -5,11 +5,11 @@
 
 Computation times
 =================
-**00:52.399** total execution time for **tutorials_autotvm** files:
-
-- **00:29.032**: :ref:`sphx_glr_tutorials_autotvm_tune_simple_template.py` (``tune_simple_template.py``)
-- **00:22.806**: :ref:`sphx_glr_tutorials_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)
-- **00:00.153**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)
-- **00:00.137**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)
-- **00:00.135**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_mobile_gpu.py` (``tune_relay_mobile_gpu.py``)
-- **00:00.135**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)
+**00:53.012** total execution time for **tutorials_autotvm** files:
+
+- **00:28.544**: :ref:`sphx_glr_tutorials_autotvm_tune_simple_template.py` (``tune_simple_template.py``)
+- **00:23.866**: :ref:`sphx_glr_tutorials_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)
+- **00:00.169**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)
+- **00:00.147**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)
+- **00:00.144**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)
+- **00:00.143**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_mobile_gpu.py` (``tune_relay_mobile_gpu.py``)
diff --git a/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt b/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt
index 055a4ca..635e539 100644
--- a/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt
+++ b/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt
@@ -234,26 +234,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  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 2   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 3   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 4   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 5   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 6   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 7   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 8   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 9   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 10  GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 11  GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 12  GFLOPS: 70.83/70.83     result: MeasureResult(costs=(0.003268532825,), error_no=0, all_cost=1.603607416152954, timestamp=1590214109.7394354)    [('tile_f', [-1, 1, 1, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 16, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,8533140
-    No: 13  GFLOPS: 0.00/70.83      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 14  GFLOPS: 0.00/70.83      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 15  GFLOPS: 0.00/70.83      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 16  GFLOPS: 0.00/70.83      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 17  GFLOPS: 0.00/70.83      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 18  GFLOPS: 0.00/70.83      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (3) /workspace/build/libtvm.so(+0x4c2c04) [0x7ffa99076c04]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7ffa990766a6]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 19  GFLOPS: 789.84/789.84   result: MeasureResult(costs=(0.0002930994545454545,), error_no=0, all_cost=1.9248723983764648, timestamp=1590214114.025119)     [('tile_f', [-1, 2, 1, 1]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 32, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9699801
-    No: 20  GFLOPS: 6.97/789.84     result: MeasureResult(costs=(0.03322324,), error_no=0, all_cost=1.646322250366211, timestamp=1590214114.9072316)        [('tile_f', [-1, 2, 1, 16]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 2, 32]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7502165
+    No: 1   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 2   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 3   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 4   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 5   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 6   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 7   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 8   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 9   GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 10  GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 11  GFLOPS: 0.00/0.00       result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 12  GFLOPS: 63.43/63.43     result: MeasureResult(costs=(0.003649818875,), error_no=0, all_cost=1.636338472366333, timestamp=1592418257.054786)     [('tile_f', [-1, 1, 1, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 16, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,8533140
+    No: 13  GFLOPS: 0.00/63.43      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 14  GFLOPS: 0.00/63.43      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 15  GFLOPS: 0.00/63.43      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 16  GFLOPS: 0.00/63.43      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 17  GFLOPS: 0.00/63.43      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 18  GFLOPS: 0.00/63.43      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (3) /workspace/build/libtvm.so(+0x4cc4d4) [0x7f25939fe4d4]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f25939fdf76]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 19  GFLOPS: 777.37/777.37   result: MeasureResult(costs=(0.00029780138189845474,), error_no=0, all_cost=2.0230767726898193, timestamp=1592418261.583229)    [('tile_f', [-1, 2, 1, 1]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 32, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9699801
+    No: 20  GFLOPS: 6.95/777.37     result: MeasureResult(costs=(0.03328762325,), error_no=0, all_cost=1.7611923217773438, timestamp=1592418262.514915)     [('tile_f', [-1, 2, 1, 16]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 2, 32]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7502165
 
 
 
@@ -307,7 +307,7 @@ and measure running time.
 
     Best config:
     [('tile_f', [-1, 2, 1, 1]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 32, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9699801
-    Time cost of this operator: 0.000354
+    Time cost of this operator: 0.000389
 
 
 
diff --git a/docs/_sources/tutorials/autotvm/tune_relay_arm.rst.txt b/docs/_sources/tutorials/autotvm/tune_relay_arm.rst.txt
index 33e5a27..1f7addb 100644
--- a/docs/_sources/tutorials/autotvm/tune_relay_arm.rst.txt
+++ b/docs/_sources/tutorials/autotvm/tune_relay_arm.rst.txt
@@ -337,7 +337,7 @@ Finally, we launch tuning jobs and evaluate the end-to-end performance.
         # compile kernels with history best records
         with autotvm.apply_history_best(log_file):
             print("Compile...")
-            with relay.build_config(opt_level=3):
+            with tvm.transform.PassContext(opt_level=3):
                 graph, lib, params = relay.build_module.build(
                     mod, target=target, params=params)
 
diff --git a/docs/_sources/tutorials/autotvm/tune_relay_cuda.rst.txt b/docs/_sources/tutorials/autotvm/tune_relay_cuda.rst.txt
index 0a14896..8f83263 100644
--- a/docs/_sources/tutorials/autotvm/tune_relay_cuda.rst.txt
+++ b/docs/_sources/tutorials/autotvm/tune_relay_cuda.rst.txt
@@ -250,7 +250,7 @@ Finally, we launch tuning jobs and evaluate the end-to-end performance.
         # compile kernels with history best records
         with autotvm.apply_history_best(log_file):
             print("Compile...")
-            with relay.build_config(opt_level=3):
+            with tvm.transform.PassContext(opt_level=3):
                 graph, lib, params = relay.build_module.build(
                     mod, target=target, params=params)
 
diff --git a/docs/_sources/tutorials/autotvm/tune_relay_mobile_gpu.rst.txt b/docs/_sources/tutorials/autotvm/tune_relay_mobile_gpu.rst.txt
index 641e488..f343f9f 100644
--- a/docs/_sources/tutorials/autotvm/tune_relay_mobile_gpu.rst.txt
+++ b/docs/_sources/tutorials/autotvm/tune_relay_mobile_gpu.rst.txt
@@ -334,7 +334,7 @@ Finally, we launch tuning jobs and evaluate the end-to-end performance.
         # compile kernels with history best records
         with autotvm.apply_history_best(log_file):
             print("Compile...")
-            with relay.build_config(opt_level=3):
+            with tvm.transform.PassContext(opt_level=3):
                 graph, lib, params = relay.build_module.build(
                     mod, target=target, params=params, target_host=target_host)
             # export library
diff --git a/docs/_sources/tutorials/autotvm/tune_relay_x86.rst.txt b/docs/_sources/tutorials/autotvm/tune_relay_x86.rst.txt
index a18eff3..5764df8 100644
--- a/docs/_sources/tutorials/autotvm/tune_relay_x86.rst.txt
+++ b/docs/_sources/tutorials/autotvm/tune_relay_x86.rst.txt
@@ -211,7 +211,7 @@ Finally, we launch tuning jobs and evaluate the end-to-end performance.
         # compile kernels with graph-level best records
         with autotvm.apply_graph_best(graph_opt_sch_file):
             print("Compile...")
-            with relay.build_config(opt_level=3):
+            with tvm.transform.PassContext(opt_level=3):
                 graph, lib, params = relay.build_module.build(
                     mod, target=target, params=params)
 
diff --git a/docs/_sources/tutorials/autotvm/tune_simple_template.rst.txt b/docs/_sources/tutorials/autotvm/tune_simple_template.rst.txt
index d1e5f04..eecf258 100644
--- a/docs/_sources/tutorials/autotvm/tune_simple_template.rst.txt
+++ b/docs/_sources/tutorials/autotvm/tune_simple_template.rst.txt
@@ -361,16 +361,16 @@ used to get the best config later.
  .. code-block:: none
 
     Get devices for measurement successfully!
-    No: 1   GFLOPS: 7.05/7.05       result: MeasureResult(costs=(0.0380749568,), error_no=0, all_cost=0.8678317070007324, timestamp=1590214075.6415935)     [('tile_y', [-1, 8]), ('tile_x', [-1, 8])],None,33
-    No: 2   GFLOPS: 2.28/7.05       result: MeasureResult(costs=(0.11760239880000001,), error_no=0, all_cost=2.1851308345794678, timestamp=1590214077.9269166)      [('tile_y', [-1, 8]), ('tile_x', [-1, 2])],None,13
-    No: 3   GFLOPS: 7.43/7.43       result: MeasureResult(costs=(0.036118973799999995,), error_no=0, all_cost=1.1442148685455322, timestamp=1590214078.9067369)     [('tile_y', [-1, 16]), ('tile_x', [-1, 128])],None,74
-    No: 4   GFLOPS: 4.50/7.43       result: MeasureResult(costs=(0.059688098599999996,), error_no=0, all_cost=1.3526537418365479, timestamp=1590214080.259163)      [('tile_y', [-1, 16]), ('tile_x', [-1, 32])],None,54
-    No: 5   GFLOPS: 6.40/7.43       result: MeasureResult(costs=(0.041930579,), error_no=0, all_cost=0.9435508251190186, timestamp=1590214081.3267553)      [('tile_y', [-1, 128]), ('tile_x', [-1, 8])],None,37
-    No: 6   GFLOPS: 6.49/7.43       result: MeasureResult(costs=(0.0413677544,), error_no=0, all_cost=0.943490743637085, timestamp=1590214082.3985152)      [('tile_y', [-1, 64]), ('tile_x', [-1, 8])],None,36
-    No: 7   GFLOPS: 27.63/27.63     result: MeasureResult(costs=(0.0097154568,), error_no=0, all_cost=0.5158059597015381, timestamp=1590214082.9561296)     [('tile_y', [-1, 1]), ('tile_x', [-1, 128])],None,70
-    No: 8   GFLOPS: 21.87/27.63     result: MeasureResult(costs=(0.012276801399999999,), error_no=0, all_cost=0.5109748840332031, timestamp=1590214083.5522263)     [('tile_y', [-1, 4]), ('tile_x', [-1, 512])],None,92
-    No: 9   GFLOPS: 0.64/27.63      result: MeasureResult(costs=(0.4200816336,), error_no=0, all_cost=7.005804777145386, timestamp=1590214090.669096)       [('tile_y', [-1, 512]), ('tile_x', [-1, 2])],None,19
-    No: 10  GFLOPS: 0.00/27.63      result: MeasureResult(costs=(RuntimeError('Traceback (most recent call last):\n  [bt] (5) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]\n  [bt] (4) /workspace/build/libtvm.so(+0xe35dd2) [0x7ffa999e9dd2]\n  [bt] (3) /workspace/build/libtvm.so(tvm::runtime::RPCWrappedFunc::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const+0x235) [0x7ffa999ec7c5]\n  [bt] (2) /workspace/build/libtvm.so(tvm::runtime::RPCClientSession::CallF [...]
+    No: 1   GFLOPS: 6.66/6.66       result: MeasureResult(costs=(0.040317947199999996,), error_no=0, all_cost=0.9689126014709473, timestamp=1592418223.5055163)     [('tile_y', [-1, 8]), ('tile_x', [-1, 8])],None,33
+    No: 2   GFLOPS: 2.20/6.66       result: MeasureResult(costs=(0.1219625674,), error_no=0, all_cost=2.2740604877471924, timestamp=1592418225.8873503)     [('tile_y', [-1, 8]), ('tile_x', [-1, 2])],None,13
+    No: 3   GFLOPS: 7.04/7.04       result: MeasureResult(costs=(0.038118197799999996,), error_no=0, all_cost=1.473351001739502, timestamp=1592418226.9196477)      [('tile_y', [-1, 16]), ('tile_x', [-1, 128])],None,74
+    No: 4   GFLOPS: 4.35/7.04       result: MeasureResult(costs=(0.061688380200000004,), error_no=0, all_cost=1.7359662055969238, timestamp=1592418228.323466)      [('tile_y', [-1, 16]), ('tile_x', [-1, 32])],None,54
+    No: 5   GFLOPS: 5.80/7.04       result: MeasureResult(costs=(0.046256228999999996,), error_no=0, all_cost=1.5193562507629395, timestamp=1592418229.4731617)     [('tile_y', [-1, 128]), ('tile_x', [-1, 8])],None,37
+    No: 6   GFLOPS: 6.15/7.04       result: MeasureResult(costs=(0.0436479732,), error_no=0, all_cost=1.2018964290618896, timestamp=1592418230.6016724)     [('tile_y', [-1, 64]), ('tile_x', [-1, 8])],None,36
+    No: 7   GFLOPS: 25.13/25.13     result: MeasureResult(costs=(0.0106810936,), error_no=0, all_cost=0.6128425598144531, timestamp=1592418231.2234533)     [('tile_y', [-1, 1]), ('tile_x', [-1, 128])],None,70
+    No: 8   GFLOPS: 21.21/25.13     result: MeasureResult(costs=(0.012655053199999999,), error_no=0, all_cost=0.5169622898101807, timestamp=1592418231.8622746)     [('tile_y', [-1, 4]), ('tile_x', [-1, 512])],None,92
+    No: 9   GFLOPS: 0.84/25.13      result: MeasureResult(costs=(0.3187542196,), error_no=0, all_cost=5.419588088989258, timestamp=1592418237.4022605)      [('tile_y', [-1, 512]), ('tile_x', [-1, 2])],None,19
+    No: 10  GFLOPS: 0.00/25.13      result: MeasureResult(costs=(RuntimeError('Traceback (most recent call last):\n  [bt] (5) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]\n  [bt] (4) /workspace/build/libtvm.so(+0xe791f2) [0x7f25943ab1f2]\n  [bt] (3) /workspace/build/libtvm.so(tvm::runtime::RPCWrappedFunc::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const+0x26b) [0x7f25943ae56b]\n  [bt] (2) /workspace/build/libtvm.so(tvm::runtime::RPCClientSession::CallF [...]
 
 
 
diff --git a/docs/_sources/tutorials/cross_compilation_and_rpc.rst.txt b/docs/_sources/tutorials/cross_compilation_and_rpc.rst.txt
index e3f17e7..0c50c9a 100644
--- a/docs/_sources/tutorials/cross_compilation_and_rpc.rst.txt
+++ b/docs/_sources/tutorials/cross_compilation_and_rpc.rst.txt
@@ -235,7 +235,7 @@ device and returns the measured cost. Network overhead is excluded.
 
  .. code-block:: none
 
-    1.683e-07 secs/op
+    1.723e-07 secs/op
 
 
 
diff --git a/docs/_sources/tutorials/dev/low_level_custom_pass.rst.txt b/docs/_sources/tutorials/dev/low_level_custom_pass.rst.txt
index 9beb91a..6925319 100644
--- a/docs/_sources/tutorials/dev/low_level_custom_pass.rst.txt
+++ b/docs/_sources/tutorials/dev/low_level_custom_pass.rst.txt
@@ -75,9 +75,9 @@ our customized lowering pass to manipulate the IR directly instead of using sche
     primfn(a_1: handle, b_1: handle, c_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
       buffers = {a: Buffer(a_2: handle, float32, [128], []),
-                 c: Buffer(c_2: handle, float32, [128], []),
-                 b: Buffer(b_2: handle, float32, [128], [])}
-      buffer_map = {b_1: b, c_1: c, a_1: a} {
+                 b: Buffer(b_2: handle, float32, [128], []),
+                 c: Buffer(c_2: handle, float32, [128], [])}
+      buffer_map = {c_1: c, b_1: b, a_1: a} {
       for (i: int32, 0, 128) {
         c_2[i] = ((float32*)a_2[i]) + (float32*)b_2[i]))
       }
@@ -115,7 +115,7 @@ return value of ``func`` will be ignored.
 
     loops = []
     def find_width8(op):
-        """ Find all the 'For' nodes whose extent can be divided by 8. """
+        """ Find all the 'tir.For' nodes whose extent can be divided by 8. """
         if isinstance(op, tvm.tir.For):
             if isinstance(op.extent, tvm.tir.IntImm):
                 if op.extent.value % 8 == 0:
@@ -169,7 +169,7 @@ this value.
         # The last list arugment indicates what kinds of nodes will be transformed.
         # Thus, in this case only `For` nodes will call `vectorize8`
         return f.with_body(
-            tvm.tir.stmt_functor.ir_transform(f.body, None, vectorize8, ['For']))
+            tvm.tir.stmt_functor.ir_transform(f.body, None, vectorize8, ['tir.For']))
 
 
 
@@ -183,9 +183,8 @@ Glue to Lowering
 So far, we are done with writing this IR transformation pass. What we need to do next is to glue
 this pass to TVM's lower pass.
 
-In TVM, there is a property called ``BuildConfig``. You can use this property to customize your
-own lowering options. In this case, we inject the pass written above into the TVM standard lowering
-pass by feeding **a list of tuple** as argument to ``add_lower_pass``. "Tuple" indicates different
+In this case, we inject the pass written above into the TVM standard lowering
+pass by feeding **a list of tuple** as argument to ``tir.add_lower_pass``. "Tuple" indicates different
 phases of lowering. In TVM, there are four phases of lowering and user-customized ones will be
 called after each phase is done.
 
@@ -203,7 +202,7 @@ Thus, a good place to put this transformation pass is just after Phase 1.
 .. code-block:: default
 
 
-    with tvm.target.build_config(add_lower_pass=[(1, vectorize)]) as cfg:
+    with tvm.transform.PassContext(config={"tir.add_lower_pass": [(1, vectorize)]}):
         print(tvm.lower(sch, [a, b, c]))
 
 
@@ -237,7 +236,7 @@ This tutorial gives a quick view of writing a customized IR transformation pass:
 - Use ``tvm.tir.stmt_functor.post_order_visit`` to gather information on each IR nodes.
 - Use ``tvm.tir.stmt_functor.ir_transform`` to transform IR nodes.
 - Wrap up two above to write an IR-transformation function.
-- Use ``tvm.target.build_config`` to put this function to TVM lowering pass
+- Use ``tvm.transform.PassContext`` to put this function to TVM lowering pass
 
 
 
diff --git a/docs/_sources/tutorials/dev/relay_pass_infra.rst.txt b/docs/_sources/tutorials/dev/relay_pass_infra.rst.txt
index 2cde6d2..b758cc8 100644
--- a/docs/_sources/tutorials/dev/relay_pass_infra.rst.txt
+++ b/docs/_sources/tutorials/dev/relay_pass_infra.rst.txt
@@ -294,7 +294,7 @@ for users to customize the optimization level that they want to execute.
 .. code-block:: default
 
 
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         mod2 = seq(mod)
     print(mod2)
 
@@ -334,7 +334,7 @@ identical addition operations.
 .. code-block:: default
 
 
-    with relay.build_config(opt_level=3, disabled_pass=["EliminateCommonSubexpr"]):
+    with tvm.transform.PassContext(opt_level=3, disabled_pass=["EliminateCommonSubexpr"]):
         mod3 = seq(mod)
     print(mod3)
 
@@ -371,12 +371,12 @@ alteration pass falls in such category.
 .. code-block:: default
 
 
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         mod4 = seq(mod)
     print(mod4)
 
     seq1 = tvm.transform.Sequential([relay.transform.AlterOpLayout()])
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         with tvm.target.create("llvm"):
             mod5 = seq1(mod)
     print(mod5)
@@ -502,7 +502,7 @@ them.
                                     relay.transform.EliminateCommonSubexpr(),
                                     relay.transform.FuseOps(),
                                     tvm.transform.PrintIR()])
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         mod = seq(mod)
 
     print("done")
diff --git a/docs/_sources/tutorials/dev/sg_execution_times.rst.txt b/docs/_sources/tutorials/dev/sg_execution_times.rst.txt
index dac8111..afb89de 100644
--- a/docs/_sources/tutorials/dev/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/dev/sg_execution_times.rst.txt
@@ -5,7 +5,7 @@
 
 Computation times
 =================
-**00:00.508** total execution time for **tutorials_dev** files:
+**00:00.472** total execution time for **tutorials_dev** files:
 
-- **00:00.371**: :ref:`sphx_glr_tutorials_dev_relay_pass_infra.py` (``relay_pass_infra.py``)
-- **00:00.137**: :ref:`sphx_glr_tutorials_dev_low_level_custom_pass.py` (``low_level_custom_pass.py``)
+- **00:00.321**: :ref:`sphx_glr_tutorials_dev_relay_pass_infra.py` (``relay_pass_infra.py``)
+- **00:00.151**: :ref:`sphx_glr_tutorials_dev_low_level_custom_pass.py` (``low_level_custom_pass.py``)
diff --git a/docs/_sources/tutorials/frontend/build_gcn.rst.txt b/docs/_sources/tutorials/frontend/build_gcn.rst.txt
index bbf29b0..d364c9c 100644
--- a/docs/_sources/tutorials/frontend/build_gcn.rst.txt
+++ b/docs/_sources/tutorials/frontend/build_gcn.rst.txt
@@ -430,7 +430,7 @@ Export the weigths from PyTorch model to Python Dict
     mod = tvm.IRModule()
     mod["main"] = func
     # Build with Relay
-    with relay.build_config(opt_level=0): # Currently only support opt_level=0
+    with tvm.transform.PassContext(opt_level=0): # Currently only support opt_level=0
         graph, lib, params = relay.build(mod, target, params=params)
 
     # Generate graph runtime
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 9a5ea82..689fd88 100644
--- a/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt
@@ -314,7 +314,7 @@ to run this tutorial with a real device.
     shape_dict = {input_name: x.shape}
     mod, params = relay.frontend.from_keras(keras_mobilenet_v2, shape_dict)
 
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         graph, lib, params = relay.build(mod, target=target,
                                          target_host=target_host, params=params)
 
@@ -415,7 +415,7 @@ Execute on TVM
 
     TVM prediction top-1: tiger cat
     Evaluate inference time cost...
-    Mean inference time (std dev): 3.64 ms (0.04 ms)
+    Mean inference time (std dev): 5.55 ms (0.04 ms)
 
 
 
diff --git a/docs/_sources/tutorials/frontend/deploy_model_on_rasp.rst.txt b/docs/_sources/tutorials/frontend/deploy_model_on_rasp.rst.txt
index 692f729..e5c3dea 100644
--- a/docs/_sources/tutorials/frontend/deploy_model_on_rasp.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_model_on_rasp.rst.txt
@@ -240,7 +240,7 @@ to run this tutorial with a real device.
         # The above line is a simple form of
         # target = tvm.target.create('llvm -device=arm_cpu -model=bcm2837 -target=armv7l-linux-gnueabihf -mattr=+neon')
 
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         graph, lib, params = relay.build(func, target, params=params)
 
     # After `relay.build`, you will get three return values: graph,
diff --git a/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt b/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt
index be17abc..e600e83 100644
--- a/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt
@@ -84,7 +84,7 @@ Helper functions to run the demo
 
 
     def run_tvm_model(mod, params, input_name, inp, target="llvm"):
-        with relay.build_config(opt_level=3):
+        with tvm.transform.PassContext(opt_level=3):
             json, lib, params = relay.build(mod, target=target, params=params)
 
         runtime = tvm.contrib.graph_runtime.create(json, lib, tvm.context(target, 0))
@@ -352,7 +352,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
  .. code-block:: none
 
-    Elapsed average ms: 10.2562221
+    Elapsed average ms: 14.098849819999998
 
 
 
diff --git a/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt b/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt
index 339400b..830791a 100644
--- a/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt
@@ -10,6 +10,7 @@
 Deploy a Framework-prequantized Model with TVM - Part 3 (TFLite)
 ================================================================
 **Author**: `Siju Samuel <https://github.com/siju-samuel>`_
+
 Welcome to part 3 of the Deploy Framework-Prequantized Model with TVM tutorial.
 In this part, we will start with a Quantized TFLite graph and then compile and execute it via TVM.
 
@@ -284,7 +285,7 @@ target platform that you are interested in.
 .. code-block:: default
 
     target = 'llvm'
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         graph, lib, params = relay.build_module.build(mod, target=target,
                                                       params=params)
 
@@ -360,7 +361,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
  .. code-block:: none
 
-    Elapsed average ms: 24.98644659
+    Elapsed average ms: 35.247464699999995
 
 
 
@@ -393,7 +394,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  58.848 seconds)
+   **Total running time of the script:** ( 2 minutes  10.254 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 c8b8d36..9f616a0 100644
--- a/docs/_sources/tutorials/frontend/deploy_ssd_gluoncv.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_ssd_gluoncv.rst.txt
@@ -117,7 +117,7 @@ Convert and compile model for CPU.
 
     def build(target):
         mod, params = relay.frontend.from_mxnet(block, {"data": dshape})
-        with relay.build_config(opt_level=3):
+        with tvm.transform.PassContext(opt_level=3):
             graph, lib, params = relay.build(mod, target, params=params)
         return graph, lib, params
 
diff --git a/docs/_sources/tutorials/frontend/from_caffe2.rst.txt b/docs/_sources/tutorials/frontend/from_caffe2.rst.txt
index d74941f..ddb9a53 100644
--- a/docs/_sources/tutorials/frontend/from_caffe2.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_caffe2.rst.txt
@@ -105,13 +105,13 @@ Compile the model on Relay
     dtype_dict = {input_name: data.dtype}
 
     # parse Caffe2 model and convert into Relay computation graph
-    from tvm import relay
+    from tvm import relay, transform
     mod, params = relay.frontend.from_caffe2(resnet50.init_net, resnet50.predict_net, shape_dict, dtype_dict)
 
     # compile the model
     # target x86 CPU
     target = 'llvm'
-    with relay.build_config(opt_level=3):
+    with transform.PassContext(opt_level=3):
         graph, lib, params = relay.build(mod, target, params=params)
 
 
diff --git a/docs/_sources/tutorials/frontend/from_coreml.rst.txt b/docs/_sources/tutorials/frontend/from_coreml.rst.txt
index 5e005e0..eb48cb6 100644
--- a/docs/_sources/tutorials/frontend/from_coreml.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_coreml.rst.txt
@@ -110,7 +110,7 @@ We should be familiar with the process right now.
     # Parse CoreML model and convert into Relay computation graph
     mod, params = relay.frontend.from_coreml(mlmodel, shape_dict)
 
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         graph, lib, params = relay.build(mod,
                                          target,
                                          params=params)
diff --git a/docs/_sources/tutorials/frontend/from_darknet.rst.txt b/docs/_sources/tutorials/frontend/from_darknet.rst.txt
index bf439e3..af3f0c7 100644
--- a/docs/_sources/tutorials/frontend/from_darknet.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_darknet.rst.txt
@@ -133,7 +133,7 @@ compile the model
     data = np.empty([batch_size, net.c, net.h, net.w], dtype)
     shape = {'data': data.shape}
     print("Compiling the model...")
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         graph, lib, params = relay.build(mod,
                                          target=target,
                                          target_host=target_host,
diff --git a/docs/_sources/tutorials/frontend/from_keras.rst.txt b/docs/_sources/tutorials/frontend/from_keras.rst.txt
index b8597c0..410c54d 100644
--- a/docs/_sources/tutorials/frontend/from_keras.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_keras.rst.txt
@@ -121,7 +121,7 @@ convert the keras model(NHWC layout) to Relay format(NCHW layout).
     # compile the model
     target = 'cuda'
     ctx = tvm.gpu(0)
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         executor = relay.build_module.create_executor('graph', mod, ctx, target)
 
 
diff --git a/docs/_sources/tutorials/frontend/from_mxnet.rst.txt b/docs/_sources/tutorials/frontend/from_mxnet.rst.txt
index 1069214..b24a761 100644
--- a/docs/_sources/tutorials/frontend/from_mxnet.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_mxnet.rst.txt
@@ -124,7 +124,7 @@ now compile the graph
 .. code-block:: default
 
     target = 'cuda'
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         graph, lib, params = relay.build(func, target, params=params)
 
 
diff --git a/docs/_sources/tutorials/frontend/from_onnx.rst.txt b/docs/_sources/tutorials/frontend/from_onnx.rst.txt
index fbe90cf..e201470 100644
--- a/docs/_sources/tutorials/frontend/from_onnx.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_onnx.rst.txt
@@ -112,7 +112,7 @@ Compile the model with relay
     shape_dict = {input_name: x.shape}
     mod, params = relay.frontend.from_onnx(onnx_model, shape_dict)
 
-    with relay.build_config(opt_level=1):
+    with tvm.transform.PassContext(opt_level=1):
         intrp = relay.build_module.create_executor('graph', mod, tvm.cpu(0), target)
 
 
@@ -125,7 +125,7 @@ Compile the model with relay
 
  .. code-block:: none
 
-    /workspace/docs/../python/tvm/relay/frontend/onnx.py:1999: UserWarning: Mismatched attribute type in ' : kernel_shape'
+    /workspace/docs/../python/tvm/relay/frontend/onnx.py:2286: 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))
@@ -151,7 +151,7 @@ Execute on TVM
 
  .. code-block:: none
 
-
    ...47%, 0.01 MB, 46 KB/s, 0 seconds passed
    ...94%, 0.02 MB, 92 KB/s, 0 seconds passed
    ...100%, 0.02 MB, 139 KB/s, 0 seconds passed
+
    ...47%, 0.01 MB, 755 KB/s, 0 seconds passed
    ...94%, 0.02 MB, 1410 KB/s, 0 seconds passed
    ...100%, 0.02 MB, 2077 KB/s, 0 seconds passed
     Cannot find config for target=llvm, workload=('conv2d_NCHWc.x86', ('TENSOR', (1, 32, 224, 224), 'float32'), ('TENSOR', (9, 32, 3, 3), 'float32'), (1, 1), (1, 1, 1, 1), (1, 1), 'NCHW', 'NCHW', 'float32'). A fallback configuration is used, which may bring great performance regression.
     Cannot find config for target=llvm, workload=('conv2d_NCHWc.x86', ('TENSOR', (1, 64, 224, 224), 'float32'), ('TENSOR', (32, 64, 3, 3), 'float32'), (1, 1), (1, 1, 1, 1), (1, 1), 'NCHW', 'NCHW', 'float32'). A fallback configuration is used, which may bring great performance regression.
     Cannot find config for target=llvm, workload=('conv2d_NCHWc.x86', ('TENSOR', (1, 1, 224, 224), 'float32'), ('TENSOR', (64, 1, 5, 5), 'float32'), (1, 1), (2, 2, 2, 2), (1, 1), 'NCHW', 'NCHW', 'float32'). A fallback configuration is used, which may bring great performance regression.
diff --git a/docs/_sources/tutorials/frontend/from_pytorch.rst.txt b/docs/_sources/tutorials/frontend/from_pytorch.rst.txt
index a76b2d8..dbd520b 100644
--- a/docs/_sources/tutorials/frontend/from_pytorch.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_pytorch.rst.txt
@@ -149,7 +149,7 @@ Compile the graph to llvm target with given input specification.
     target = 'llvm'
     target_host = 'llvm'
     ctx = tvm.cpu(0)
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         graph, lib, params = relay.build(mod,
                                          target=target,
                                          target_host=target_host,
diff --git a/docs/_sources/tutorials/frontend/from_tensorflow.rst.txt b/docs/_sources/tutorials/frontend/from_tensorflow.rst.txt
index 606fe21..8ff019d 100644
--- a/docs/_sources/tutorials/frontend/from_tensorflow.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_tensorflow.rst.txt
@@ -197,9 +197,9 @@ Results:
 
     ANTLR runtime and generated code versions disagree: 4.8!=4.7.2
     ANTLR runtime and generated code versions disagree: 4.8!=4.7.2
-    /workspace/docs/../python/tvm/relay/frontend/tensorflow.py:2822: UserWarning: Ignore the passed shape. Shape in graphdef will be used for operator DecodeJpeg/contents.
+    /workspace/docs/../python/tvm/relay/frontend/tensorflow.py:2843: 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:620: UserWarning: DecodeJpeg: It's a pass through, please handle preprocessing before input
+    /workspace/docs/../python/tvm/relay/frontend/tensorflow.py:684: 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.
 
@@ -218,7 +218,7 @@ Results:
 .. code-block:: default
 
 
-    with relay.build_config(opt_level=3):
+    with tvm.transform.PassContext(opt_level=3):
         graph, lib, params = relay.build(mod,
                                          target=target,
                                          target_host=target_host,
diff --git a/docs/_sources/tutorials/frontend/from_tflite.rst.txt b/docs/_sources/tutorials/frontend/from_tflite.rst.txt
index 7f8d67b..a23bc38 100644
--- a/docs/_sources/tutorials/frontend/from_tflite.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_tflite.rst.txt
@@ -170,14 +170,14 @@ Compile the model with relay
     input_dtype = "float32"
 
     # Parse TFLite model and convert it to a Relay module
-    from tvm import relay
+    from tvm import relay, transform
     mod, params = relay.frontend.from_tflite(tflite_model,
                                              shape_dict={input_tensor: input_shape},
                                              dtype_dict={input_tensor: input_dtype})
 
     # Build the module against to x86 CPU
     target = "llvm"
-    with relay.build_config(opt_level=3):
+    with transform.PassContext(opt_level=3):
         graph, lib, params = relay.build(mod, target, params=params)
 
 
diff --git a/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt b/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt
index 9fe9826..68534b2 100644
--- a/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,22 +5,22 @@
 
 Computation times
 =================
-**05:10.844** total execution time for **tutorials_frontend** files:
+**05:38.916** total execution time for **tutorials_frontend** files:
 
-- **01:58.848**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)
-- **00:30.833**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized.py` (``deploy_prequantized.py``)
-- **00:24.721**: :ref:`sphx_glr_tutorials_frontend_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)
-- **00:19.896**: :ref:`sphx_glr_tutorials_frontend_from_tflite.py` (``from_tflite.py``)
-- **00:19.457**: :ref:`sphx_glr_tutorials_frontend_deploy_quantized.py` (``deploy_quantized.py``)
-- **00:17.535**: :ref:`sphx_glr_tutorials_frontend_from_tensorflow.py` (``from_tensorflow.py``)
-- **00:16.073**: :ref:`sphx_glr_tutorials_frontend_from_darknet.py` (``from_darknet.py``)
-- **00:11.211**: :ref:`sphx_glr_tutorials_frontend_from_caffe2.py` (``from_caffe2.py``)
-- **00:09.834**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_android.py` (``deploy_model_on_android.py``)
-- **00:09.023**: :ref:`sphx_glr_tutorials_frontend_from_pytorch.py` (``from_pytorch.py``)
-- **00:08.170**: :ref:`sphx_glr_tutorials_frontend_from_keras.py` (``from_keras.py``)
-- **00:06.642**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)
-- **00:05.908**: :ref:`sphx_glr_tutorials_frontend_from_coreml.py` (``from_coreml.py``)
-- **00:04.626**: :ref:`sphx_glr_tutorials_frontend_from_mxnet.py` (``from_mxnet.py``)
-- **00:04.493**: :ref:`sphx_glr_tutorials_frontend_build_gcn.py` (``build_gcn.py``)
-- **00:02.112**: :ref:`sphx_glr_tutorials_frontend_using_external_lib.py` (``using_external_lib.py``)
-- **00:01.462**: :ref:`sphx_glr_tutorials_frontend_from_onnx.py` (``from_onnx.py``)
+- **02:10.254**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)
+- **00:30.124**: :ref:`sphx_glr_tutorials_frontend_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)
+- **00:29.983**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized.py` (``deploy_prequantized.py``)
+- **00:28.080**: :ref:`sphx_glr_tutorials_frontend_from_tensorflow.py` (``from_tensorflow.py``)
+- **00:21.902**: :ref:`sphx_glr_tutorials_frontend_from_tflite.py` (``from_tflite.py``)
+- **00:18.913**: :ref:`sphx_glr_tutorials_frontend_deploy_quantized.py` (``deploy_quantized.py``)
+- **00:17.142**: :ref:`sphx_glr_tutorials_frontend_from_darknet.py` (``from_darknet.py``)
+- **00:10.471**: :ref:`sphx_glr_tutorials_frontend_from_caffe2.py` (``from_caffe2.py``)
+- **00:10.211**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_android.py` (``deploy_model_on_android.py``)
+- **00:08.790**: :ref:`sphx_glr_tutorials_frontend_from_keras.py` (``from_keras.py``)
+- **00:07.050**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)
+- **00:06.472**: :ref:`sphx_glr_tutorials_frontend_from_pytorch.py` (``from_pytorch.py``)
+- **00:06.164**: :ref:`sphx_glr_tutorials_frontend_from_coreml.py` (``from_coreml.py``)
+- **00:04.943**: :ref:`sphx_glr_tutorials_frontend_from_mxnet.py` (``from_mxnet.py``)
+- **00:04.864**: :ref:`sphx_glr_tutorials_frontend_build_gcn.py` (``build_gcn.py``)
+- **00:02.175**: :ref:`sphx_glr_tutorials_frontend_using_external_lib.py` (``using_external_lib.py``)
+- **00:01.378**: :ref:`sphx_glr_tutorials_frontend_from_onnx.py` (``from_onnx.py``)
diff --git a/docs/_sources/tutorials/index.rst.txt b/docs/_sources/tutorials/index.rst.txt
index 701c615..bdbda07 100644
--- a/docs/_sources/tutorials/index.rst.txt
+++ b/docs/_sources/tutorials/index.rst.txt
@@ -326,7 +326,7 @@ Compile Deep Learning Models
 
 .. raw:: html
 
-    <div class="sphx-glr-thumbcontainer" tooltip=" For more details on quantizing the model using TFLite, readers are encouraged to go through `C...">
+    <div class="sphx-glr-thumbcontainer" tooltip="Welcome to part 3 of the Deploy Framework-Prequantized Model with TVM tutorial. In this part, w...">
 
 .. only:: html
 
diff --git a/docs/_sources/tutorials/language/reduction.rst.txt b/docs/_sources/tutorials/language/reduction.rst.txt
index 6a60c06..8165bf1 100644
--- a/docs/_sources/tutorials/language/reduction.rst.txt
+++ b/docs/_sources/tutorials/language/reduction.rst.txt
@@ -140,13 +140,13 @@ axis by different factors. The result is a nested reduction.
       buffer_map = {B_1: B, A_1: A} {
       for (i.outer: int32, 0, floordiv((n + 31), 32)) {
         for (i.inner: int32, 0, 32) {
-          if @likely((((i.outer*32) + i.inner) < n), dtype=bool, type="pure_intrin", index=0) {
+          if @likely((((i.outer*32) + i.inner) < n), dtype=bool, type="pure_intrin") {
             B_2[(((i.outer*32) + i.inner)*stride_2)] = 0f32
           }
           for (k.outer: int32, 0, floordiv((m + 15), 16)) {
             for (k.inner: int32, 0, 16) {
-              if @likely((((i.outer*32) + i.inner) < n), dtype=bool, type="pure_intrin", index=0) {
-                if @likely((((k.outer*16) + k.inner) < m), dtype=bool, type="pure_intrin", index=0) {
+              if @likely((((i.outer*32) + i.inner) < n), dtype=bool, type="pure_intrin") {
+                if @likely((((k.outer*16) + k.inner) < m), dtype=bool, type="pure_intrin") {
                   B_2[(((i.outer*32) + i.inner)*stride_2)] = ((float32*)B_2[(((i.outer*32) + i.inner)*stride_2)]) + (float32*)A_2[((((i.outer*32) + i.inner)*stride) + (((k.outer*16) + k.inner)*stride_1))]))
                 }
               }
@@ -186,13 +186,13 @@ If we are building a GPU kernel, we can bind the rows of B to GPU threads.
       buffer_map = {B_1: B, A_1: A} {
       attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = floordiv((n + 31), 32);
       attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 32 {
-        if @likely((((blockIdx.x*32) + threadIdx.x) < n), dtype=bool, type="pure_intrin", index=0) {
+        if @likely((((blockIdx.x*32) + threadIdx.x) < n), dtype=bool, type="pure_intrin") {
           B_2[(((blockIdx.x*32) + threadIdx.x)*stride_2)] = 0f32
         }
         for (k.outer: int32, 0, floordiv((m + 15), 16)) {
           for (k.inner: int32, 0, 16) {
-            if @likely((((blockIdx.x*32) + threadIdx.x) < n), dtype=bool, type="pure_intrin", index=0) {
-              if @likely((((k.outer*16) + k.inner) < m), dtype=bool, type="pure_intrin", index=0) {
+            if @likely((((blockIdx.x*32) + threadIdx.x) < n), dtype=bool, type="pure_intrin") {
+              if @likely((((k.outer*16) + k.inner) < m), dtype=bool, type="pure_intrin") {
                 B_2[(((blockIdx.x*32) + threadIdx.x)*stride_2)] = ((float32*)B_2[(((blockIdx.x*32) + threadIdx.x)*stride_2)]) + (float32*)A_2[((((blockIdx.x*32) + threadIdx.x)*stride) + (((k.outer*16) + k.inner)*stride_1))]))
               }
             }
@@ -246,7 +246,7 @@ result B.rf. The factored dimension becomes the first dimension of B.rf.
           for (i: int32, 0, n) {
             B.rf[((k.inner*n) + i)] = 0f32
             for (k.outer: int32, 0, floordiv((m + 15), 16)) {
-              if @likely((((k.outer*16) + k.inner) < m), dtype=bool, type="pure_intrin", index=0) {
+              if @likely((((k.outer*16) + k.inner) < m), dtype=bool, type="pure_intrin") {
                 B.rf[((k.inner*n) + i)] = ((float32*)B.rf[((k.inner*n) + i)]) + (float32*)A_2[((i*stride) + (((k.outer*16) + k.inner)*stride_1))]))
               }
             }
@@ -284,7 +284,7 @@ the first axis of reduced result of B.f
 
  .. code-block:: none
 
-    [reduce(combiner=comm_reducer(result=[(x + y)], lhs=[x], rhs=[y], identity_element=[0f]), source=[B.rf(k.inner.v, ax0)], axis=[iter_var(k.inner.v, range(min=0, ext=16))], where=(bool)1, value_index=0)]
+    [reduce(combiner=comm_reducer(result=[(x + y)], lhs=[x], rhs=[y], identity_element=[0f]), source=[B.rf[k.inner.v, ax0]], axis=[iter_var(k.inner.v, range(min=0, ext=16))], where=(bool)1, value_index=0)]
 
 
 
diff --git a/docs/_sources/tutorials/language/scan.rst.txt b/docs/_sources/tutorials/language/scan.rst.txt
index 795b4dd..a3dd3c2 100644
--- a/docs/_sources/tutorials/language/scan.rst.txt
+++ b/docs/_sources/tutorials/language/scan.rst.txt
@@ -105,13 +105,13 @@ To split on the time iteration, user can schedule on scan_op.scan_axis instead.
       buffer_map = {scan_1: scan, X_1: X} {
       attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = floordiv((n + 255), 256);
       attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 256;
-      if @likely((((blockIdx.x*256) + threadIdx.x) < n), dtype=bool, type="pure_intrin", index=0) {
+      if @likely((((blockIdx.x*256) + threadIdx.x) < n), dtype=bool, type="pure_intrin") {
         scan_2[(((blockIdx.x*256) + threadIdx.x)*stride_3)] = (float32*)X_2[(((blockIdx.x*256) + threadIdx.x)*stride_1)])
       }
       for (scan.idx: int32, 0, (m - 1)) {
         attr [IterVar(blockIdx.x, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = floordiv((n + 255), 256);
         attr [IterVar(threadIdx.x, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 256;
-        if @likely((((blockIdx.x*256) + threadIdx.x) < n), dtype=bool, type="pure_intrin", index=0) {
+        if @likely((((blockIdx.x*256) + threadIdx.x) < n), dtype=bool, type="pure_intrin") {
           scan_2[(((scan.idx + 1)*stride_2) + (((blockIdx.x*256) + threadIdx.x)*stride_3))] = ((float32*)scan_2[((scan.idx*stride_2) + (((blockIdx.x*256) + threadIdx.x)*stride_3))]) + (float32*)X_2[(((scan.idx + 1)*stride) + (((blockIdx.x*256) + threadIdx.x)*stride_1))]))
         }
       }
@@ -210,12 +210,12 @@ the body of scan to be compute_at locations outside the scan loop.
         for (scan.idx: int32, 0, (m - 1)) {
           for (i.outer: int32, 0, floordiv((n + 31), 32)) {
             for (i_1: int32, 0, 32) {
-              if @likely((((i.outer*32) + i_1) < n), dtype=bool, type="pure_intrin", index=0) {
+              if @likely((((i.outer*32) + i_1) < n), dtype=bool, type="pure_intrin") {
                 s1[i_1] = ((float32*)scan_2[((scan.idx*stride_2) + (((i.outer*32) + i_1)*stride_3))])*2f32)
               }
             }
             for (i.inner: int32, 0, 32) {
-              if @likely((((i.outer*32) + i.inner) < n), dtype=bool, type="pure_intrin", index=0) {
+              if @likely((((i.outer*32) + i.inner) < n), dtype=bool, type="pure_intrin") {
                 scan_2[(((scan.idx + 1)*stride_2) + (((i.outer*32) + i.inner)*stride_3))] = ((float32*)s1[i.inner]) + (float32*)X_2[(((scan.idx + 1)*stride) + (((i.outer*32) + i.inner)*stride_1))]))
               }
             }
@@ -267,21 +267,21 @@ The following example demonstrates how we can build recurrence with two states.
     primfn(X_1: handle, scan.v0_1: handle, scan.v1_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
       buffers = {X: Buffer(X_2: handle, float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 scan.v1: Buffer(scan.v1_2: handle, float32, [m, l: int32], [stride_2: int32, stride_3: int32], type="auto"),
-                 scan.v0: Buffer(scan.v0_2: handle, float32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
-      buffer_map = {scan.v0_1: scan.v0, scan.v1_1: scan.v1, X_1: X} {
+                 scan.v0: Buffer(scan.v0_2: handle, float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
+                 scan.v1: Buffer(scan.v1_2: handle, float32, [m, l: int32], [stride_4: int32, stride_5: int32], type="auto")}
+      buffer_map = {scan.v1_1: scan.v1, scan.v0_1: scan.v0, X_1: X} {
       for (i: int32, 0, n) {
-        scan.v0_2[(i*stride_5)] = (float32*)X_2[(i*stride_1)])
+        scan.v0_2[(i*stride_3)] = (float32*)X_2[(i*stride_1)])
       }
       for (i_1: int32, 0, l) {
-        scan.v1_2[(i_1*stride_3)] = 0f32
+        scan.v1_2[(i_1*stride_5)] = 0f32
       }
       for (scan.idx: int32, 0, (m - 1)) {
         for (i_2: int32, 0, n) {
-          scan.v0_2[(((scan.idx + 1)*stride_4) + (i_2*stride_5))] = ((float32*)scan.v0_2[((scan.idx*stride_4) + (i_2*stride_5))]) + (float32*)X_2[(((scan.idx + 1)*stride) + (i_2*stride_1))]))
+          scan.v0_2[(((scan.idx + 1)*stride_2) + (i_2*stride_3))] = ((float32*)scan.v0_2[((scan.idx*stride_2) + (i_2*stride_3))]) + (float32*)X_2[(((scan.idx + 1)*stride) + (i_2*stride_1))]))
         }
         for (i_3: int32, 0, l) {
-          scan.v1_2[(((scan.idx + 1)*stride_2) + (i_3*stride_3))] = ((float32*)scan.v1_2[((scan.idx*stride_2) + (i_3*stride_3))]) + (float32*)scan.v0_2[(scan.idx*stride_4)]))
+          scan.v1_2[(((scan.idx + 1)*stride_4) + (i_3*stride_5))] = ((float32*)scan.v1_2[((scan.idx*stride_4) + (i_3*stride_5))]) + (float32*)scan.v0_2[(scan.idx*stride_2)]))
         }
       }
     }
diff --git a/docs/_sources/tutorials/language/schedule_primitives.rst.txt b/docs/_sources/tutorials/language/schedule_primitives.rst.txt
index 364fa36..42072a3 100644
--- a/docs/_sources/tutorials/language/schedule_primitives.rst.txt
+++ b/docs/_sources/tutorials/language/schedule_primitives.rst.txt
@@ -136,7 +136,7 @@ split
       buffer_map = {B_1: B, A_1: A} {
       for (i.outer: int32, 0, floordiv((m + 31), 32)) {
         for (i.inner: int32, 0, 32) {
-          if @likely((((i.outer*32) + i.inner) < m), dtype=bool, type="pure_intrin", index=0) {
+          if @likely((((i.outer*32) + i.inner) < m), dtype=bool, type="pure_intrin") {
             B_2[(((i.outer*32) + i.inner)*stride_1)] = ((float32*)A_2[(((i.outer*32) + i.inner)*stride)])*2f32)
           }
         }
@@ -177,7 +177,7 @@ contrary with :code:`factor`.
       buffer_map = {B_1: B, A_1: A} {
       for (i.outer: int32, 0, 32) {
         for (i.inner: int32, 0, floordiv((m + 31), 32)) {
-          if @likely(((i.inner + (i.outer*floordiv((m + 31), 32))) < m), dtype=bool, type="pure_intrin", index=0) {
+          if @likely(((i.inner + (i.outer*floordiv((m + 31), 32))) < m), dtype=bool, type="pure_intrin") {
             B_2[((i.inner + (i.outer*floordiv((m + 31), 32)))*stride_1)] = (float32*)A_2[((i.inner + (i.outer*floordiv((m + 31), 32)))*stride)])
           }
         }
@@ -222,8 +222,8 @@ axises.
         for (j.outer: int32, 0, floordiv((n + 4), 5)) {
           for (i.inner: int32, 0, 10) {
             for (j.inner: int32, 0, 5) {
-              if @likely((((i.outer*10) + i.inner) < m), dtype=bool, type="pure_intrin", index=0) {
-                if @likely((((j.outer*5) + j.inner) < n), dtype=bool, type="pure_intrin", index=0) {
+              if @likely((((i.outer*10) + i.inner) < m), dtype=bool, type="pure_intrin") {
+                if @likely((((j.outer*5) + j.inner) < n), dtype=bool, type="pure_intrin") {
                   B_2[((((i.outer*10) + i.inner)*stride_2) + (((j.outer*5) + j.inner)*stride_3))] = (float32*)A_2[((((i.outer*10) + i.inner)*stride) + (((j.outer*5) + j.inner)*stride_1))])
                 }
               }
@@ -272,8 +272,8 @@ fuse
       for (i.outer: int32, 0, floordiv((m + 9), 10)) {
         for (j.outer: int32, 0, floordiv((n + 4), 5)) {
           for (i.inner.j.inner.fused: int32, 0, 50) {
-            if @likely((((i.outer*10) + floordiv(i.inner.j.inner.fused, 5)) < m), dtype=bool, type="pure_intrin", index=0) {
-              if @likely((((j.outer*5) + floormod(i.inner.j.inner.fused, 5)) < n), dtype=bool, type="pure_intrin", index=0) {
+            if @likely((((i.outer*10) + floordiv(i.inner.j.inner.fused, 5)) < m), dtype=bool, type="pure_intrin") {
+              if @likely((((j.outer*5) + floormod(i.inner.j.inner.fused, 5)) < n), dtype=bool, type="pure_intrin") {
                 B_2[((((i.outer*10) + floordiv(i.inner.j.inner.fused, 5))*stride_2) + (((j.outer*5) + floormod(i.inner.j.inner.fused, 5))*stride_3))] = (float32*)A_2[((((i.outer*10) + floordiv(i.inner.j.inner.fused, 5))*stride) + (((j.outer*5) + floormod(i.inner.j.inner.fused, 5))*stride_1))])
               }
             }
@@ -322,8 +322,8 @@ reorder
         for (j.outer: int32, 0, floordiv((n + 4), 5)) {
           for (i.outer: int32, 0, floordiv((m + 9), 10)) {
             for (j.inner: int32, 0, 5) {
-              if @likely((((i.outer*10) + i.inner) < m), dtype=bool, type="pure_intrin", index=0) {
-                if @likely((((j.outer*5) + j.inner) < n), dtype=bool, type="pure_intrin", index=0) {
+              if @likely((((i.outer*10) + i.inner) < m), dtype=bool, type="pure_intrin") {
+                if @likely((((j.outer*5) + j.inner) < n), dtype=bool, type="pure_intrin") {
                   B_2[((((i.outer*10) + i.inner)*stride_2) + (((j.outer*5) + j.inner)*stride_3))] = (float32*)A_2[((((i.outer*10) + i.inner)*stride) + (((j.outer*5) + j.inner)*stride_1))])
                 }
               }
@@ -371,7 +371,7 @@ in gpu programming.
       buffer_map = {B_1: B, A_1: A} {
       attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = floordiv((n + 63), 64);
       attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-      if @likely((((blockIdx.x*64) + threadIdx.x) < n), dtype=bool, type="pure_intrin", index=0) {
+      if @likely((((blockIdx.x*64) + threadIdx.x) < n), dtype=bool, type="pure_intrin") {
         B_2[(((blockIdx.x*64) + threadIdx.x)*stride_1)] = ((float32*)A_2[(((blockIdx.x*64) + threadIdx.x)*stride)])*2f32)
       }
     }
@@ -408,14 +408,14 @@ tensors at the root separately by default.
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
       buffers = {A: Buffer(A_2: handle, float32, [m: int32], [stride: int32], type="auto"),
-                 B: Buffer(B_2: handle, float32, [m], [stride_1: int32], type="auto"),
-                 C: Buffer(C_2: handle, float32, [m], [stride_2: int32], type="auto")}
-      buffer_map = {C_1: C, B_1: B, A_1: A} {
+                 C: Buffer(C_2: handle, float32, [m], [stride_1: int32], type="auto"),
+                 B: Buffer(B_2: handle, float32, [m], [stride_2: int32], type="auto")}
+      buffer_map = {B_1: B, C_1: C, A_1: A} {
       for (i: int32, 0, m) {
-        B_2[(i*stride_1)] = ((float32*)A_2[(i*stride)]) + 1f32)
+        B_2[(i*stride_2)] = ((float32*)A_2[(i*stride)]) + 1f32)
       }
       for (i_1: int32, 0, m) {
-        C_2[(i_1*stride_2)] = ((float32*)B_2[(i_1*stride_1)])*2f32)
+        C_2[(i_1*stride_1)] = ((float32*)B_2[(i_1*stride_2)])*2f32)
       }
     }
 
@@ -492,12 +492,12 @@ tensor is required.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {A: Buffer(A_2: handle, float32, [m: int32], [stride: int32], type="auto"),
-                 B: Buffer(B_2: handle, float32, [m], [stride_1: int32], type="auto"),
+      buffers = {B: Buffer(B_2: handle, float32, [m: int32], [stride: int32], type="auto"),
+                 A: Buffer(A_2: handle, float32, [m], [stride_1: int32], type="auto"),
                  C: Buffer(C_2: handle, float32, [m], [stride_2: int32], type="auto")}
       buffer_map = {C_1: C, B_1: B, A_1: A} {
       for (i: int32, 0, m) {
-        C_2[(i*stride_2)] = (((float32*)A_2[(i*stride)]) + 1f32)*2f32)
+        C_2[(i*stride_2)] = (((float32*)A_2[(i*stride_1)]) + 1f32)*2f32)
       }
     }
 
diff --git a/docs/_sources/tutorials/language/sg_execution_times.rst.txt b/docs/_sources/tutorials/language/sg_execution_times.rst.txt
index edbc7a3..728d3e8 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:03.728** total execution time for **tutorials_language** files:
+**00:03.887** total execution time for **tutorials_language** files:
 
-- **00:01.349**: :ref:`sphx_glr_tutorials_language_intrin_math.py` (``intrin_math.py``)
-- **00:00.682**: :ref:`sphx_glr_tutorials_language_tensorize.py` (``tensorize.py``)
-- **00:00.494**: :ref:`sphx_glr_tutorials_language_reduction.py` (``reduction.py``)
-- **00:00.460**: :ref:`sphx_glr_tutorials_language_scan.py` (``scan.py``)
-- **00:00.280**: :ref:`sphx_glr_tutorials_language_extern_op.py` (``extern_op.py``)
-- **00:00.166**: :ref:`sphx_glr_tutorials_language_tedd.py` (``tedd.py``)
-- **00:00.157**: :ref:`sphx_glr_tutorials_language_schedule_primitives.py` (``schedule_primitives.py``)
-- **00:00.141**: :ref:`sphx_glr_tutorials_language_tuple_inputs.py` (``tuple_inputs.py``)
+- **00:01.442**: :ref:`sphx_glr_tutorials_language_intrin_math.py` (``intrin_math.py``)
+- **00:00.697**: :ref:`sphx_glr_tutorials_language_tensorize.py` (``tensorize.py``)
+- **00:00.505**: :ref:`sphx_glr_tutorials_language_reduction.py` (``reduction.py``)
+- **00:00.501**: :ref:`sphx_glr_tutorials_language_scan.py` (``scan.py``)
+- **00:00.234**: :ref:`sphx_glr_tutorials_language_extern_op.py` (``extern_op.py``)
+- **00:00.190**: :ref:`sphx_glr_tutorials_language_tedd.py` (``tedd.py``)
+- **00:00.169**: :ref:`sphx_glr_tutorials_language_schedule_primitives.py` (``schedule_primitives.py``)
+- **00:00.149**: :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 01bd05b..0abc7ac 100644
--- a/docs/_sources/tutorials/language/tensorize.rst.txt
+++ b/docs/_sources/tutorials/language/tensorize.rst.txt
@@ -71,8 +71,8 @@ The following lines describe the computation :code:`A * B^T` in TVM.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {A: Buffer(A_2: handle, float32, [1024, 64], []),
-                 B: Buffer(B_2: handle, float32, [512, 64], []),
+      buffers = {B: Buffer(B_2: handle, float32, [512, 64], []),
+                 A: Buffer(A_2: handle, float32, [1024, 64], []),
                  C: Buffer(C_2: handle, float32, [1024, 512], [])}
       buffer_map = {C_1: C, B_1: B, A_1: A} {
       for (i: int32, 0, 1024) {
@@ -120,8 +120,8 @@ Thus we break down the matmul loops to make the innermost loops a (16x64) GEMV.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {B: Buffer(B_2: handle, float32, [512, 64], []),
-                 A: Buffer(A_2: handle, float32, [1024, 64], []),
+      buffers = {A: Buffer(A_2: handle, float32, [1024, 64], []),
+                 B: Buffer(B_2: handle, float32, [512, 64], []),
                  C: Buffer(C_2: handle, float32, [1024, 512], [])}
       buffer_map = {C_1: C, B_1: B, A_1: A} {
       for (i: int32, 0, 1024) {
@@ -187,8 +187,7 @@ which is done in :code:`intrin_func` below.
                                     bb.access_ptr("r"),
                                     m, l, bb.strides[0]))
             return ib.get()
-        with tvm.target.build_config(offset_factor=1):
-            return te.decl_tensor_intrin(c.op, intrin_func, binds={a: Ab, b: Bb, c: Cb})
+        return te.decl_tensor_intrin(c.op, intrin_func, binds={a: Ab, b: Bb, c: Cb})
 
 
 
@@ -243,7 +242,7 @@ such placeholder can be put to let TVM automatically bind the inferred value for
       buffer_map = {C_1: C, B_1: B, A_1: A} {
       for (i: int32, 0, 1024) {
         for (j.outer: int32, 0, 32) {
-          @gemv_update(@tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin", index=0), C_2, ((i*512) + (j.outer*16)), 16, 2, dtype=handle, type="intrin", index=0), @tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin", index=0), A_2, (i*64), 64, 1, dtype=handle, type="intrin", index=0), @tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin", index=0), B_2, (j.outer*1024), 1024, 1, dtype=handle, type="intrin", index=0), 16, 64, 64, dtype=int32, [...]
+          @gemv_update(@tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin"), C_2, ((i*512) + (j.outer*16)), 16, 2, dtype=handle, type="intrin"), @tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin"), A_2, (i*64), 64, 1, dtype=handle, type="intrin"), @tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin"), B_2, (j.outer*1024), 1024, 1, dtype=handle, type="intrin"), 16, 64, 64, dtype=int32, type="extern")
         }
       }
     }
@@ -307,12 +306,12 @@ The importing needs to happen before the tensorized GEMV being executed.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {B: Buffer(B_2: handle, float32, [512, 64], []),
-                 A: Buffer(A_2: handle, float32, [1024, 64], []),
+      buffers = {A: Buffer(A_2: handle, float32, [1024, 64], []),
+                 B: Buffer(B_2: handle, float32, [512, 64], []),
                  C: Buffer(C_2: handle, float32, [1024, 512], [])}
       buffer_map = {C_1: C, B_1: B, A_1: A} {
-      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpxbed81_y/input0.cc'
-    source_filename = "/tmp/tmpxbed81_y/input0.cc"
+      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpcw7zd4dq/input0.cc'
+    source_filename = "/tmp/tmpcw7zd4dq/input0.cc"
     target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
     target triple = "x86_64-pc-linux-gnu"
 
@@ -405,7 +404,7 @@ The importing needs to happen before the tensorized GEMV being executed.
     ";
       for (i, 0, 1024) {
         for (j.outer: int32, 0, 32) {
-          @gemv_update(@tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin", index=0), C_2, ((i*512) + (j.outer*16)), 16, 2, dtype=handle, type="intrin", index=0), @tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin", index=0), A_2, (i*64), 64, 1, dtype=handle, type="intrin", index=0), @tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin", index=0), B_2, (j.outer*1024), 1024, 1, dtype=handle, type="intrin", index=0), 16, 64, 64, dtype=int32, [...]
+          @gemv_update(@tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin"), C_2, ((i*512) + (j.outer*16)), 16, 2, dtype=handle, type="intrin"), @tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin"), A_2, (i*64), 64, 1, dtype=handle, type="intrin"), @tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin"), B_2, (j.outer*1024), 1024, 1, dtype=handle, type="intrin"), 16, 64, 64, dtype=int32, type="extern")
         }
       }
     }
@@ -529,8 +528,7 @@ which defines the "update" computing strategy.
             def _reduce_update():
                 return _body()
             return _body(), _reduce_reset(), _reduce_update()
-        with tvm.target.build_config(offset_factor=1):
-            return te.decl_tensor_intrin(c.op, intrin_func, binds={a: Ab, b: Bb, c: Cb})
+        return te.decl_tensor_intrin(c.op, intrin_func, binds={a: Ab, b: Bb, c: Cb})
 
 
 
diff --git a/docs/_sources/tutorials/language/tuple_inputs.rst.txt b/docs/_sources/tutorials/language/tuple_inputs.rst.txt
index 72dd0d1..1911840 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 = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {A0: Buffer(A0_2: handle, float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 A1: Buffer(A1_2: handle, float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
-                 B.v0: Buffer(B.v0_2: handle, float32, [m, n], [stride_4: int32, stride_5: int32], type="auto"),
+      buffers = {A1: Buffer(A1_2: handle, float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
+                 B.v0: Buffer(B.v0_2: handle, float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
+                 A0: Buffer(A0_2: handle, float32, [m, n], [stride_4: int32, stride_5: int32], type="auto"),
                  B.v1: Buffer(B.v1_2: handle, float32, [m, n], [stride_6: int32, stride_7: int32], type="auto")}
       buffer_map = {B.v1_1: B.v1, B.v0_1: B.v0, A1_1: A1, A0_1: A0} {
       for (i: int32, 0, m) {
         for (j: int32, 0, n) {
-          B.v0_2[((i*stride_4) + (j*stride_5))] = ((float32*)A0_2[((i*stride) + (j*stride_1))]) + 2f32)
-          B.v1_2[((i*stride_6) + (j*stride_7))] = ((float32*)A1_2[((i*stride_2) + (j*stride_3))])*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_6) + (j*stride_7))] = ((float32*)A1_2[((i*stride) + (j*stride_1))])*3f32)
         }
       }
     }
@@ -133,17 +133,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 = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {idx: Buffer(idx_2: handle, int32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 val: Buffer(val_2: handle, int32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
-                 T.v0: Buffer(T.v0_2: handle, int32, [m], [stride_4: int32], type="auto"),
+      buffers = {val: Buffer(val_2: handle, int32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
+                 T.v0: Buffer(T.v0_2: handle, int32, [m], [stride_2: int32], type="auto"),
+                 idx: Buffer(idx_2: handle, int32, [m, n], [stride_3: int32, stride_4: int32], type="auto"),
                  T.v1: Buffer(T.v1_2: handle, int32, [m], [stride_5: int32], type="auto")}
       buffer_map = {T.v1_1: T.v1, T.v0_1: T.v0, val_1: val, idx_1: idx} {
       for (i: int32, 0, m) {
-        T.v0_2[(i*stride_4)] = -1
+        T.v0_2[(i*stride_2)] = -1
         T.v1_2[(i*stride_5)] = -2147483648
         for (k: int32, 0, n) {
-          T.v0_2[(i*stride_4)] = @tvm_if_then_else(((int32*)val_2[((i*stride_2) + (k*stride_3))]) <= (int32*)T.v1_2[(i*stride_5)])), (int32*)T.v0_2[(i*stride_4)]), (int32*)idx_2[((i*stride) + (k*stride_1))]), dtype=int32, type="intrin", index=0)
-          T.v1_2[(i*stride_5)] = @tvm_if_then_else(((int32*)val_2[((i*stride_2) + (k*stride_3))]) <= (int32*)T.v1_2[(i*stride_5)])), (int32*)T.v1_2[(i*stride_5)]), (int32*)val_2[((i*stride_2) + (k*stride_3))]), dtype=int32, type="intrin", index=0)
+          T.v0_2[(i*stride_2)] = @tvm_if_then_else(((int32*)val_2[((i*stride) + (k*stride_1))]) <= (int32*)T.v1_2[(i*stride_5)])), (int32*)T.v0_2[(i*stride_2)]), (int32*)idx_2[((i*stride_3) + (k*stride_4))]), dtype=int32, type="intrin")
+          T.v1_2[(i*stride_5)] = @tvm_if_then_else(((int32*)val_2[((i*stride) + (k*stride_1))]) <= (int32*)T.v1_2[(i*stride_5)])), (int32*)T.v1_2[(i*stride_5)]), (int32*)val_2[((i*stride) + (k*stride_1))]), dtype=int32, type="intrin")
         }
       }
     }
@@ -191,8 +191,8 @@ in terms of operation.
 
     primfn(A0_1: handle, A1_1: handle, C_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {A1: Buffer(A1_2: handle, float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 A0: Buffer(A0_2: handle, float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
+      buffers = {A0: Buffer(A0_2: handle, float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
+                 A1: Buffer(A1_2: handle, float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
                  C: Buffer(C_2: handle, float32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
       buffer_map = {C_1: C, A1_1: A1, A0_1: A0} {
       attr [B.v0: handle] "storage_scope" = "global";
@@ -201,11 +201,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_4) + (j_1*stride_5))] = ((float32*)A1_2[((i*stride) + (j_1*stride_1))]) + (float32*)B.v0[j_1]))
+          C_2[((i*stride_4) + (j_1*stride_5))] = ((float32*)A1_2[((i*stride_2) + (j_1*stride_3))]) + (float32*)B.v0[j_1]))
         }
       }
     }
diff --git a/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt b/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt
index 605ab7a..3210c23 100644
--- a/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt
+++ b/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt
@@ -293,7 +293,7 @@ latency of convolution.
 
  .. code-block:: none
 
-    Convolution: 19.556336 ms
+    Convolution: 19.651037 ms
 
 
 
diff --git a/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt b/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt
index d65796b..a768242 100644
--- a/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt
+++ b/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt
@@ -376,7 +376,7 @@ one time.
               for (ax3: int32, 0, 2) {
                 for (ax4.ax5.fused.outer: int32, 0, 8) {
                   attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 32;
-                  Apad.shared[((((((threadIdx.y*3072) + (threadIdx.z*1536)) + (ax2*512)) + (ax3*256)) + (ax4.ax5.fused.outer*32)) + threadIdx.x)] = @tvm_if_then_else(((((1 <= (floordiv(blockIdx.z, 14) + kh)) && ((floordiv(blockIdx.z, 14) + kh) < 15)) && (1 <= (ax2 + floormod(blockIdx.z, 14)))) && ((ax2 + floormod(blockIdx.z, 14)) < 15)), (float16*)A_2[(((((((((((blockIdx.x*6422528) + (threadIdx.y*1605632)) + (threadIdx.z*802816)) + (kh*57344)) + (blockIdx.z*4096)) + (ax2*4096)) + (ic.out [...]
+                  Apad.shared[((((((threadIdx.y*3072) + (threadIdx.z*1536)) + (ax2*512)) + (ax3*256)) + (ax4.ax5.fused.outer*32)) + threadIdx.x)] = @tvm_if_then_else(((((1 <= (floordiv(blockIdx.z, 14) + kh)) && ((floordiv(blockIdx.z, 14) + kh) < 15)) && (1 <= (ax2 + floormod(blockIdx.z, 14)))) && ((ax2 + floormod(blockIdx.z, 14)) < 15)), (float16*)A_2[(((((((((((blockIdx.x*6422528) + (threadIdx.y*1605632)) + (threadIdx.z*802816)) + (kh*57344)) + (blockIdx.z*4096)) + (ax2*4096)) + (ic.out [...]
                 }
               }
             }
@@ -461,9 +461,9 @@ by mapping the 2D convolution to tensor intrinsics
     primfn(A_1: handle, W_1: handle, Conv_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
       buffers = {A: Buffer(A_2: handle, float16, [16, 14, 14, 16, 16, 16], []),
-                 W: Buffer(W_2: handle, float16, [3, 3, 16, 32, 16, 16], []),
-                 Conv: Buffer(Conv_2: handle, float32, [16, 14, 14, 32, 16, 16], [])}
-      buffer_map = {Conv_1: Conv, W_1: W, A_1: A} {
+                 Conv: Buffer(Conv_2: handle, float32, [16, 14, 14, 32, 16, 16], []),
+                 W: Buffer(W_2: handle, float16, [3, 3, 16, 32, 16, 16], [])}
+      buffer_map = {W_1: W, Conv_1: Conv, A_1: A} {
       attr [IterVar(blockIdx.z: int32, (nullptr), "ThreadIndex", "blockIdx.z")] "thread_extent" = 196;
       attr [Conv.wmma.accumulator: handle] "storage_scope" = "wmma.accumulator";
       allocate(Conv.wmma.accumulator, float32, [2048]);
@@ -481,7 +481,7 @@ by mapping the 2D convolution to tensor intrinsics
       attr [IterVar(threadIdx.z: int32, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 2 {
         for (n.c.init: int32, 0, 2) {
           for (o.c.init: int32, 0, 4) {
-            @tvm_fill_fragment(Conv.wmma.accumulator, 16, 16, 16, ((n.c.init*4) + o.c.init), 0f32, dtype=handle, type="intrin", index=0)
+            @tvm_fill_fragment(Conv.wmma.accumulator, 16, 16, 16, ((n.c.init*4) + o.c.init), 0f32, dtype=handle, type="intrin")
           }
         }
         for (ic.outer: int32, 0, 8) {
@@ -490,7 +490,7 @@ by mapping the 2D convolution to tensor intrinsics
               for (ax3: int32, 0, 2) {
                 for (ax4.ax5.fused.outer: int32, 0, 8) {
                   attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 32;
-                  Apad.shared[((((((threadIdx.y*3072) + (threadIdx.z*1536)) + (ax2*512)) + (ax3*256)) + (ax4.ax5.fused.outer*32)) + threadIdx.x)] = @tvm_if_then_else(((((1 <= (floordiv(blockIdx.z, 14) + kh)) && ((floordiv(blockIdx.z, 14) + kh) < 15)) && (1 <= (ax2 + floormod(blockIdx.z, 14)))) && ((ax2 + floormod(blockIdx.z, 14)) < 15)), (float16*)A_2[(((((((((((blockIdx.x*6422528) + (threadIdx.y*1605632)) + (threadIdx.z*802816)) + (kh*57344)) + (blockIdx.z*4096)) + (ax2*4096)) + (ic.out [...]
+                  Apad.shared[((((((threadIdx.y*3072) + (threadIdx.z*1536)) + (ax2*512)) + (ax3*256)) + (ax4.ax5.fused.outer*32)) + threadIdx.x)] = @tvm_if_then_else(((((1 <= (floordiv(blockIdx.z, 14) + kh)) && ((floordiv(blockIdx.z, 14) + kh) < 15)) && (1 <= (ax2 + floormod(blockIdx.z, 14)))) && ((ax2 + floormod(blockIdx.z, 14)) < 15)), (float16*)A_2[(((((((((((blockIdx.x*6422528) + (threadIdx.y*1605632)) + (threadIdx.z*802816)) + (kh*57344)) + (blockIdx.z*4096)) + (ax2*4096)) + (ic.out [...]
                 }
               }
             }
@@ -503,14 +503,14 @@ by mapping the 2D convolution to tensor intrinsics
             for (ic.inner: int32, 0, 2) {
               for (kw: int32, 0, 3) {
                 for (ax0: int32, 0, 2) {
-                  @tvm_load_matrix_sync(Apad.shared.wmma.matrix_a, 16, 16, 16, ax0, @tvm_access_ptr(@type_annotation(, dtype=float16, type="pure_intrin", index=0), Apad.shared, ((((threadIdx.y*3072) + (ax0*1536)) + (kw*512)) + (ic.inner*256)), 256, 1, dtype=handle, type="intrin", index=0), 16, "row_major", dtype=handle, type="intrin", index=0)
+                  @tvm_load_matrix_sync(Apad.shared.wmma.matrix_a, 16, 16, 16, ax0, @tvm_access_ptr(@type_annotation(, dtype=float16, type="pure_intrin"), Apad.shared, ((((threadIdx.y*3072) + (ax0*1536)) + (kw*512)) + (ic.inner*256)), 256, 1, dtype=handle, type="intrin"), 16, "row_major", dtype=handle, type="intrin")
                 }
                 for (ax3_1: int32, 0, 4) {
-                  @tvm_load_matrix_sync(W.shared.wmma.matrix_b, 16, 16, 16, ax3_1, @tvm_access_ptr(@type_annotation(, dtype=float16, type="pure_intrin", index=0), W.shared, ((((kw*4096) + (ic.inner*2048)) + (threadIdx.z*1024)) + (ax3_1*256)), 256, 1, dtype=handle, type="intrin", index=0), 16, "row_major", dtype=handle, type="intrin", index=0)
+                  @tvm_load_matrix_sync(W.shared.wmma.matrix_b, 16, 16, 16, ax3_1, @tvm_access_ptr(@type_annotation(, dtype=float16, type="pure_intrin"), W.shared, ((((kw*4096) + (ic.inner*2048)) + (threadIdx.z*1024)) + (ax3_1*256)), 256, 1, dtype=handle, type="intrin"), 16, "row_major", dtype=handle, type="intrin")
                 }
                 for (n.c: int32, 0, 2) {
                   for (o.c: int32, 0, 4) {
-                    @tvm_mma_sync(Conv.wmma.accumulator, ((n.c*4) + o.c), Apad.shared.wmma.matrix_a, n.c, W.shared.wmma.matrix_b, o.c, Conv.wmma.accumulator, ((n.c*4) + o.c), dtype=handle, type="intrin", index=0)
+                    @tvm_mma_sync(Conv.wmma.accumulator, ((n.c*4) + o.c), Apad.shared.wmma.matrix_a, n.c, W.shared.wmma.matrix_b, o.c, Conv.wmma.accumulator, ((n.c*4) + o.c), dtype=handle, type="intrin")
                   }
                 }
               }
@@ -519,7 +519,7 @@ by mapping the 2D convolution to tensor intrinsics
         }
         for (n.inner: int32, 0, 2) {
           for (o.inner: int32, 0, 4) {
-            @tvm_store_matrix_sync(Conv.wmma.accumulator, 16, 16, 16, ((n.inner*4) + o.inner), @tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin", index=0), Conv_2, (((((((blockIdx.x*12845056) + (threadIdx.y*3211264)) + (n.inner*1605632)) + (blockIdx.z*8192)) + (blockIdx.y*2048)) + (threadIdx.z*1024)) + (o.inner*256)), 256, 2, dtype=handle, type="intrin", index=0), 16, "row_major", dtype=handle, type="intrin", index=0)
+            @tvm_store_matrix_sync(Conv.wmma.accumulator, 16, 16, 16, ((n.inner*4) + o.inner), @tvm_access_ptr(@type_annotation(, dtype=float32, type="pure_intrin"), Conv_2, (((((((blockIdx.x*12845056) + (threadIdx.y*3211264)) + (n.inner*1605632)) + (blockIdx.z*8192)) + (blockIdx.y*2048)) + (threadIdx.z*1024)) + (o.inner*256)), 256, 2, dtype=handle, type="intrin"), 16, "row_major", dtype=handle, type="intrin")
           }
         }
       }
@@ -541,7 +541,9 @@ be able to run on our build server
 
     ctx = tvm.gpu(0)
     if nvcc.have_tensorcore(ctx.compute_version):
-        with tvm.target.build_config(auto_unroll_max_step=16):
+        with tvm.transform.PassContext(config={"tir.UnrollLoop": {
+            "auto_max_step": 16
+        }}):
             func = tvm.build(s, [A, W, Conv], 'cuda')
         a_np = np.random.uniform(size=data_shape).astype(A.dtype)
         w_np = np.random.uniform(size=kernel_shape).astype(W.dtype)
@@ -561,7 +563,7 @@ be able to run on our build server
 
  .. code-block:: none
 
-    conv2d with tensor core: 6.304898 ms
+    conv2d with tensor core: 6.328851 ms
 
 
 
diff --git a/docs/_sources/tutorials/optimize/opt_gemm.rst.txt b/docs/_sources/tutorials/optimize/opt_gemm.rst.txt
index 1a07ca6..04bac12 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.007487
-    Baseline: 5.854661
+    Numpy running time: 0.007867
+    Baseline: 6.026107
 
 
 
@@ -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.112672
+    Opt1: 0.124150
 
 
 
@@ -231,9 +231,9 @@ Here is the generated IR after blocking.
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
       buffers = {A: Buffer(A_2: handle, float32, [1024, 1024], []),
-                 C: Buffer(C_2: handle, float32, [1024, 1024], []),
-                 B: Buffer(B_2: handle, float32, [1024, 1024], [])}
-      buffer_map = {B_1: B, C_1: C, A_1: A} {
+                 B: Buffer(B_2: handle, float32, [1024, 1024], []),
+                 C: Buffer(C_2: handle, float32, [1024, 1024], [])}
+      buffer_map = {C_1: C, B_1: B, A_1: A} {
       for (x.outer: int32, 0, 32) {
         for (y.outer: int32, 0, 32) {
           for (x.inner.init: int32, 0, 32) {
@@ -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.125738
+    Opt2: 0.124186
 
 
 
@@ -389,7 +389,7 @@ the access pattern for A matrix is more cache friendly.
 
  .. code-block:: none
 
-    Opt3: 0.059627
+    Opt3: 0.069148
 
 
 
@@ -497,7 +497,7 @@ the corresponding value from the packed array.
 
  .. code-block:: none
 
-    Opt4: 0.060532
+    Opt4: 0.064161
 
 
 
@@ -607,7 +607,7 @@ write to C when all the block results are ready.
 
  .. code-block:: none
 
-    Opt5: 0.061617
+    Opt5: 0.071793
 
 
 
@@ -723,7 +723,7 @@ Futhermore, we can also utilize multi-core processors to do the thread-level par
 
  .. code-block:: none
 
-    Opt6: 0.014839
+    Opt6: 0.022614
 
 
 
@@ -747,10 +747,10 @@ Here is the generated IR after parallelization.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {B: Buffer(B_2: handle, float32, [1024, 1024], []),
-                 A: Buffer(A_2: handle, float32, [1024, 1024], []),
-                 C: Buffer(C_2: handle, float32, [1024, 1024], [])}
-      buffer_map = {C_1: C, B_1: B, A_1: A} {
+      buffers = {A: Buffer(A_2: handle, float32, [1024, 1024], []),
+                 C: Buffer(C_2: handle, float32, [1024, 1024], []),
+                 B: Buffer(B_2: handle, float32, [1024, 1024], [])}
+      buffer_map = {B_1: B, C_1: C, A_1: A} {
       attr [packedB: handle] "storage_scope" = "global";
       allocate(packedB, float32x32, [32768]) {
         for (x: int32, 0, 32) "parallel" {
diff --git a/docs/_sources/tutorials/optimize/opt_matmul_auto_tensorcore.rst.txt b/docs/_sources/tutorials/optimize/opt_matmul_auto_tensorcore.rst.txt
index 223d72b..767c9ad 100644
--- a/docs/_sources/tutorials/optimize/opt_matmul_auto_tensorcore.rst.txt
+++ b/docs/_sources/tutorials/optimize/opt_matmul_auto_tensorcore.rst.txt
@@ -296,10 +296,9 @@ and run the kernel to compare with numpy to check whether the results are correc
       print(best_config)
       with autotvm.apply_history_best('matmul.log'):
         with tvm.target.create("cuda"):
-            with tvm.target.build_config():
-                s, arg_bufs = test_gemm(N, L, M, dtype, layout)
-                print(tvm.lower(s, arg_bufs, simple_mode=True))
-                func = tvm.build(s, arg_bufs)
+              s, arg_bufs = test_gemm(N, L, M, dtype, layout)
+              print(tvm.lower(s, arg_bufs, simple_mode=True))
+              func = tvm.build(s, arg_bufs)
       dev_module = func.imported_modules[0]
       print(dev_module.get_source())
 
diff --git a/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt b/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt
index 23fe737..b044deb 100644
--- a/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt
@@ -5,9 +5,9 @@
 
 Computation times
 =================
-**00:26.701** total execution time for **tutorials_optimize** files:
+**00:28.349** total execution time for **tutorials_optimize** files:
 
-- **00:24.971**: :ref:`sphx_glr_tutorials_optimize_opt_gemm.py` (``opt_gemm.py``)
-- **00:00.905**: :ref:`sphx_glr_tutorials_optimize_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``)
-- **00:00.677**: :ref:`sphx_glr_tutorials_optimize_opt_conv_cuda.py` (``opt_conv_cuda.py``)
-- **00:00.147**: :ref:`sphx_glr_tutorials_optimize_opt_matmul_auto_tensorcore.py` (``opt_matmul_auto_tensorcore.py``)
+- **00:26.434**: :ref:`sphx_glr_tutorials_optimize_opt_gemm.py` (``opt_gemm.py``)
+- **00:01.002**: :ref:`sphx_glr_tutorials_optimize_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``)
+- **00:00.752**: :ref:`sphx_glr_tutorials_optimize_opt_conv_cuda.py` (``opt_conv_cuda.py``)
+- **00:00.161**: :ref:`sphx_glr_tutorials_optimize_opt_matmul_auto_tensorcore.py` (``opt_matmul_auto_tensorcore.py``)
diff --git a/docs/_sources/tutorials/relay_quick_start.rst.txt b/docs/_sources/tutorials/relay_quick_start.rst.txt
index f4992d8..a20c6cf 100644
--- a/docs/_sources/tutorials/relay_quick_start.rst.txt
+++ b/docs/_sources/tutorials/relay_quick_start.rst.txt
@@ -210,7 +210,7 @@ in this example. Then the machine code will be generated as the module library.
 
     opt_level = 3
     target = tvm.target.cuda()
-    with relay.build_config(opt_level=opt_level):
+    with tvm.transform.PassContext(opt_level=opt_level):
         graph, lib, params = relay.build(mod, target, params=params)
 
 
@@ -223,7 +223,7 @@ in this example. Then the machine code will be generated as the module library.
 
  .. code-block:: none
 
-
    ...1%, 0.01 MB, 41 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 82 KB/s, 0 seconds passed
    ...5%, 0.02 MB, 123 KB/s, 0 seconds passed
    ...7%, 0.03 MB, 164 KB/s, 0 seconds passed
    ...9%, 0.04 MB, 206 KB/s, 0 seconds passed
    ...11%, 0.05 MB, 246 KB/s, 0 seconds passed
    ...13%, 0.05 MB, 287 KB/s, 0 seconds passed
    ...15%, 0.06 MB, 327 KB/s, 0 seconds passed
    ...17%, 0.07 MB, 367 KB/s, 0 seconds passed
    ...19%, 0.08 MB, 407 KB/s, 0 seconds passed
    ...21%, 0.09 MB, 447 KB/s, 0 seconds passed
    ...23%, 0.09 MB, 488 KB/s, 0 seconds passed
    ...25%, 0.10 MB, 527 KB/s, 0 seconds passed
    ...27%, 0.11 MB, 567 KB/s, 0 seconds passed
    ...29%, 0.12 MB, 607 KB/s, 0 seconds passed
    ...31%, 0.12 MB, 647 KB/s, 0 seconds passed
    ...33%, 0.13 MB, 686 KB/s, 0 seconds passed
    ...35%, 0.14 MB, 725 KB/s, 0 seconds passed
    ...37%, 0.15 MB, 765 KB/s, 0 seconds passed
    ...39%, 0.16 MB, 804 KB/s, 0 seconds passed
    ...41%, 0.16 MB, 843 KB/s, 0 seconds pa
 ssed
    ...43%, 0.17 MB, 882 KB/s, 0 seconds passed
    ...45%, 0.18 MB, 921 KB/s, 0 seconds passed
    ...47%, 0.19 MB, 961 KB/s, 0 seconds passed
    ...49%, 0.20 MB, 999 KB/s, 0 seconds passed
    ...51%, 0.20 MB, 1038 KB/s, 0 seconds passed
    ...53%, 0.21 MB, 1076 KB/s, 0 seconds passed
    ...55%, 0.22 MB, 1115 KB/s, 0 seconds passed
    ...57%, 0.23 MB, 1151 KB/s, 0 seconds passed
    ...59%, 0.23 MB, 1190 KB/s, 0 seconds passed
    ...61%, 0.24 MB, 1228 KB/s, 0 seconds passed
    ...63%, 0.25 MB, 1267 KB/s, 0 seconds passed
    ...65%, 0.26 MB, 1304 KB/s, 0 seconds passed
    ...67%, 0.27 MB, 1342 KB/s, 0 seconds passed
    ...69%, 0.27 MB, 1381 KB/s, 0 seconds passed
    ...71%, 0.28 MB, 1420 KB/s, 0 seconds passed
    ...73%, 0.29 MB, 1454 KB/s, 0 seconds passed
    ...75%, 0.30 MB, 1493 KB/s, 0 seconds passed
    ...77%, 0.30 MB, 1531 KB/s, 0 seconds passed
    ...79%, 0.31 MB, 1570 KB/s, 0 seconds passed
    ...81%, 0.32 MB, 1607 KB/s, 0 seconds passed
    ...83%, 0.33
  MB, 1646 KB/s, 0 seconds passed
    ...85%, 0.34 MB, 1682 KB/s, 0 seconds passed
    ...87%, 0.34 MB, 1721 KB/s, 0 seconds passed
    ...89%, 0.35 MB, 1756 KB/s, 0 seconds passed
    ...91%, 0.36 MB, 1794 KB/s, 0 seconds passed
    ...93%, 0.37 MB, 1830 KB/s, 0 seconds passed
    ...95%, 0.38 MB, 1868 KB/s, 0 seconds passed
    ...97%, 0.38 MB, 1906 KB/s, 0 seconds passed
    ...99%, 0.39 MB, 1944 KB/s, 0 seconds passed
    ...100%, 0.40 MB, 1981 KB/s, 0 seconds passed
+
    ...1%, 0.01 MB, 98 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 194 KB/s, 0 seconds passed
    ...5%, 0.02 MB, 290 KB/s, 0 seconds passed
    ...7%, 0.03 MB, 386 KB/s, 0 seconds passed
    ...9%, 0.04 MB, 481 KB/s, 0 seconds passed
    ...11%, 0.05 MB, 573 KB/s, 0 seconds passed
    ...13%, 0.05 MB, 667 KB/s, 0 seconds passed
    ...15%, 0.06 MB, 756 KB/s, 0 seconds passed
    ...17%, 0.07 MB, 849 KB/s, 0 seconds passed
    ...19%, 0.08 MB, 939 KB/s, 0 seconds passed
    ...21%, 0.09 MB, 1028 KB/s, 0 seconds passed
    ...23%, 0.09 MB, 1119 KB/s, 0 seconds passed
    ...25%, 0.10 MB, 1203 KB/s, 0 seconds passed
    ...27%, 0.11 MB, 1293 KB/s, 0 seconds passed
    ...29%, 0.12 MB, 1382 KB/s, 0 seconds passed
    ...31%, 0.12 MB, 1471 KB/s, 0 seconds passed
    ...33%, 0.13 MB, 1554 KB/s, 0 seconds passed
    ...35%, 0.14 MB, 1643 KB/s, 0 seconds passed
    ...37%, 0.15 MB, 1730 KB/s, 0 seconds passed
    ...39%, 0.16 MB, 1818 KB/s, 0 seconds passed
    ...41%, 0.16 MB, 1899 KB/s, 
 0 seconds passed
    ...43%, 0.17 MB, 1980 KB/s, 0 seconds passed
    ...45%, 0.18 MB, 2067 KB/s, 0 seconds passed
    ...47%, 0.19 MB, 2145 KB/s, 0 seconds passed
    ...49%, 0.20 MB, 2231 KB/s, 0 seconds passed
    ...51%, 0.20 MB, 2314 KB/s, 0 seconds passed
    ...53%, 0.21 MB, 2360 KB/s, 0 seconds passed
    ...55%, 0.22 MB, 2445 KB/s, 0 seconds passed
    ...57%, 0.23 MB, 2525 KB/s, 0 seconds passed
    ...59%, 0.23 MB, 2609 KB/s, 0 seconds passed
    ...61%, 0.24 MB, 2682 KB/s, 0 seconds passed
    ...63%, 0.25 MB, 2765 KB/s, 0 seconds passed
    ...65%, 0.26 MB, 2836 KB/s, 0 seconds passed
    ...67%, 0.27 MB, 2919 KB/s, 0 seconds passed
    ...69%, 0.27 MB, 2989 KB/s, 0 seconds passed
    ...71%, 0.28 MB, 3071 KB/s, 0 seconds passed
    ...73%, 0.29 MB, 3141 KB/s, 0 seconds passed
    ...75%, 0.30 MB, 3222 KB/s, 0 seconds passed
    ...77%, 0.30 MB, 3254 KB/s, 0 seconds passed
    ...79%, 0.31 MB, 3334 KB/s, 0 seconds passed
    ...81%, 0.32 MB, 3413 KB/s, 0 seconds passed
     ...83%, 0.33 MB, 3493 KB/s, 0 seconds passed
    ...85%, 0.34 MB, 3553 KB/s, 0 seconds passed
    ...87%, 0.34 MB, 3632 KB/s, 0 seconds passed
    ...89%, 0.35 MB, 3710 KB/s, 0 seconds passed
    ...91%, 0.36 MB, 3789 KB/s, 0 seconds passed
    ...93%, 0.37 MB, 3866 KB/s, 0 seconds passed
    ...95%, 0.38 MB, 3945 KB/s, 0 seconds passed
    ...97%, 0.38 MB, 4009 KB/s, 0 seconds passed
    ...99%, 0.39 MB, 4087 KB/s, 0 seconds passed
    ...100%, 0.40 MB, 4158 KB/s, 0 seconds passed
     Cannot find config for target=cuda -model=unknown, workload=('conv2d_nchw.cuda', ('TENSOR', (1, 64, 56, 56), 'float32'), ('TENSOR', (64, 64, 3, 3), 'float32'), (1, 1), (1, 1, 1, 1), (1, 1), 'float32'). A fallback configuration is used, which may bring great performance regression.
     Cannot find config for target=cuda -model=unknown, workload=('conv2d_nchw.cuda', ('TENSOR', (1, 128, 28, 28), 'float32'), ('TENSOR', (128, 128, 3, 3), 'float32'), (1, 1), (1, 1, 1, 1), (1, 1), 'float32'). A fallback configuration is used, which may bring great performance regression.
     Cannot find config for target=cuda -model=unknown, workload=('conv2d_nchw.cuda', ('TENSOR', (1, 256, 14, 14), 'float32'), ('TENSOR', (256, 256, 3, 3), 'float32'), (1, 1), (1, 1, 1, 1), (1, 1), 'float32'). A fallback configuration is used, which may bring great performance regression.
diff --git a/docs/_sources/tutorials/sg_execution_times.rst.txt b/docs/_sources/tutorials/sg_execution_times.rst.txt
index eaf32a2..5a43a2a 100644
--- a/docs/_sources/tutorials/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/sg_execution_times.rst.txt
@@ -5,8 +5,8 @@
 
 Computation times
 =================
-**00:09.733** total execution time for **tutorials** files:
+**00:09.016** total execution time for **tutorials** files:
 
-- **00:09.280**: :ref:`sphx_glr_tutorials_relay_quick_start.py` (``relay_quick_start.py``)
-- **00:00.318**: :ref:`sphx_glr_tutorials_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)
-- **00:00.134**: :ref:`sphx_glr_tutorials_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
+- **00:08.536**: :ref:`sphx_glr_tutorials_relay_quick_start.py` (``relay_quick_start.py``)
+- **00:00.342**: :ref:`sphx_glr_tutorials_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)
+- **00:00.139**: :ref:`sphx_glr_tutorials_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
diff --git a/docs/_sources/tutorials/topi/intro_topi.rst.txt b/docs/_sources/tutorials/topi/intro_topi.rst.txt
index d008862..42e786c 100644
--- a/docs/_sources/tutorials/topi/intro_topi.rst.txt
+++ b/docs/_sources/tutorials/topi/intro_topi.rst.txt
@@ -196,12 +196,12 @@ we can schedule the following series of operations ending with :code:`topi.sum`
       allocate(reduce_temp0, float32, [1]) {
         T_divide_red.rf[0] = 0f32
         for (k0.k1.fused.k2.fused.outer: int32, 0, 10) {
-          if @likely((((((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x) < 10000) && (((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x) < 10000)) && (((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x) < 10000)), dtype=bool, type="pure_intrin", index=0) {
+          if @likely((((((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x) < 10000) && (((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x) < 10000)) && (((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x) < 10000)), dtype=bool, type="pure_intrin") {
             T_divide_red.rf[0] = ((float32*)T_divide_red.rf[0]) + ((((float32*)a_2[((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x)]) + (float32*)b_2[floormod(((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x), 100)])) + ((float32*)a_2[((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x)])*(float32*)b_2[floormod(((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x), 100)])))*0.5f32))
           }
         }
-        attr [meta[CommReducer][0]] "reduce_scope" = @reinterpret(0u64, dtype=handle, type="pure_intrin", index=0);
-        @tvm_thread_allreduce(1u32, (float32*)T_divide_red.rf[0]), True, reduce_temp0, threadIdx.x, dtype=handle, type="intrin", index=0)
+        attr [meta[tir.CommReducer][0]] "reduce_scope" = @reinterpret(0u64, dtype=handle, type="pure_intrin");
+        @tvm_thread_allreduce(1u32, (float32*)T_divide_red.rf[0]), True, reduce_temp0, threadIdx.x, dtype=handle, type="intrin")
         if (threadIdx.x == 0) {
           T_divide_red[0] = (float32*)reduce_temp0[0])
         }
@@ -230,7 +230,7 @@ As you can see, scheduled stages of computation have been accumulated and we can
 
  .. code-block:: none
 
-    [stage(a, 0x144145e20), stage(b, 0x143f95d70), stage(T_add, 0xbf254da0), stage(T_multiply, 0x155b05590), stage(T_elemwise_sum, 0x12e4a3720), stage(T_divide, 0x144195490), stage(T_divide_red.rf, 0x1441445f0), stage(T_divide_red, 0x131381f50)]
+    [stage(a, 0x12858c960), stage(b, 0x13bb5b610), stage(T_add, 0xc0ddf7a0), stage(T_multiply, 0x14f9e45e0), stage(T_elemwise_sum, 0x13d37cad0), stage(T_divide, 0x11cc3d6e0), stage(T_divide_red.rf, 0x11cc374f0), stage(T_divide_red, 0x11c91e300)]
 
 
 
@@ -283,41 +283,41 @@ TOPI also provides common neural nets operations such as _softmax_ with optimize
       attr = {"tir.noalias": True, "global_symbol": "main"}
       buffers = {tarray: Buffer(tarray_2: handle, float32, [512, 512], [])}
       buffer_map = {tarray_1: tarray} {
-      attr [T_softmax_maxelem: handle] "storage_scope" = "global";
-      allocate(T_softmax_maxelem, float32, [512]);
-      attr [T_softmax_exp: handle] "storage_scope" = "global";
-      allocate(T_softmax_exp, float32, [262144]) {
-        attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 512 {
-          T_softmax_maxelem[blockIdx.x] = -3.40282e+38f32
-          for (k: int32, 0, 512) {
-            T_softmax_maxelem[blockIdx.x] = max((float32*)T_softmax_maxelem[blockIdx.x]), (float32*)tarray_2[((blockIdx.x*512) + k)]))
+      attr [T_softmax_norm: handle] "storage_scope" = "global";
+      allocate(T_softmax_norm, float32x4, [65536]);
+      attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 512;
+      attr [normal_reduce_temp0: handle] "storage_scope" = "local";
+      allocate(normal_reduce_temp0, float32, [1]);
+      attr [reduce_temp0: handle] "storage_scope" = "local";
+      allocate(reduce_temp0, float32, [1]);
+      attr [T_softmax_exp: handle] "storage_scope" = "warp";
+      allocate(T_softmax_exp, float32, [512]);
+      attr [normal_reduce_temp0_1: handle] "storage_scope" = "local";
+      allocate(normal_reduce_temp0_1, float32, [1]);
+      attr [reduce_temp0_1: handle] "storage_scope" = "local";
+      allocate(reduce_temp0_1, float32, [1]) {
+        attr [IterVar(threadIdx.x: int32, [0:32], "ThreadIndex", "threadIdx.x")] "thread_extent" = 32 {
+          normal_reduce_temp0[0] = -3.40282e+38f32
+          for (k.inner: int32, 0, 16) {
+            normal_reduce_temp0[0] = max((float32*)normal_reduce_temp0[0]), (float32*)tarray_2[(((blockIdx.x*512) + (threadIdx.x*16)) + k.inner)]))
+          }
+          attr [meta[tir.CommReducer][0]] "reduce_scope" = @reinterpret(0u64, dtype=handle, type="pure_intrin");
+          @tvm_thread_allreduce(1u32, (float32*)normal_reduce_temp0[0]), True, reduce_temp0, threadIdx.x, dtype=handle, type="intrin")
+          for (i1.inner.outer: int32, 0, 4) {
+            T_softmax_exp[ramp(((threadIdx.x*16) + (i1.inner.outer*4)), 1, 4)] = @exp(((float32x4*)tarray_2[ramp((((blockIdx.x*512) + (threadIdx.x*16)) + (i1.inner.outer*4)), 1, 4)]) - broadcast((float32*)reduce_temp0[0]), 4)), dtype=float32x4, type="pure_intrin")
           }
         }
-        attr [IterVar(blockIdx.x, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 512;
-        for (i1: int32, 0, 512) {
-          T_softmax_exp[((blockIdx.x*512) + i1)] = @exp(((float32*)tarray_2[((blockIdx.x*512) + i1)]) - (float32*)T_softmax_maxelem[blockIdx.x])), dtype=float32, type="pure_intrin", index=0)
-        }
-        attr [IterVar(blockIdx.x, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 512;
-        attr [T_softmax_expsum.rf: handle] "storage_scope" = "local";
-        allocate(T_softmax_expsum.rf, float32, [1]);
-        attr [reduce_temp0: handle] "storage_scope" = "local";
-        allocate(reduce_temp0, float32, [1]);
-        attr [IterVar(threadIdx.x: int32, [0:64], "ThreadIndex", "threadIdx.x")] "thread_extent" = 64 {
-          T_softmax_expsum.rf[0] = 0f32
-          for (k.outer: int32, 0, 8) {
-            T_softmax_expsum.rf[0] = ((float32*)T_softmax_expsum.rf[0]) + (float32*)T_softmax_exp[(((blockIdx.x*512) + (k.outer*64)) + threadIdx.x)]))
+        attr [IterVar(threadIdx.x, [0:32], "ThreadIndex", "threadIdx.x")] "thread_extent" = 32 {
+          normal_reduce_temp0_1[0] = 0f32
+          for (k.inner_1: int32, 0, 16) {
+            normal_reduce_temp0_1[0] = ((float32*)normal_reduce_temp0_1[0]) + (float32*)T_softmax_exp[((threadIdx.x*16) + k.inner_1)]))
           }
-          attr [meta[CommReducer][0]] "reduce_scope" = @reinterpret(0u64, dtype=handle, type="pure_intrin", index=0);
-          @tvm_thread_allreduce(1u32, (float32*)T_softmax_expsum.rf[0]), True, reduce_temp0, threadIdx.x, dtype=handle, type="intrin", index=0)
-          if (threadIdx.x == 0) {
-            T_softmax_maxelem[blockIdx.x] = (float32*)reduce_temp0[0])
+          attr [meta[tir.CommReducer][1]] "reduce_scope" = @reinterpret(0u64, dtype=handle, type="pure_intrin");
+          @tvm_thread_allreduce(1u32, (float32*)normal_reduce_temp0_1[0]), True, reduce_temp0_1, threadIdx.x, dtype=handle, type="intrin")
+          for (i1.inner.outer_1: int32, 0, 4) {
+            T_softmax_norm[ramp((((blockIdx.x*512) + (threadIdx.x*16)) + (i1.inner.outer_1*4)), 1, 4)] = ((float32x4*)T_softmax_exp[ramp(((threadIdx.x*16) + (i1.inner.outer_1*4)), 1, 4)]) / broadcast((float32*)reduce_temp0_1[0]), 4))
           }
         }
-        attr [IterVar(blockIdx.x, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 512;
-        attr [IterVar(threadIdx.x, [0:64], "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-        for (i1.inner: int32, 0, 8) {
-          T_softmax_exp[(((blockIdx.x*512) + (threadIdx.x*8)) + i1.inner)] = ((float32*)T_softmax_exp[(((blockIdx.x*512) + (threadIdx.x*8)) + i1.inner)]) / (float32*)T_softmax_maxelem[blockIdx.x]))
-        }
       }
     }
 
@@ -398,31 +398,19 @@ We can fuse :code:`topi.nn.conv2d` and :code:`topi.nn.relu` together.
             attr [IterVar(threadIdx.z_1: int32, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_1: int32, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_1: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16 {
-              pad_temp.shared[(threadIdx.x_1*7)] = @tvm_if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (2 <= ((blockIdx.x*112) + (threadIdx.x_1*7)))), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 450)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tvm_if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (1 <= ((blockIdx.x*112) + (threadIdx.x_1*7)))), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 449)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 448)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)]), 0f32, dtype=float32, type="pure_intrin", index=0)
+              pad_temp.shared[(threadIdx.x_1*7)] = @tvm_if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (2 <= ((blockIdx.x*112) + (threadIdx.x_1*7)))), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 450)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tvm_if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (1 <= ((blockIdx.x*112) + (threadIdx.x_1*7)))), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 449)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 448)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)]), 0f32, dtype=float32, type="pure_intrin")
             }
             attr [IterVar(threadIdx.z_2: int32, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_2: int32, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_2: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16;
-            if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-              if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                  if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                    if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                      if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                        if @likely((((blockIdx.z*2) + threadIdx.x_2) < 10), dtype=bool, type="pure_intrin", index=0) {
-                          placeholder.shared[threadIdx.x_2] = (float32*)placeholder_5[((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5))])
-                        }
-                      }
-                    }
-                  }
-                }
-              }
+            if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin") {
+              placeholder.shared[threadIdx.x_2] = (float32*)placeholder_5[((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5))])
             }
             compute_1[0] = ((float32*)compute_1[0]) + ((float32*)pad_temp.shared[threadIdx.x])*(float32*)placeholder.shared[0])))
             compute_1[2] = ((float32*)compute_1[2]) + ((float32*)pad_temp.shared[(threadIdx.x + 16)])*(float32*)placeholder.shared[0])))
@@ -441,31 +429,19 @@ We can fuse :code:`topi.nn.conv2d` and :code:`topi.nn.relu` together.
             attr [IterVar(threadIdx.z_1, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_1, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16 {
-              pad_temp.shared[(threadIdx.x_1*7)] = @tvm_if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (1 <= ((blockIdx.x*112) + (threadIdx.x_1*7)))), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 449)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 448)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)]), 0f32, dtype=float32, type="pure_intrin", index=0)
+              pad_temp.shared[(threadIdx.x_1*7)] = @tvm_if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (1 <= ((blockIdx.x*112) + (threadIdx.x_1*7)))), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 449)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 448)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)]), 0f32, dtype=float32, type="pure_intrin")
             }
             attr [IterVar(threadIdx.z_2, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_2, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16;
-            if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-              if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                  if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                    if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                      if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                        if @likely((((blockIdx.z*2) + threadIdx.x_2) < 10), dtype=bool, type="pure_intrin", index=0) {
-                          placeholder.shared[threadIdx.x_2] = (float32*)placeholder_5[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 1)])
-                        }
-                      }
-                    }
-                  }
-                }
-              }
+            if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin") {
+              placeholder.shared[threadIdx.x_2] = (float32*)placeholder_5[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 1)])
             }
             compute_1[0] = ((float32*)compute_1[0]) + ((float32*)pad_temp.shared[threadIdx.x])*(float32*)placeholder.shared[0])))
             compute_1[2] = ((float32*)compute_1[2]) + ((float32*)pad_temp.shared[(threadIdx.x + 16)])*(float32*)placeholder.shared[0])))
@@ -484,31 +460,19 @@ We can fuse :code:`topi.nn.conv2d` and :code:`topi.nn.relu` together.
             attr [IterVar(threadIdx.z_1, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_1, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16 {
-              pad_temp.shared[(threadIdx.x_1*7)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 448)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 442)]), 0f32, dtype=float32, type="pure_intrin", index=0)
+              pad_temp.shared[(threadIdx.x_1*7)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 448)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 442)]), 0f32, dtype=float32, type="pure_intrin")
             }
             attr [IterVar(threadIdx.z_2, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_2, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16;
-            if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-              if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                  if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                    if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                      if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                        if @likely((((blockIdx.z*2) + threadIdx.x_2) < 10), dtype=bool, type="pure_intrin", index=0) {
-                          placeholder.shared[threadIdx.x_2] = (float32*)placeholder_5[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 2)])
-                        }
-                      }
-                    }
-                  }
-                }
-              }
+            if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin") {
+              placeholder.shared[threadIdx.x_2] = (float32*)placeholder_5[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 2)])
             }
             compute_1[0] = ((float32*)compute_1[0]) + ((float32*)pad_temp.shared[threadIdx.x])*(float32*)placeholder.shared[0])))
             compute_1[2] = ((float32*)compute_1[2]) + ((float32*)pad_temp.shared[(threadIdx.x + 16)])*(float32*)placeholder.shared[0])))
@@ -527,31 +491,19 @@ We can fuse :code:`topi.nn.conv2d` and :code:`topi.nn.relu` together.
             attr [IterVar(threadIdx.z_1, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_1, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16 {
-              pad_temp.shared[(threadIdx.x_1*7)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 442)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tvm_if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (((blockIdx.x*112) + (threadIdx.x_1*7)) < 217)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 441)]), 0f32, dtype=float32, type="pure_intrin", index=0)
+              pad_temp.shared[(threadIdx.x_1*7)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 442)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tvm_if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (((blockIdx.x*112) + (threadIdx.x_1*7)) < 217)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 441)]), 0f32, dtype=float32, type="pure_intrin")
             }
             attr [IterVar(threadIdx.z_2, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_2, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16;
-            if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-              if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                  if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                    if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                      if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                        if @likely((((blockIdx.z*2) + threadIdx.x_2) < 10), dtype=bool, type="pure_intrin", index=0) {
-                          placeholder.shared[threadIdx.x_2] = (float32*)placeholder_5[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 3)])
-                        }
-                      }
-                    }
-                  }
-                }
-              }
+            if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin") {
+              placeholder.shared[threadIdx.x_2] = (float32*)placeholder_5[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 3)])
             }
             compute_1[0] = ((float32*)compute_1[0]) + ((float32*)pad_temp.shared[threadIdx.x])*(float32*)placeholder.shared[0])))
             compute_1[2] = ((float32*)compute_1[2]) + ((float32*)pad_temp.shared[(threadIdx.x + 16)])*(float32*)placeholder.shared[0])))
@@ -570,31 +522,19 @@ We can fuse :code:`topi.nn.conv2d` and :code:`topi.nn.relu` together.
             attr [IterVar(threadIdx.z_1, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_1, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16 {
-              pad_temp.shared[(threadIdx.x_1*7)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 442)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tvm_if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (((blockIdx.x*112) + (threadIdx.x_1*7)) < 217)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 441)]), 0f32, dtype=float32, type="pure_intrin", index=0)
-              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tvm_if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (((blockIdx.x*112) + (threadIdx.x_1*7)) < 216)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 440)]), 0f32, dtype=float32, type="pure_intrin", index=0)
+              pad_temp.shared[(threadIdx.x_1*7)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tvm_if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 442)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tvm_if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (((blockIdx.x*112) + (threadIdx.x_1*7)) < 217)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 441)]), 0f32, dtype=float32, type="pure_intrin")
+              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tvm_if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (((blockIdx.x*112) + (threadIdx.x_1*7)) < 216)), (float32*)placeholder_4[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 440)]), 0f32, dtype=float32, type="pure_intrin")
             }
             attr [IterVar(threadIdx.z_2, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_2, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16;
-            if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-              if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                  if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                    if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                      if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin", index=0) {
-                        if @likely((((blockIdx.z*2) + threadIdx.x_2) < 10), dtype=bool, type="pure_intrin", index=0) {
-                          placeholder.shared[threadIdx.x_2] = (float32*)placeholder_5[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 4)])
-                        }
-                      }
-                    }
-                  }
-                }
-              }
+            if @likely((threadIdx.x_2 < 2), dtype=bool, type="pure_intrin") {
+              placeholder.shared[threadIdx.x_2] = (float32*)placeholder_5[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 4)])
             }
             compute_1[0] = ((float32*)compute_1[0]) + ((float32*)pad_temp.shared[threadIdx.x])*(float32*)placeholder.shared[0])))
             compute_1[2] = ((float32*)compute_1[2]) + ((float32*)pad_temp.shared[(threadIdx.x + 16)])*(float32*)placeholder.shared[0])))
diff --git a/docs/_sources/tutorials/topi/sg_execution_times.rst.txt b/docs/_sources/tutorials/topi/sg_execution_times.rst.txt
index 7c7c583..fc5424b 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.528** total execution time for **tutorials_topi** files:
+**00:00.536** total execution time for **tutorials_topi** files:
 
-- **00:00.528**: :ref:`sphx_glr_tutorials_topi_intro_topi.py` (``intro_topi.py``)
+- **00:00.536**: :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 2a5f494..3bae1f9 100644
--- a/docs/_sources/vta/tutorials/autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/vta/tutorials/autotvm/sg_execution_times.rst.txt
@@ -5,6 +5,6 @@
 
 Computation times
 =================
-**00:03.566** total execution time for **vta_tutorials_autotvm** files:
+**00:03.860** total execution time for **vta_tutorials_autotvm** files:
 
-- **00:03.566**: :ref:`sphx_glr_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``)
+- **00:03.860**: :ref:`sphx_glr_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_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 af248ca..8d33862 100644
--- a/docs/_sources/vta/tutorials/autotvm/tune_relay_vta.rst.txt
+++ b/docs/_sources/vta/tutorials/autotvm/tune_relay_vta.rst.txt
@@ -95,7 +95,7 @@ Perform vta-specific compilation with Relay from a Gluon model
 
         # Perform quantization in Relay
         # Note: We set opt_level to 3 in order to fold batch norm
-        with relay.build_config(opt_level=3):
+        with tvm.transform.PassContext(opt_level=3):
             with relay.quantize.qconfig(global_scale=8.0, skip_conv_layers=[0]):
                 mod = relay.quantize.quantize(mod, params=params)
 
@@ -427,19 +427,19 @@ Finally, we launch tuning jobs and evaluate the end-to-end performance.
         with autotvm.tophub.context(target, extra_files=[log_file]):
             # Compile network
             print("Compile...")
-            with relay.build_config(opt_level=3, disabled_pass={"AlterOpLayout"}):
-                if target.device_name != "vta":
+            if target.device_name != "vta":
+                with tvm.transform.PassContext(opt_level=3, disabled_pass={"AlterOpLayout"}):
                     graph, lib, params = relay.build(relay_prog,
-                                                     target=target,
-                                                     params=params,
-                                                     target_host=env.target_host)
-                else:
-                    with vta.build_config():
-                        graph, lib, params = relay.build(
-                            relay_prog,
-                            target=target,
-                            params=params,
-                            target_host=env.target_host)
+                                                    target=target,
+                                                    params=params,
+                                                    target_host=env.target_host)
+            else:
+                with vta.build_config(opt_level=3, disabled_pass={"AlterOpLayout"}):
+                    graph, lib, params = relay.build(
+                        relay_prog,
+                        target=target,
+                        params=params,
+                        target_host=env.target_host)
 
             # Export library
             print("Upload...")
@@ -481,14 +481,14 @@ Finally, we launch tuning jobs and evaluate the end-to-end performance.
  .. code-block:: none
 
     Extract tasks...
-
    ...1%, 0.01 MB, 31 KB/s, 0 seconds passed
    ...2%, 0.02 MB, 62 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 94 KB/s, 0 seconds passed
    ...4%, 0.03 MB, 125 KB/s, 0 seconds passed
    ...5%, 0.04 MB, 156 KB/s, 0 seconds passed
    ...6%, 0.05 MB, 187 KB/s, 0 seconds passed
    ...7%, 0.05 MB, 218 KB/s, 0 seconds passed
    ...8%, 0.06 MB, 248 KB/s, 0 seconds passed
    ...9%, 0.07 MB, 279 KB/s, 0 seconds passed
    ...10%, 0.08 MB, 310 KB/s, 0 seconds passed
    ...11%, 0.09 MB, 341 KB/s, 0 seconds passed
    ...13%, 0.09 MB, 371 KB/s, 0 seconds passed
    ...14%, 0.10 MB, 402 KB/s, 0 seconds passed
    ...15%, 0.11 MB, 432 KB/s, 0 seconds passed
    ...16%, 0.12 MB, 462 KB/s, 0 seconds passed
    ...17%, 0.12 MB, 492 KB/s, 0 seconds passed
    ...18%, 0.13 MB, 523 KB/s, 0 seconds passed
    ...19%, 0.14 MB, 553 KB/s, 0 seconds passed
    ...20%, 0.15 MB, 583 KB/s, 0 seconds passed
    ...21%, 0.16 MB, 613 KB/s, 0 seconds passed
    ...22%, 0.16 MB, 643 KB/s, 0 seconds passed
     ...23%, 0.17 MB, 673 KB/s, 0 seconds passed
    ...25%, 0.18 MB, 702 KB/s, 0 seconds passed
    ...26%, 0.19 MB, 732 KB/s, 0 seconds passed
    ...27%, 0.20 MB, 762 KB/s, 0 seconds passed
    ...28%, 0.20 MB, 792 KB/s, 0 seconds passed
    ...29%, 0.21 MB, 821 KB/s, 0 seconds passed
    ...30%, 0.22 MB, 851 KB/s, 0 seconds passed
    ...31%, 0.23 MB, 881 KB/s, 0 seconds passed
    ...32%, 0.23 MB, 911 KB/s, 0 seconds passed
    ...33%, 0.24 MB, 940 KB/s, 0 seconds passed
    ...34%, 0.25 MB, 969 KB/s, 0 seconds passed
    ...35%, 0.26 MB, 999 KB/s, 0 seconds passed
    ...36%, 0.27 MB, 1028 KB/s, 0 seconds passed
    ...38%, 0.27 MB, 1056 KB/s, 0 seconds passed
    ...39%, 0.28 MB, 1086 KB/s, 0 seconds passed
    ...40%, 0.29 MB, 1115 KB/s, 0 seconds passed
    ...41%, 0.30 MB, 1144 KB/s, 0 seconds passed
    ...42%, 0.30 MB, 1174 KB/s, 0 seconds passed
    ...43%, 0.31 MB, 1202 KB/s, 0 seconds passed
    ...44%, 0.32 MB, 1232 KB/s, 0 seconds passed
    ...45%, 0.33 MB, 1260 KB/
 s, 0 seconds passed
    ...46%, 0.34 MB, 1289 KB/s, 0 seconds passed
    ...47%, 0.34 MB, 1319 KB/s, 0 seconds passed
    ...48%, 0.35 MB, 1347 KB/s, 0 seconds passed
    ...50%, 0.36 MB, 1377 KB/s, 0 seconds passed
    ...51%, 0.37 MB, 1404 KB/s, 0 seconds passed
    ...52%, 0.38 MB, 1433 KB/s, 0 seconds passed
    ...53%, 0.38 MB, 1462 KB/s, 0 seconds passed
    ...54%, 0.39 MB, 1491 KB/s, 0 seconds passed
    ...55%, 0.40 MB, 1520 KB/s, 0 seconds passed
    ...56%, 0.41 MB, 1550 KB/s, 0 seconds passed
    ...57%, 0.41 MB, 1578 KB/s, 0 seconds passed
    ...58%, 0.42 MB, 1607 KB/s, 0 seconds passed
    ...59%, 0.43 MB, 1635 KB/s, 0 seconds passed
    ...60%, 0.44 MB, 1663 KB/s, 0 seconds passed
    ...62%, 0.45 MB, 1692 KB/s, 0 seconds passed
    ...63%, 0.45 MB, 1719 KB/s, 0 seconds passed
    ...64%, 0.46 MB, 1748 KB/s, 0 seconds passed
    ...65%, 0.47 MB, 1776 KB/s, 0 seconds passed
    ...66%, 0.48 MB, 1804 KB/s, 0 seconds passed
    ...67%, 0.48 MB, 1832 KB/s, 0 seconds pass
 ed
    ...68%, 0.49 MB, 1860 KB/s, 0 seconds passed
    ...69%, 0.50 MB, 1888 KB/s, 0 seconds passed
    ...70%, 0.51 MB, 1915 KB/s, 0 seconds passed
    ...71%, 0.52 MB, 1943 KB/s, 0 seconds passed
    ...72%, 0.52 MB, 1969 KB/s, 0 seconds passed
    ...73%, 0.53 MB, 1997 KB/s, 0 seconds passed
    ...75%, 0.54 MB, 2026 KB/s, 0 seconds passed
    ...76%, 0.55 MB, 2054 KB/s, 0 seconds passed
    ...77%, 0.55 MB, 2082 KB/s, 0 seconds passed
    ...78%, 0.56 MB, 2110 KB/s, 0 seconds passed
    ...79%, 0.57 MB, 2136 KB/s, 0 seconds passed
    ...80%, 0.58 MB, 2164 KB/s, 0 seconds passed
    ...81%, 0.59 MB, 2193 KB/s, 0 seconds passed
    ...82%, 0.59 MB, 2221 KB/s, 0 seconds passed
    ...83%, 0.60 MB, 2248 KB/s, 0 seconds passed
    ...84%, 0.61 MB, 2277 KB/s, 0 seconds passed
    ...85%, 0.62 MB, 2303 KB/s, 0 seconds passed
    ...87%, 0.62 MB, 2332 KB/s, 0 seconds passed
    ...88%, 0.63 MB, 2360 KB/s, 0 seconds passed
    ...89%, 0.64 MB, 2388 KB/s, 0 seconds passed
    ...90%, 0.
 65 MB, 2413 KB/s, 0 seconds passed
    ...91%, 0.66 MB, 2441 KB/s, 0 seconds passed
    ...92%, 0.66 MB, 2469 KB/s, 0 seconds passed
    ...93%, 0.67 MB, 2498 KB/s, 0 seconds passed
    ...94%, 0.68 MB, 2524 KB/s, 0 seconds passed
    ...95%, 0.69 MB, 2552 KB/s, 0 seconds passed
    ...96%, 0.70 MB, 2580 KB/s, 0 seconds passed
    ...97%, 0.70 MB, 2608 KB/s, 0 seconds passed
    ...99%, 0.71 MB, 2636 KB/s, 0 seconds passed
    ...100%, 0.72 MB, 2662 KB/s, 0 seconds passed
+
    ...1%, 0.01 MB, 40 KB/s, 0 seconds passed
    ...2%, 0.02 MB, 81 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 122 KB/s, 0 seconds passed
    ...4%, 0.03 MB, 162 KB/s, 0 seconds passed
    ...5%, 0.04 MB, 202 KB/s, 0 seconds passed
    ...6%, 0.05 MB, 242 KB/s, 0 seconds passed
    ...7%, 0.05 MB, 282 KB/s, 0 seconds passed
    ...8%, 0.06 MB, 322 KB/s, 0 seconds passed
    ...9%, 0.07 MB, 362 KB/s, 0 seconds passed
    ...10%, 0.08 MB, 402 KB/s, 0 seconds passed
    ...11%, 0.09 MB, 441 KB/s, 0 seconds passed
    ...13%, 0.09 MB, 481 KB/s, 0 seconds passed
    ...14%, 0.10 MB, 520 KB/s, 0 seconds passed
    ...15%, 0.11 MB, 559 KB/s, 0 seconds passed
    ...16%, 0.12 MB, 598 KB/s, 0 seconds passed
    ...17%, 0.12 MB, 638 KB/s, 0 seconds passed
    ...18%, 0.13 MB, 677 KB/s, 0 seconds passed
    ...19%, 0.14 MB, 715 KB/s, 0 seconds passed
    ...20%, 0.15 MB, 755 KB/s, 0 seconds passed
    ...21%, 0.16 MB, 793 KB/s, 0 seconds passed
    ...22%, 0.16 MB, 832 KB/s, 0 seconds passed
 
    ...23%, 0.17 MB, 870 KB/s, 0 seconds passed
    ...25%, 0.18 MB, 909 KB/s, 0 seconds passed
    ...26%, 0.19 MB, 948 KB/s, 0 seconds passed
    ...27%, 0.20 MB, 986 KB/s, 0 seconds passed
    ...28%, 0.20 MB, 1022 KB/s, 0 seconds passed
    ...29%, 0.21 MB, 1061 KB/s, 0 seconds passed
    ...30%, 0.22 MB, 1099 KB/s, 0 seconds passed
    ...31%, 0.23 MB, 1136 KB/s, 0 seconds passed
    ...32%, 0.23 MB, 1175 KB/s, 0 seconds passed
    ...33%, 0.24 MB, 1213 KB/s, 0 seconds passed
    ...34%, 0.25 MB, 1251 KB/s, 0 seconds passed
    ...35%, 0.26 MB, 1287 KB/s, 0 seconds passed
    ...36%, 0.27 MB, 1325 KB/s, 0 seconds passed
    ...38%, 0.27 MB, 1362 KB/s, 0 seconds passed
    ...39%, 0.28 MB, 1400 KB/s, 0 seconds passed
    ...40%, 0.29 MB, 1438 KB/s, 0 seconds passed
    ...41%, 0.30 MB, 1475 KB/s, 0 seconds passed
    ...42%, 0.30 MB, 1512 KB/s, 0 seconds passed
    ...43%, 0.31 MB, 1550 KB/s, 0 seconds passed
    ...44%, 0.32 MB, 1584 KB/s, 0 seconds passed
    ...45%, 0.33 MB,
  1622 KB/s, 0 seconds passed
    ...46%, 0.34 MB, 1659 KB/s, 0 seconds passed
    ...47%, 0.34 MB, 1697 KB/s, 0 seconds passed
    ...48%, 0.35 MB, 1734 KB/s, 0 seconds passed
    ...50%, 0.36 MB, 1771 KB/s, 0 seconds passed
    ...51%, 0.37 MB, 1807 KB/s, 0 seconds passed
    ...52%, 0.38 MB, 1845 KB/s, 0 seconds passed
    ...53%, 0.38 MB, 1879 KB/s, 0 seconds passed
    ...54%, 0.39 MB, 1916 KB/s, 0 seconds passed
    ...55%, 0.40 MB, 1953 KB/s, 0 seconds passed
    ...56%, 0.41 MB, 1991 KB/s, 0 seconds passed
    ...57%, 0.41 MB, 2028 KB/s, 0 seconds passed
    ...58%, 0.42 MB, 2065 KB/s, 0 seconds passed
    ...59%, 0.43 MB, 2099 KB/s, 0 seconds passed
    ...60%, 0.44 MB, 2137 KB/s, 0 seconds passed
    ...62%, 0.45 MB, 2173 KB/s, 0 seconds passed
    ...63%, 0.45 MB, 2210 KB/s, 0 seconds passed
    ...64%, 0.46 MB, 2246 KB/s, 0 seconds passed
    ...65%, 0.47 MB, 2283 KB/s, 0 seconds passed
    ...66%, 0.48 MB, 2317 KB/s, 0 seconds passed
    ...67%, 0.48 MB, 2354 KB/s, 0 sec
 onds passed
    ...68%, 0.49 MB, 2389 KB/s, 0 seconds passed
    ...69%, 0.50 MB, 2426 KB/s, 0 seconds passed
    ...70%, 0.51 MB, 2462 KB/s, 0 seconds passed
    ...71%, 0.52 MB, 2499 KB/s, 0 seconds passed
    ...72%, 0.52 MB, 2531 KB/s, 0 seconds passed
    ...73%, 0.53 MB, 2568 KB/s, 0 seconds passed
    ...75%, 0.54 MB, 2604 KB/s, 0 seconds passed
    ...76%, 0.55 MB, 2640 KB/s, 0 seconds passed
    ...77%, 0.55 MB, 2669 KB/s, 0 seconds passed
    ...78%, 0.56 MB, 2706 KB/s, 0 seconds passed
    ...79%, 0.57 MB, 2741 KB/s, 0 seconds passed
    ...80%, 0.58 MB, 2778 KB/s, 0 seconds passed
    ...81%, 0.59 MB, 2814 KB/s, 0 seconds passed
    ...82%, 0.59 MB, 2850 KB/s, 0 seconds passed
    ...83%, 0.60 MB, 2886 KB/s, 0 seconds passed
    ...84%, 0.61 MB, 2922 KB/s, 0 seconds passed
    ...85%, 0.62 MB, 2957 KB/s, 0 seconds passed
    ...87%, 0.62 MB, 2993 KB/s, 0 seconds passed
    ...88%, 0.63 MB, 3026 KB/s, 0 seconds passed
    ...89%, 0.64 MB, 3062 KB/s, 0 seconds passed
    .
 ..90%, 0.65 MB, 3095 KB/s, 0 seconds passed
    ...91%, 0.66 MB, 3131 KB/s, 0 seconds passed
    ...92%, 0.66 MB, 3163 KB/s, 0 seconds passed
    ...93%, 0.67 MB, 3199 KB/s, 0 seconds passed
    ...94%, 0.68 MB, 3234 KB/s, 0 seconds passed
    ...95%, 0.69 MB, 3270 KB/s, 0 seconds passed
    ...96%, 0.70 MB, 3305 KB/s, 0 seconds passed
    ...97%, 0.70 MB, 3341 KB/s, 0 seconds passed
    ...99%, 0.71 MB, 3376 KB/s, 0 seconds passed
    ...100%, 0.72 MB, 3409 KB/s, 0 seconds passed
     Exception in thread Thread-9:
     Traceback (most recent call last):
       File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
         self.run()
       File "/usr/lib/python3.6/threading.py", line 864, in run
         self._target(*self._args, **self._kwargs)
-      File "/workspace/docs/../python/tvm/autotvm/task/relay_integration.py", line 49, in _lower
+      File "/workspace/docs/../python/tvm/autotvm/task/relay_integration.py", line 48, in _lower
         grc.codegen(mod["main"])
       File "/workspace/docs/../python/tvm/relay/backend/graph_runtime_codegen.py", line 88, in codegen
         arr = self._get_param_by_name(key)
@@ -497,11 +497,11 @@ Finally, we launch tuning jobs and evaluate the end-to-end performance.
       File "tvm/_ffi/_cython/./packed_func.pxi", line 245, in tvm._ffi._cy3.core.FuncCall3
       File "tvm/_ffi/_cython/./base.pxi", line 160, in tvm._ffi._cy3.core.CALL
     tvm._ffi.base.TVMError: Traceback (most recent call last):
-      [bt] (3) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7ffa999ba6a1]
-      [bt] (2) /workspace/build/libtvm.so(std::_Function_handler<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*), tvm::relay::backend::GraphRuntimeCodegenModule::GetFunction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, tvm::runtime::ObjectPtr<tvm::runtime::Object> const&)::{lambda(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)#5}>::_M_invoke(std::_Any_data const&, tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&)+0x6f) [0x7ffa9 [...]
-      [bt] (1) /workspace/build/libtvm.so(tvm::runtime::TVMArgValue::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >[abi:cxx11]() const+0x141) [0x7ffa98ff3121]
-      [bt] (0) /workspace/build/libtvm.so(dmlc::LogMessageFatal::~LogMessageFatal()+0x67) [0x7ffa98fe0f87]
-      File "/workspace/include/tvm/runtime/packed_func.h", line 484
+      [bt] (3) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f259437cd11]
+      [bt] (2) /workspace/build/libtvm.so(std::_Function_handler<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*), tvm::relay::backend::GraphRuntimeCodegenModule::GetFunction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, tvm::runtime::ObjectPtr<tvm::runtime::Object> const&)::{lambda(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)#5}>::_M_invoke(std::_Any_data const&, tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&)+0x6f) [0x7f259 [...]
+      [bt] (1) /workspace/build/libtvm.so(tvm::runtime::TVMArgValue::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >[abi:cxx11]() const+0x141) [0x7f259397c201]
+      [bt] (0) /workspace/build/libtvm.so(dmlc::LogMessageFatal::~LogMessageFatal()+0x67) [0x7f259396a047]
+      File "/workspace/include/tvm/runtime/packed_func.h", line 491
     TVMError: Check failed: type_code_ == kTVMStr (8 vs. 11) : expected str but get Object
 
     Extracted 10 conv2d tasks:
diff --git a/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt b/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt
index aa69074..f8ac6af 100644
--- a/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt
+++ b/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt
@@ -192,7 +192,7 @@ The compilation steps are:
         if target.device_name == "vta":
             # Perform quantization in Relay
             # Note: We set opt_level to 3 in order to fold batch norm
-            with relay.build_config(opt_level=3):
+            with tvm.transform.PassContext(opt_level=3):
                 with relay.quantize.qconfig(global_scale=8.0,
                                             skip_conv_layers=[0]):
                     mod = relay.quantize.quantize(mod, params=params)
@@ -209,16 +209,16 @@ The compilation steps are:
             relay_prog = mod["main"]
 
         # Compile Relay program with AlterOpLayout disabled
-        with relay.build_config(opt_level=3, disabled_pass={"AlterOpLayout"}):
-            if target.device_name != "vta":
+        if target.device_name != "vta":
+            with tvm.transform.PassContext(opt_level=3, disabled_pass={"AlterOpLayout"}):
+                graph, lib, params = relay.build(
+                    relay_prog, target=target,
+                    params=params, target_host=env.target_host)
+        else:
+            with vta.build_config(opt_level=3, disabled_pass={"AlterOpLayout"}):
                 graph, lib, params = relay.build(
                     relay_prog, target=target,
                     params=params, target_host=env.target_host)
-            else:
-                with vta.build_config():
-                    graph, lib, params = relay.build(
-                        relay_prog, target=target,
-                        params=params, target_host=env.target_host)
 
         # Measure Relay build time
         build_time = time.time() - build_start
@@ -243,8 +243,8 @@ The compilation steps are:
 
  .. code-block:: none
 
-
    ...12%, 0.01 MB, 43 KB/s, 0 seconds passed
    ...25%, 0.02 MB, 86 KB/s, 0 seconds passed
    ...38%, 0.02 MB, 129 KB/s, 0 seconds passed
    ...51%, 0.03 MB, 172 KB/s, 0 seconds passed
    ...64%, 0.04 MB, 215 KB/s, 0 seconds passed
    ...77%, 0.05 MB, 257 KB/s, 0 seconds passed
    ...90%, 0.05 MB, 299 KB/s, 0 seconds passed
    ...100%, 0.06 MB, 341 KB/s, 0 seconds passed
-    resnet18_v1 inference graph built in 3.88s!
+
    ...12%, 0.01 MB, 36 KB/s, 0 seconds passed
    ...25%, 0.02 MB, 72 KB/s, 0 seconds passed
    ...38%, 0.02 MB, 109 KB/s, 0 seconds passed
    ...51%, 0.03 MB, 145 KB/s, 0 seconds passed
    ...64%, 0.04 MB, 181 KB/s, 0 seconds passed
    ...77%, 0.05 MB, 217 KB/s, 0 seconds passed
    ...90%, 0.05 MB, 253 KB/s, 0 seconds passed
    ...100%, 0.06 MB, 288 KB/s, 0 seconds passed
+    resnet18_v1 inference graph built in 4.19s!
 
 
 
diff --git a/docs/_sources/vta/tutorials/frontend/deploy_detection.rst.txt b/docs/_sources/vta/tutorials/frontend/deploy_detection.rst.txt
index a39379d..a84ad23 100644
--- a/docs/_sources/vta/tutorials/frontend/deploy_detection.rst.txt
+++ b/docs/_sources/vta/tutorials/frontend/deploy_detection.rst.txt
@@ -265,7 +265,7 @@ The compilation steps are:
         if target.device_name == "vta":
         # Perform quantization in Relay
         # Note: We set opt_level to 3 in order to fold batch norm
-            with relay.build_config(opt_level=3):
+            with tvm.transform.PassContext(opt_level=3):
                 with relay.quantize.qconfig(global_scale=33.0,
                                             skip_conv_layers=[0],
                                             store_lowbit_output=True,
@@ -315,7 +315,7 @@ The compilation steps are:
 
  .. code-block:: none
 
-    yolov3-tiny inference graph built in 4.97s!
+    yolov3-tiny inference graph built in 5.53s!
 
 
 
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 c82815d..e00fd79 100644
--- a/docs/_sources/vta/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/vta/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,7 +5,7 @@
 
 Computation times
 =================
-**00:56.299** total execution time for **vta_tutorials_frontend** files:
+**00:54.502** total execution time for **vta_tutorials_frontend** files:
 
-- **00:33.305**: :ref:`sphx_glr_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``)
-- **00:22.994**: :ref:`sphx_glr_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``)
+- **00:32.900**: :ref:`sphx_glr_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``)
+- **00:21.602**: :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 053abb5..fa8d003 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 = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {A: Buffer(A_2: handle, int8, [1, 16, 1, 16], []),
-                 B: Buffer(B_2: handle, int8, [16, 16, 16, 16], []),
+      buffers = {B: Buffer(B_2: handle, int8, [16, 16, 16, 16], []),
+                 A: Buffer(A_2: handle, int8, [1, 16, 1, 16], []),
                  C: Buffer(C_2: handle, int8, [1, 16, 1, 16], [])}
       buffer_map = {C_1: C, B_1: B, A_1: A} {
       attr [A_buf: handle] "storage_scope" = "global";
@@ -539,8 +539,8 @@ by the VTA runtime JIT compiler.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {A: Buffer(A_2: handle, int8, [1, 16, 1, 16], []),
-                 B: Buffer(B_2: handle, int8, [16, 16, 16, 16], []),
+      buffers = {B: Buffer(B_2: handle, int8, [16, 16, 16, 16], []),
+                 A: Buffer(A_2: handle, int8, [1, 16, 1, 16], []),
                  C: Buffer(C_2: handle, int8, [1, 16, 1, 16], [])}
       buffer_map = {C_1: C, B_1: B, A_1: A} {
       attr [C_buf: handle] "storage_scope" = "local.acc_buffer";
@@ -548,36 +548,36 @@ by the VTA runtime JIT compiler.
       attr [B_buf: handle] "storage_scope" = "local.wgt_buffer" {
         attr [IterVar(vta: int32, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 2 {
           attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushGEMMOp" {
-            @VTAUopLoopBegin(16, 1, 0, 0, dtype=int32, type="extern", index=0)
-            @VTAUopPush(0, 1, 0, 0, 0, 0, 0, 0, dtype=int32, type="extern", index=0)
-            @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+            @VTAUopLoopBegin(16, 1, 0, 0, dtype=int32, type="extern")
+            @VTAUopPush(0, 1, 0, 0, 0, 0, 0, 0, dtype=int32, type="extern")
+            @VTAUopLoopEnd(, dtype=int32, type="extern")
           }
-          @vta.coproc_dep_push(2, 1, dtype=int32, type="intrin", index=0)
+          @vta.coproc_dep_push(2, 1, dtype=int32, type="intrin")
         }
         for (ko: int32, 0, 16) {
           attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 1 {
-            @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin", index=0)
-            @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), A_2, ko, 1, 1, 1, 0, 0, 0, 0, 0, 2, dtype=int32, type="extern", index=0)
-            @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), B_2, ko, 1, 16, 16, 0, 0, 0, 0, 0, 1, dtype=int32, type="extern", index=0)
-            @vta.coproc_dep_push(1, 2, dtype=int32, type="intrin", index=0)
+            @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin")
+            @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), A_2, ko, 1, 1, 1, 0, 0, 0, 0, 0, 2, dtype=int32, type="extern")
+            @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), B_2, ko, 1, 16, 16, 0, 0, 0, 0, 0, 1, dtype=int32, type="extern")
+            @vta.coproc_dep_push(1, 2, dtype=int32, type="intrin")
           }
           attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 2 {
-            @vta.coproc_dep_pop(1, 2, dtype=int32, type="intrin", index=0)
+            @vta.coproc_dep_pop(1, 2, dtype=int32, type="intrin")
             attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushGEMMOp" {
-              @VTAUopLoopBegin(16, 1, 0, 1, dtype=int32, type="extern", index=0)
-              @VTAUopPush(0, 0, 0, 0, 0, 0, 0, 0, dtype=int32, type="extern", index=0)
-              @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+              @VTAUopLoopBegin(16, 1, 0, 1, dtype=int32, type="extern")
+              @VTAUopPush(0, 0, 0, 0, 0, 0, 0, 0, dtype=int32, type="extern")
+              @VTAUopLoopEnd(, dtype=int32, type="extern")
             }
-            @vta.coproc_dep_push(2, 1, dtype=int32, type="intrin", index=0)
+            @vta.coproc_dep_push(2, 1, dtype=int32, type="intrin")
           }
         }
-        @vta.coproc_dep_push(2, 3, dtype=int32, type="intrin", index=0)
-        @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin", index=0)
+        @vta.coproc_dep_push(2, 3, dtype=int32, type="intrin")
+        @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin")
         attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 3 {
-          @vta.coproc_dep_pop(2, 3, dtype=int32, type="intrin", index=0)
-          @VTAStoreBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), 0, 4, C_2, 0, 16, 1, 16, dtype=int32, type="extern", index=0)
+          @vta.coproc_dep_pop(2, 3, dtype=int32, type="intrin")
+          @VTAStoreBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), 0, 4, C_2, 0, 16, 1, 16, dtype=int32, type="extern")
         }
-        @vta.coproc_sync(, dtype=int32, type="intrin", index=0)
+        @vta.coproc_sync(, dtype=int32, type="intrin")
       }
     }
 
diff --git a/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt b/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt
index c010585..0b6419d 100644
--- a/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt
+++ b/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt
@@ -271,7 +271,7 @@ Those include:
           for (i2: int32, 0, 16) {
             for (i3: int32, 0, 16) {
               for (i5: int32, 0, 16) {
-                data_buf[((((i1*4096) + (i2*256)) + (i3*16)) + i5)] = @tvm_if_then_else(((((1 <= i2) && (i2 < 15)) && (1 <= i3)) && (i3 < 15)), (int8*)data_2[(((((i1*3136) + (i2*224)) + (i3*16)) + i5) - 240)]), 0i8, dtype=int8, type="pure_intrin", index=0)
+                data_buf[((((i1*4096) + (i2*256)) + (i3*16)) + i5)] = @tvm_if_then_else(((((1 <= i2) && (i2 < 15)) && (1 <= i3)) && (i3 < 15)), (int8*)data_2[(((((i1*3136) + (i2*224)) + (i3*16)) + i5) - 240)]), 0i8, dtype=int8, type="pure_intrin")
               }
             }
           }
@@ -311,7 +311,7 @@ Those include:
           for (i2_2: int32, 0, 14) {
             for (i3_2: int32, 0, 14) {
               for (i5_2: int32, 0, 16) {
-                res_conv[((((i1_2*3136) + (i2_2*224)) + (i3_2*16)) + i5_2)] = @shift_right((int32*)res_conv[((((i1_2*3136) + (i2_2*224)) + (i3_2*16)) + i5_2)]), 8, dtype=int32, type="pure_intrin", index=0)
+                res_conv[((((i1_2*3136) + (i2_2*224)) + (i3_2*16)) + i5_2)] = @shift_right((int32*)res_conv[((((i1_2*3136) + (i2_2*224)) + (i3_2*16)) + i5_2)]), 8, dtype=int32, type="pure_intrin")
               }
             }
           }
@@ -467,7 +467,7 @@ below.
           for (i2: int32, 0, 16) {
             for (i3: int32, 0, 16) {
               for (i5: int32, 0, 16) {
-                data_buf[((((i1*4096) + (i2*256)) + (i3*16)) + i5)] = @tvm_if_then_else(((((1 <= i2) && (i2 < 15)) && (1 <= i3)) && (i3 < 15)), (int8*)data_2[(((((i1*3136) + (i2*224)) + (i3*16)) + i5) - 240)]), 0i8, dtype=int8, type="pure_intrin", index=0)
+                data_buf[((((i1*4096) + (i2*256)) + (i3*16)) + i5)] = @tvm_if_then_else(((((1 <= i2) && (i2 < 15)) && (1 <= i3)) && (i3 < 15)), (int8*)data_2[(((((i1*3136) + (i2*224)) + (i3*16)) + i5) - 240)]), 0i8, dtype=int8, type="pure_intrin")
               }
             }
           }
@@ -518,8 +518,8 @@ below.
             for (i2_2: int32, 0, 7) {
               for (i3_2: int32, 0, 14) {
                 for (i5_2: int32, 0, 16) {
-                  res_conv[((((i1_2*1568) + (i2_2*224)) + (i3_2*16)) + i5_2)] = @shift_right((int32*)res_conv[((((i1_2*1568) + (i2_2*224)) + (i3_2*16)) + i5_2)]), 8, dtype=int32, type="pure_intrin", index=0)
-                  res_conv[(((((i1_2*1568) + (i2_2*224)) + (i3_2*16)) + i5_2) + 12544)] = @shift_right((int32*)res_conv[(((((i1_2*1568) + (i2_2*224)) + (i3_2*16)) + i5_2) + 12544)]), 8, dtype=int32, type="pure_intrin", index=0)
+                  res_conv[((((i1_2*1568) + (i2_2*224)) + (i3_2*16)) + i5_2)] = @shift_right((int32*)res_conv[((((i1_2*1568) + (i2_2*224)) + (i3_2*16)) + i5_2)]), 8, dtype=int32, type="pure_intrin")
+                  res_conv[(((((i1_2*1568) + (i2_2*224)) + (i3_2*16)) + i5_2) + 12544)] = @shift_right((int32*)res_conv[(((((i1_2*1568) + (i2_2*224)) + (i3_2*16)) + i5_2) + 12544)]), 8, dtype=int32, type="pure_intrin")
                 }
               }
             }
@@ -636,103 +636,103 @@ and mapping the shift, and clipping computation to the vector ALU.
 
     primfn(data_1: handle, kernel_1: handle, res_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {data: Buffer(data_2: handle, int8, [1, 16, 14, 14, 1, 16], []),
-                 kernel: Buffer(kernel_2: handle, int8, [16, 16, 3, 3, 16, 16], []),
-                 res: Buffer(res_2: handle, int8, [1, 16, 14, 14, 1, 16], [])}
-      buffer_map = {res_1: res, kernel_1: kernel, data_1: data} {
+      buffers = {res: Buffer(res_2: handle, int8, [1, 16, 14, 14, 1, 16], []),
+                 data: Buffer(data_2: handle, int8, [1, 16, 14, 14, 1, 16], []),
+                 kernel: Buffer(kernel_2: handle, int8, [16, 16, 3, 3, 16, 16], [])}
+      buffer_map = {kernel_1: kernel, res_1: res, data_1: data} {
       attr [res_conv: handle] "storage_scope" = "local.acc_buffer";
       attr [data_buf: handle] "storage_scope" = "local.inp_buffer";
       attr [kernel_buf: handle] "storage_scope" = "local.wgt_buffer" {
-        @vta.coproc_dep_push(3, 2, dtype=int32, type="intrin", index=0)
-        @vta.coproc_dep_push(3, 2, dtype=int32, type="intrin", index=0)
+        @vta.coproc_dep_push(3, 2, dtype=int32, type="intrin")
+        @vta.coproc_dep_push(3, 2, dtype=int32, type="intrin")
         for (i2.outer: int32, 0, 2) {
           for (cthread.s: int32, 0, 2) {
             attr [IterVar(vta: int32, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 2 {
-              @vta.coproc_dep_pop(3, 2, dtype=int32, type="intrin", index=0)
+              @vta.coproc_dep_pop(3, 2, dtype=int32, type="intrin")
               attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushGEMMOp" {
-                @VTAUopLoopBegin(8, 98, 0, 0, dtype=int32, type="extern", index=0)
-                @VTAUopLoopBegin(7, 14, 0, 0, dtype=int32, type="extern", index=0)
+                @VTAUopLoopBegin(8, 98, 0, 0, dtype=int32, type="extern")
+                @VTAUopLoopBegin(7, 14, 0, 0, dtype=int32, type="extern")
                 for (j.init: int32, 0, 14) {
-                  @VTAUopPush(0, 1, ((cthread.s*784) + j.init), 0, 0, 0, 0, 0, dtype=int32, type="extern", index=0)
+                  @VTAUopPush(0, 1, ((cthread.s*784) + j.init), 0, 0, 0, 0, 0, dtype=int32, type="extern")
                 }
-                @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
-                @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+                @VTAUopLoopEnd(, dtype=int32, type="extern")
+                @VTAUopLoopEnd(, dtype=int32, type="extern")
               }
-              @vta.coproc_dep_push(2, 1, dtype=int32, type="intrin", index=0)
+              @vta.coproc_dep_push(2, 1, dtype=int32, type="intrin")
             }
           }
           for (ic.outer: int32, 0, 16) {
             attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 1 {
-              @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin", index=0)
-              @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), data_2, ((((ic.outer*196) + (i2.outer*98)) + (max((1 - (i2.outer*7)), 0)*14)) - 14), 14, ((9 - max((1 - (i2.outer*7)), 0)) - max(((i2.outer*7) - 6), 0)), 14, 1, max((1 - (i2.outer*7)), 0), 1, max(((i2.outer*7) - 6), 0), 0, 2, dtype=int32, type="extern", index=0)
-              @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), kernel_2, (ic.outer*9), 9, 8, 144, 0, 0, 0, 0, 0, 1, dtype=int32, type="extern", index=0)
-              @vta.coproc_dep_push(1, 2, dtype=int32, type="intrin", index=0)
+              @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin")
+              @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), data_2, ((((ic.outer*196) + (i2.outer*98)) + (max((1 - (i2.outer*7)), 0)*14)) - 14), 14, ((9 - max((1 - (i2.outer*7)), 0)) - max(((i2.outer*7) - 6), 0)), 14, 1, max((1 - (i2.outer*7)), 0), 1, max(((i2.outer*7) - 6), 0), 0, 2, dtype=int32, type="extern")
+              @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), kernel_2, (ic.outer*9), 9, 8, 144, 0, 0, 0, 0, 0, 1, dtype=int32, type="extern")
+              @vta.coproc_dep_push(1, 2, dtype=int32, type="intrin")
             }
             attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 1 {
-              @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin", index=0)
-              @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), data_2, ((((ic.outer*196) + (i2.outer*98)) + (max((1 - (i2.outer*7)), 0)*14)) - 14), 14, ((9 - max((1 - (i2.outer*7)), 0)) - max(((i2.outer*7) - 6), 0)), 14, 1, max((1 - (i2.outer*7)), 0), 1, max(((i2.outer*7) - 6), 0), 144, 2, dtype=int32, type="extern", index=0)
-              @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), kernel_2, ((ic.outer*9) + 1152), 9, 8, 144, 0, 0, 0, 0, 72, 1, dtype=int32, type="extern", index=0)
-              @vta.coproc_dep_push(1, 2, dtype=int32, type="intrin", index=0)
+              @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin")
+              @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), data_2, ((((ic.outer*196) + (i2.outer*98)) + (max((1 - (i2.outer*7)), 0)*14)) - 14), 14, ((9 - max((1 - (i2.outer*7)), 0)) - max(((i2.outer*7) - 6), 0)), 14, 1, max((1 - (i2.outer*7)), 0), 1, max(((i2.outer*7) - 6), 0), 144, 2, dtype=int32, type="extern")
+              @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), kernel_2, ((ic.outer*9) + 1152), 9, 8, 144, 0, 0, 0, 0, 72, 1, dtype=int32, type="extern")
+              @vta.coproc_dep_push(1, 2, dtype=int32, type="intrin")
             }
             for (cthread.s_1: int32, 0, 2) {
               attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 2 {
-                @vta.coproc_dep_pop(1, 2, dtype=int32, type="intrin", index=0)
+                @vta.coproc_dep_pop(1, 2, dtype=int32, type="intrin")
                 attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushGEMMOp" {
-                  @VTAUopLoopBegin(8, 98, 0, 9, dtype=int32, type="extern", index=0)
-                  @VTAUopLoopBegin(7, 14, 16, 0, dtype=int32, type="extern", index=0)
+                  @VTAUopLoopBegin(8, 98, 0, 9, dtype=int32, type="extern")
+                  @VTAUopLoopBegin(7, 14, 16, 0, dtype=int32, type="extern")
                   for (dy: int32, 0, 3) {
                     for (dx: int32, 0, 3) {
                       for (j: int32, 0, 14) {
-                        @VTAUopPush(0, 0, ((cthread.s_1*784) + j), ((((cthread.s_1*144) + (dy*16)) + j) + dx), (((cthread.s_1*72) + (dy*3)) + dx), 0, 0, 0, dtype=int32, type="extern", index=0)
+                        @VTAUopPush(0, 0, ((cthread.s_1*784) + j), ((((cthread.s_1*144) + (dy*16)) + j) + dx), (((cthread.s_1*72) + (dy*3)) + dx), 0, 0, 0, dtype=int32, type="extern")
                       }
                     }
                   }
-                  @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
-                  @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+                  @VTAUopLoopEnd(, dtype=int32, type="extern")
+                  @VTAUopLoopEnd(, dtype=int32, type="extern")
                 }
-                @vta.coproc_dep_push(2, 1, dtype=int32, type="intrin", index=0)
+                @vta.coproc_dep_push(2, 1, dtype=int32, type="intrin")
               }
             }
           }
-          @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin", index=0)
-          @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin", index=0)
+          @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin")
+          @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin")
           for (cthread.s_2: int32, 0, 2) {
             attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 2 {
               attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushALUOp" {
-                @VTAUopLoopBegin(784, 1, 1, 0, dtype=int32, type="extern", index=0)
-                @VTAUopPush(1, 0, (cthread.s_2*784), (cthread.s_2*784), 0, 3, 1, 8, dtype=int32, type="extern", index=0)
-                @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+                @VTAUopLoopBegin(784, 1, 1, 0, dtype=int32, type="extern")
+                @VTAUopPush(1, 0, (cthread.s_2*784), (cthread.s_2*784), 0, 3, 1, 8, dtype=int32, type="extern")
+                @VTAUopLoopEnd(, dtype=int32, type="extern")
               }
               attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushALUOp" {
-                @VTAUopLoopBegin(784, 1, 1, 0, dtype=int32, type="extern", index=0)
-                @VTAUopPush(1, 0, (cthread.s_2*784), (cthread.s_2*784), 0, 1, 1, 0, dtype=int32, type="extern", index=0)
-                @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+                @VTAUopLoopBegin(784, 1, 1, 0, dtype=int32, type="extern")
+                @VTAUopPush(1, 0, (cthread.s_2*784), (cthread.s_2*784), 0, 1, 1, 0, dtype=int32, type="extern")
+                @VTAUopLoopEnd(, dtype=int32, type="extern")
               }
               attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushALUOp" {
-                @VTAUopLoopBegin(784, 1, 1, 0, dtype=int32, type="extern", index=0)
-                @VTAUopPush(1, 0, (cthread.s_2*784), (cthread.s_2*784), 0, 0, 1, 127, dtype=int32, type="extern", index=0)
-                @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+                @VTAUopLoopBegin(784, 1, 1, 0, dtype=int32, type="extern")
+                @VTAUopPush(1, 0, (cthread.s_2*784), (cthread.s_2*784), 0, 0, 1, 127, dtype=int32, type="extern")
+                @VTAUopLoopEnd(, dtype=int32, type="extern")
               }
-              @vta.coproc_dep_push(2, 3, dtype=int32, type="intrin", index=0)
+              @vta.coproc_dep_push(2, 3, dtype=int32, type="intrin")
             }
           }
           for (cthread.s_3: int32, 0, 2) {
             attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 3 {
-              @vta.coproc_dep_pop(2, 3, dtype=int32, type="intrin", index=0)
+              @vta.coproc_dep_pop(2, 3, dtype=int32, type="intrin")
               for (i1.inner: int32, 0, 8) {
                 for (i2.inner: int32, 0, 7) {
                   for (i3.inner: int32, 0, 14) {
-                    @VTAStoreBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), ((((cthread.s_3*784) + (i1.inner*98)) + (i2.inner*14)) + i3.inner), 4, res_2, (((((cthread.s_3*1568) + (i1.inner*196)) + (i2.outer*98)) + (i2.inner*14)) + i3.inner), 1, 1, 1, dtype=int32, type="extern", index=0)
+                    @VTAStoreBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), ((((cthread.s_3*784) + (i1.inner*98)) + (i2.inner*14)) + i3.inner), 4, res_2, (((((cthread.s_3*1568) + (i1.inner*196)) + (i2.outer*98)) + (i2.inner*14)) + i3.inner), 1, 1, 1, dtype=int32, type="extern")
                   }
                 }
               }
-              @vta.coproc_dep_push(3, 2, dtype=int32, type="intrin", index=0)
+              @vta.coproc_dep_push(3, 2, dtype=int32, type="intrin")
             }
           }
         }
-        @vta.coproc_dep_pop(3, 2, dtype=int32, type="intrin", index=0)
-        @vta.coproc_dep_pop(3, 2, dtype=int32, type="intrin", index=0)
-        @vta.coproc_sync(, dtype=int32, type="intrin", index=0)
+        @vta.coproc_dep_pop(3, 2, dtype=int32, type="intrin")
+        @vta.coproc_dep_pop(3, 2, dtype=int32, type="intrin")
+        @vta.coproc_sync(, dtype=int32, type="intrin")
       }
     }
 
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 baf6936..815b29e 100644
--- a/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
+++ b/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
@@ -203,9 +203,9 @@ Those include:
     primfn(data_1: handle, weight_1: handle, res_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
       buffers = {data: Buffer(data_2: handle, int8, [1, 64, 1, 16], []),
-                 res: Buffer(res_2: handle, int8, [1, 64, 1, 16], []),
-                 weight: Buffer(weight_2: handle, int8, [64, 64, 16, 16], [])}
-      buffer_map = {weight_1: weight, res_1: res, data_1: data} {
+                 weight: Buffer(weight_2: handle, int8, [64, 64, 16, 16], []),
+                 res: Buffer(res_2: handle, int8, [1, 64, 1, 16], [])}
+      buffer_map = {res_1: res, weight_1: weight, data_1: data} {
       attr [data_buf: handle] "storage_scope" = "global";
       allocate(data_buf, int8, [1024]);
       attr [weight_buf: handle] "storage_scope" = "global";
@@ -238,7 +238,7 @@ Those include:
         }
         for (i1_2: int32, 0, 64) {
           for (i3_2: int32, 0, 16) {
-            res_gem[((i1_2*16) + i3_2)] = @shift_right((int32*)res_gem[((i1_2*16) + i3_2)]), 8, dtype=int32, type="pure_intrin", index=0)
+            res_gem[((i1_2*16) + i3_2)] = @shift_right((int32*)res_gem[((i1_2*16) + i3_2)]), 8, dtype=int32, type="pure_intrin")
           }
         }
         for (i1_3: int32, 0, 64) {
@@ -364,8 +364,8 @@ below:
 
     primfn(data_1: handle, weight_1: handle, res_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {weight: Buffer(weight_2: handle, int8, [64, 64, 16, 16], []),
-                 data: Buffer(data_2: handle, int8, [1, 64, 1, 16], []),
+      buffers = {data: Buffer(data_2: handle, int8, [1, 64, 1, 16], []),
+                 weight: Buffer(weight_2: handle, int8, [64, 64, 16, 16], []),
                  res: Buffer(res_2: handle, int8, [1, 64, 1, 16], [])}
       buffer_map = {res_1: res, weight_1: weight, data_1: data} {
       attr [data_buf: handle] "storage_scope" = "global";
@@ -407,7 +407,7 @@ below:
           }
           for (i1_2: int32, 0, 16) {
             for (i3_2: int32, 0, 16) {
-              res_gem[((i1_2*16) + i3_2)] = @shift_right((int32*)res_gem[((i1_2*16) + i3_2)]), 8, dtype=int32, type="pure_intrin", index=0)
+              res_gem[((i1_2*16) + i3_2)] = @shift_right((int32*)res_gem[((i1_2*16) + i3_2)]), 8, dtype=int32, type="pure_intrin")
             }
           }
           for (i1_3: int32, 0, 16) {
@@ -507,72 +507,72 @@ and mapping the shift, and clipping computation to the vector ALU.
 
     primfn(data_1: handle, weight_1: handle, res_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {weight: Buffer(weight_2: handle, int8, [64, 64, 16, 16], []),
-                 data: Buffer(data_2: handle, int8, [1, 64, 1, 16], []),
+      buffers = {data: Buffer(data_2: handle, int8, [1, 64, 1, 16], []),
+                 weight: Buffer(weight_2: handle, int8, [64, 64, 16, 16], []),
                  res: Buffer(res_2: handle, int8, [1, 64, 1, 16], [])}
       buffer_map = {res_1: res, weight_1: weight, data_1: data} {
       attr [res_gem: handle] "storage_scope" = "local.acc_buffer";
       attr [data_buf: handle] "storage_scope" = "local.inp_buffer";
       attr [weight_buf: handle] "storage_scope" = "local.wgt_buffer" {
-        @vta.coproc_dep_push(3, 2, dtype=int32, type="intrin", index=0)
+        @vta.coproc_dep_push(3, 2, dtype=int32, type="intrin")
         for (i1.outer: int32, 0, 4) {
           attr [IterVar(vta: int32, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 2 {
-            @vta.coproc_dep_pop(3, 2, dtype=int32, type="intrin", index=0)
+            @vta.coproc_dep_pop(3, 2, dtype=int32, type="intrin")
             attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushGEMMOp" {
-              @VTAUopLoopBegin(16, 1, 0, 0, dtype=int32, type="extern", index=0)
-              @VTAUopPush(0, 1, 0, 0, 0, 0, 0, 0, dtype=int32, type="extern", index=0)
-              @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+              @VTAUopLoopBegin(16, 1, 0, 0, dtype=int32, type="extern")
+              @VTAUopPush(0, 1, 0, 0, 0, 0, 0, 0, dtype=int32, type="extern")
+              @VTAUopLoopEnd(, dtype=int32, type="extern")
             }
-            @vta.coproc_dep_push(2, 1, dtype=int32, type="intrin", index=0)
+            @vta.coproc_dep_push(2, 1, dtype=int32, type="intrin")
           }
           for (ic.outer: int32, 0, 4) {
             attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 1 {
-              @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin", index=0)
-              @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), data_2, (ic.outer*16), 16, 1, 16, 0, 0, 0, 0, 0, 2, dtype=int32, type="extern", index=0)
-              @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), weight_2, ((i1.outer*1024) + (ic.outer*16)), 16, 16, 64, 0, 0, 0, 0, 0, 1, dtype=int32, type="extern", index=0)
-              @vta.coproc_dep_push(1, 2, dtype=int32, type="intrin", index=0)
+              @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin")
+              @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), data_2, (ic.outer*16), 16, 1, 16, 0, 0, 0, 0, 0, 2, dtype=int32, type="extern")
+              @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), weight_2, ((i1.outer*1024) + (ic.outer*16)), 16, 16, 64, 0, 0, 0, 0, 0, 1, dtype=int32, type="extern")
+              @vta.coproc_dep_push(1, 2, dtype=int32, type="intrin")
             }
             attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 2 {
-              @vta.coproc_dep_pop(1, 2, dtype=int32, type="intrin", index=0)
+              @vta.coproc_dep_pop(1, 2, dtype=int32, type="intrin")
               attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushGEMMOp" {
-                @VTAUopLoopBegin(16, 1, 0, 16, dtype=int32, type="extern", index=0)
-                @VTAUopLoopBegin(16, 0, 1, 1, dtype=int32, type="extern", index=0)
-                @VTAUopPush(0, 0, 0, 0, 0, 0, 0, 0, dtype=int32, type="extern", index=0)
-                @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
-                @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+                @VTAUopLoopBegin(16, 1, 0, 16, dtype=int32, type="extern")
+                @VTAUopLoopBegin(16, 0, 1, 1, dtype=int32, type="extern")
+                @VTAUopPush(0, 0, 0, 0, 0, 0, 0, 0, dtype=int32, type="extern")
+                @VTAUopLoopEnd(, dtype=int32, type="extern")
+                @VTAUopLoopEnd(, dtype=int32, type="extern")
               }
-              @vta.coproc_dep_push(2, 1, dtype=int32, type="intrin", index=0)
+              @vta.coproc_dep_push(2, 1, dtype=int32, type="intrin")
             }
           }
-          @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin", index=0)
+          @vta.coproc_dep_pop(2, 1, dtype=int32, type="intrin")
           attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 2 {
             attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushALUOp" {
-              @VTAUopLoopBegin(16, 1, 1, 0, dtype=int32, type="extern", index=0)
-              @VTAUopPush(1, 0, 0, 0, 0, 3, 1, 8, dtype=int32, type="extern", index=0)
-              @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+              @VTAUopLoopBegin(16, 1, 1, 0, dtype=int32, type="extern")
+              @VTAUopPush(1, 0, 0, 0, 0, 3, 1, 8, dtype=int32, type="extern")
+              @VTAUopLoopEnd(, dtype=int32, type="extern")
             }
             attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushALUOp" {
-              @VTAUopLoopBegin(16, 1, 1, 0, dtype=int32, type="extern", index=0)
-              @VTAUopPush(1, 0, 0, 0, 0, 1, 1, 0, dtype=int32, type="extern", index=0)
-              @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+              @VTAUopLoopBegin(16, 1, 1, 0, dtype=int32, type="extern")
+              @VTAUopPush(1, 0, 0, 0, 0, 1, 1, 0, dtype=int32, type="extern")
+              @VTAUopLoopEnd(, dtype=int32, type="extern")
             }
             attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushALUOp" {
-              @VTAUopLoopBegin(16, 1, 1, 0, dtype=int32, type="extern", index=0)
-              @VTAUopPush(1, 0, 0, 0, 0, 0, 1, 127, dtype=int32, type="extern", index=0)
-              @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+              @VTAUopLoopBegin(16, 1, 1, 0, dtype=int32, type="extern")
+              @VTAUopPush(1, 0, 0, 0, 0, 0, 1, 127, dtype=int32, type="extern")
+              @VTAUopLoopEnd(, dtype=int32, type="extern")
             }
-            @vta.coproc_dep_push(2, 3, dtype=int32, type="intrin", index=0)
+            @vta.coproc_dep_push(2, 3, dtype=int32, type="intrin")
           }
           attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 3 {
-            @vta.coproc_dep_pop(2, 3, dtype=int32, type="intrin", index=0)
+            @vta.coproc_dep_pop(2, 3, dtype=int32, type="intrin")
             for (i1.inner: int32, 0, 16) {
-              @VTAStoreBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), i1.inner, 4, res_2, ((i1.outer*16) + i1.inner), 1, 1, 1, dtype=int32, type="extern", index=0)
+              @VTAStoreBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), i1.inner, 4, res_2, ((i1.outer*16) + i1.inner), 1, 1, 1, dtype=int32, type="extern")
             }
-            @vta.coproc_dep_push(3, 2, dtype=int32, type="intrin", index=0)
+            @vta.coproc_dep_push(3, 2, dtype=int32, type="intrin")
           }
         }
-        @vta.coproc_sync(, dtype=int32, type="intrin", index=0)
-        @vta.coproc_dep_pop(3, 2, dtype=int32, type="intrin", index=0)
+        @vta.coproc_sync(, dtype=int32, type="intrin")
+        @vta.coproc_dep_pop(3, 2, dtype=int32, type="intrin")
       }
     }
 
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 3581136..ec433ab 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.883** total execution time for **vta_tutorials_optimize** files:
+**00:03.090** total execution time for **vta_tutorials_optimize** files:
 
-- **00:02.494**: :ref:`sphx_glr_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)
-- **00:00.389**: :ref:`sphx_glr_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``)
+- **00:02.674**: :ref:`sphx_glr_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)
+- **00:00.416**: :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 0326164..0a03c0e 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.707** total execution time for **vta_tutorials** files:
+**00:00.766** total execution time for **vta_tutorials** files:
 
-- **00:00.356**: :ref:`sphx_glr_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``)
-- **00:00.352**: :ref:`sphx_glr_vta_tutorials_vta_get_started.py` (``vta_get_started.py``)
+- **00:00.389**: :ref:`sphx_glr_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``)
+- **00:00.377**: :ref:`sphx_glr_vta_tutorials_vta_get_started.py` (``vta_get_started.py``)
diff --git a/docs/_sources/vta/tutorials/vta_get_started.rst.txt b/docs/_sources/vta/tutorials/vta_get_started.rst.txt
index 875d7f6..a34b485 100644
--- a/docs/_sources/vta/tutorials/vta_get_started.rst.txt
+++ b/docs/_sources/vta/tutorials/vta_get_started.rst.txt
@@ -301,9 +301,9 @@ After we construct the schedule, by default the schedule computes
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
       buffers = {A: Buffer(A_2: handle, int32, [1, 64, 1, 16], []),
-                 C: Buffer(C_2: handle, int8, [1, 64, 1, 16], []),
-                 B: Buffer(B_2: handle, int32, [1, 64, 1, 16], [])}
-      buffer_map = {B_1: B, C_1: C, A_1: A} {
+                 B: Buffer(B_2: handle, int32, [1, 64, 1, 16], []),
+                 C: Buffer(C_2: handle, int8, [1, 64, 1, 16], [])}
+      buffer_map = {C_1: C, B_1: B, A_1: A} {
       attr [A_buf: handle] "storage_scope" = "global";
       allocate(A_buf, int32, [1024]);
       attr [B_buf: handle] "storage_scope" = "global";
@@ -423,26 +423,26 @@ with an :code:`env.alu` pragma.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"tir.noalias": True, "global_symbol": "main"}
-      buffers = {B: Buffer(B_2: handle, int32, [1, 64, 1, 16], []),
-                 A: Buffer(A_2: handle, int32, [1, 64, 1, 16], []),
+      buffers = {A: Buffer(A_2: handle, int32, [1, 64, 1, 16], []),
+                 B: Buffer(B_2: handle, int32, [1, 64, 1, 16], []),
                  C: Buffer(C_2: handle, int8, [1, 64, 1, 16], [])}
       buffer_map = {C_1: C, B_1: B, A_1: A} {
       attr [A_buf: handle] "storage_scope" = "local.acc_buffer" {
         attr [IterVar(vta: int32, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 2 {
-          @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), A_2, 0, 64, 1, 64, 0, 0, 0, 0, 0, 3, dtype=int32, type="extern", index=0)
-          @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), B_2, 0, 64, 1, 64, 0, 0, 0, 0, 64, 3, dtype=int32, type="extern", index=0)
+          @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), A_2, 0, 64, 1, 64, 0, 0, 0, 0, 0, 3, dtype=int32, type="extern")
+          @VTALoadBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), B_2, 0, 64, 1, 64, 0, 0, 0, 0, 64, 3, dtype=int32, type="extern")
           attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushALUOp" {
-            @VTAUopLoopBegin(64, 1, 1, 0, dtype=int32, type="extern", index=0)
-            @VTAUopPush(1, 0, 0, 64, 0, 2, 0, 0, dtype=int32, type="extern", index=0)
-            @VTAUopLoopEnd(, dtype=int32, type="extern", index=0)
+            @VTAUopLoopBegin(64, 1, 1, 0, dtype=int32, type="extern")
+            @VTAUopPush(1, 0, 0, 64, 0, 2, 0, 0, dtype=int32, type="extern")
+            @VTAUopLoopEnd(, dtype=int32, type="extern")
           }
-          @vta.coproc_dep_push(2, 3, dtype=int32, type="intrin", index=0)
+          @vta.coproc_dep_push(2, 3, dtype=int32, type="intrin")
         }
         attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 3 {
-          @vta.coproc_dep_pop(2, 3, dtype=int32, type="intrin", index=0)
-          @VTAStoreBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern", index=0), dtype=handle, type="intrin", index=0), 0, 4, C_2, 0, 64, 1, 64, dtype=int32, type="extern", index=0)
+          @vta.coproc_dep_pop(2, 3, dtype=int32, type="intrin")
+          @VTAStoreBuffer2D(@tvm_thread_context(@VTATLSCommandHandle(, dtype=handle, type="extern"), dtype=handle, type="intrin"), 0, 4, C_2, 0, 64, 1, 64, dtype=int32, type="extern")
         }
-        @vta.coproc_sync(, dtype=int32, type="intrin", index=0)
+        @vta.coproc_sync(, dtype=int32, type="intrin")
       }
     }
 
diff --git a/docs/api/doxygen/algorithm_8h.html b/docs/api/doxygen/algorithm_8h.html
index e41eadd..9f82ef7 100644
--- a/docs/api/doxygen/algorithm_8h.html
+++ b/docs/api/doxygen/algorithm_8h.html
@@ -94,11 +94,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="contents">
 <div class="textblock"><code>#include &lt;<a class="el" href="ir_2attrs_8h_source.html">tvm/ir/attrs.h</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="base_8h_source.html">tvm/relay/base.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="relay_2expr_8h_source.html">tvm/relay/expr.h</a>&gt;</code><br />
 <code>#include &lt;string&gt;</code><br />
 </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="4136" height="1440"><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="5171" height="1530"><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 2bb8819..11aae6c 100644
--- a/docs/api/doxygen/algorithm_8h__incl.svg
+++ b/docs/api/doxygen/algorithm_8h__incl.svg
@@ -4,1182 +4,1468 @@
 <!-- Generated by graphviz version 2.38.0 (20140413.2041)
  -->
 <!-- Title: include/tvm/relay/attrs/algorithm.h Pages: 1 -->
-<svg width="3102pt" height="1080pt"
- viewBox="0.00 0.00 3101.79 1080.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 1076)">
+<svg width="3878pt" height="1147pt"
+ viewBox="0.00 0.00 3878.00 1147.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 1143)">
 <title>include/tvm/relay/attrs/algorithm.h</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-1076 3097.79,-1076 3097.79,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-1143 3874,-1143 3874,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node"><title>Node1</title>
-<polygon fill="#bfbfbf" stroke="black" points="2841.79,-1041.5 2841.79,-1071.5 2965.79,-1071.5 2965.79,-1041.5 2841.79,-1041.5"/>
-<text text-anchor="start" x="2849.79" y="-1059.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
-<text text-anchor="middle" x="2903.79" y="-1048.5" font-family="Helvetica,sans-Serif" font-size="10.00">/algorithm.h</text>
+<polygon fill="#bfbfbf" stroke="black" points="2877,-1108.5 2877,-1138.5 3001,-1138.5 3001,-1108.5 2877,-1108.5"/>
+<text text-anchor="start" x="2885" y="-1126.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
+<text text-anchor="middle" x="2939" y="-1115.5" font-family="Helvetica,sans-Serif" font-size="10.00">/algorithm.h</text>
 </g>
 <!-- Node2 -->
 <g id="node2" class="node"><title>Node2</title>
 <g id="a_node2"><a xlink:href="ir_2attrs_8h.html" target="_top" xlink:title="Helpers for attribute objects. ">
-<polygon fill="white" stroke="black" points="2474.29,-817.5 2474.29,-836.5 2553.29,-836.5 2553.29,-817.5 2474.29,-817.5"/>
-<text text-anchor="middle" x="2513.79" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/attrs.h</text>
+<polygon fill="white" stroke="black" points="2943.5,-772.5 2943.5,-791.5 3022.5,-791.5 3022.5,-772.5 2943.5,-772.5"/>
+<text text-anchor="middle" x="2983" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/attrs.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node2 -->
 <g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M2879.68,-1041.44C2809.74,-1000.64 2607.26,-882.525 2537.63,-841.911"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2539.12,-838.726 2528.72,-836.71 2535.59,-844.772 2539.12,-838.726"/>
+<path fill="none" stroke="midnightblue" d="M3001.36,-1112.3C3091.89,-1095.69 3249,-1059.34 3249,-1007 3249,-1007 3249,-1007 3249,-893 3249,-800.526 3110.02,-784.265 3032.97,-782.355"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3032.59,-778.848 3022.54,-782.174 3032.47,-785.847 3032.59,-778.848"/>
 </g>
-<!-- Node16 -->
-<g id="node16" class="node"><title>Node16</title>
-<polygon fill="white" stroke="#bfbfbf" points="2667.79,-62 2667.79,-81 2711.79,-81 2711.79,-62 2667.79,-62"/>
-<text text-anchor="middle" x="2689.79" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">string</text>
+<!-- Node13 -->
+<g id="node13" class="node"><title>Node13</title>
+<polygon fill="white" stroke="#bfbfbf" points="3164,-6 3164,-25 3208,-25 3208,-6 3164,-6"/>
+<text text-anchor="middle" x="3186" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00">string</text>
 </g>
-<!-- Node1&#45;&gt;Node16 -->
-<g id="edge172" class="edge"><title>Node1&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M2966,-1044.5C3021.41,-1030.69 3093.79,-1000.99 3093.79,-940 3093.79,-940 3093.79,-940 3093.79,-188 3093.79,-146.192 3063.32,-141.411 3025.79,-123 2972.53,-96.879 2795.59,-80.6328 2722.16,-74.8668"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2722.34,-71.3707 2712.1,-74.0922 2721.81,-78.35 2722.34,-71.3707"/>
+<!-- Node1&#45;&gt;Node13 -->
+<g id="edge220" class="edge"><title>Node1&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M3001.17,-1121.34C3209.51,-1116.63 3870,-1094.8 3870,-1007 3870,-1007 3870,-1007 3870,-132 3870,-95.5528 3852.03,-84.387 3820,-67 3766.84,-38.1426 3340.13,-21.6859 3218.35,-17.5448"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3218.28,-14.0408 3208.17,-17.2035 3218.05,-21.0368 3218.28,-14.0408"/>
 </g>
-<!-- Node44 -->
-<g id="node44" class="node"><title>Node44</title>
-<g id="a_node44"><a xlink:href="base_8h.html" target="_top" xlink:title="Base classes for the Relay IR. ">
-<polygon fill="white" stroke="black" points="1162.29,-985.5 1162.29,-1004.5 1259.29,-1004.5 1259.29,-985.5 1162.29,-985.5"/>
-<text text-anchor="middle" x="1210.79" y="-992.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/relay/base.h</text>
+<!-- Node34 -->
+<g id="node34" class="node"><title>Node34</title>
+<g id="a_node34"><a xlink:href="base_8h.html" target="_top" xlink:title="Base classes for the Relay IR. ">
+<polygon fill="white" stroke="black" points="1487.5,-940.5 1487.5,-959.5 1584.5,-959.5 1584.5,-940.5 1487.5,-940.5"/>
+<text text-anchor="middle" x="1536" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/relay/base.h</text>
+</a>
+</g>
+</g>
+<!-- Node1&#45;&gt;Node34 -->
+<g id="edge129" class="edge"><title>Node1&#45;&gt;Node34</title>
+<path fill="none" stroke="midnightblue" d="M2876.73,-1122.39C2647.03,-1121.25 1848.42,-1110.42 1615,-1016 1588.88,-1005.44 1564.8,-983.007 1550.26,-967.473"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1552.51,-964.745 1543.21,-959.672 1547.32,-969.438 1552.51,-964.745"/>
+</g>
+<!-- Node38 -->
+<g id="node38" class="node"><title>Node38</title>
+<g id="a_node38"><a xlink:href="relay_2expr_8h.html" target="_top" xlink:title="Relay expression language. ">
+<polygon fill="white" stroke="black" points="2582,-1052.5 2582,-1071.5 2676,-1071.5 2676,-1052.5 2582,-1052.5"/>
+<text text-anchor="middle" x="2629" y="-1059.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/relay/expr.h</text>
 </a>
 </g>
 </g>
-<!-- Node1&#45;&gt;Node44 -->
-<g id="edge144" class="edge"><title>Node1&#45;&gt;Node44</title>
-<path fill="none" stroke="midnightblue" d="M2841.78,-1053.32C2575.37,-1043.96 1529.73,-1007.21 1269.62,-998.068"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1269.74,-994.57 1259.62,-997.716 1269.49,-1001.57 1269.74,-994.57"/>
+<!-- Node1&#45;&gt;Node38 -->
+<g id="edge157" class="edge"><title>Node1&#45;&gt;Node38</title>
+<path fill="none" stroke="midnightblue" d="M2876.64,-1110.53C2820.17,-1099.69 2737.77,-1083.88 2683.78,-1073.51"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2684.19,-1070.03 2673.71,-1071.58 2682.87,-1076.9 2684.19,-1070.03"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node"><title>Node3</title>
-<polygon fill="white" stroke="#bfbfbf" points="2666.29,-761.5 2666.29,-780.5 2761.29,-780.5 2761.29,-761.5 2666.29,-761.5"/>
-<text text-anchor="middle" x="2713.79" y="-768.5" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/common.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="3087.5,-716.5 3087.5,-735.5 3182.5,-735.5 3182.5,-716.5 3087.5,-716.5"/>
+<text text-anchor="middle" x="3135" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/common.h</text>
 </g>
 <!-- Node2&#45;&gt;Node3 -->
 <g id="edge2" class="edge"><title>Node2&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M2545.48,-817.444C2579.85,-808.162 2634.86,-793.309 2672.58,-783.127"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2673.5,-786.502 2682.24,-780.516 2671.68,-779.744 2673.5,-786.502"/>
+<path fill="none" stroke="midnightblue" d="M3007.08,-772.444C3032.54,-763.399 3072.89,-749.064 3101.46,-738.916"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3102.78,-742.162 3111.03,-735.516 3100.43,-735.566 3102.78,-742.162"/>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node"><title>Node4</title>
 <g id="a_node4"><a xlink:href="ir_2expr_8h.html" target="_top" xlink:title="Base expr nodes in TVM. ">
-<polygon fill="white" stroke="black" points="1903.29,-761.5 1903.29,-780.5 1980.29,-780.5 1980.29,-761.5 1903.29,-761.5"/>
-<text text-anchor="middle" x="1941.79" y="-768.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/expr.h</text>
+<polygon fill="white" stroke="black" points="2155.5,-716.5 2155.5,-735.5 2232.5,-735.5 2232.5,-716.5 2155.5,-716.5"/>
+<text text-anchor="middle" x="2194" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/expr.h</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node4 -->
 <g id="edge3" class="edge"><title>Node2&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M2474.02,-822.246C2372.16,-812.63 2102.11,-787.135 1990.8,-776.627"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1990.82,-773.114 1980.54,-775.658 1990.16,-780.083 1990.82,-773.114"/>
+<path fill="none" stroke="midnightblue" d="M2943.33,-778.285C2811.48,-769.261 2388.04,-740.28 2243.16,-730.364"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2243.03,-726.847 2232.81,-729.656 2242.55,-733.831 2243.03,-726.847"/>
 </g>
-<!-- Node2&#45;&gt;Node16 -->
-<g id="edge139" class="edge"><title>Node2&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M2553.73,-826.875C2606.5,-826.343 2700.79,-819.422 2769.79,-781 2803.61,-762.162 2827.79,-754.718 2827.79,-716 2827.79,-716 2827.79,-716 2827.79,-602 2827.79,-435.863 2941.79,-412.137 2941.79,-246 2941.79,-246 2941.79,-246 2941.79,-188 2941.79,-92.5237 2790.45,-75.6628 2722.33,-72.9094"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2722.26,-69.4053 2712.15,-72.5788 2722.03,-76.4016 2722.26,-69.4053"/>
+<!-- Node2&#45;&gt;Node13 -->
+<g id="edge124" class="edge"><title>Node2&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M3022.62,-781.306C3067.35,-779.774 3140.47,-771.414 3191,-736 3302.38,-657.929 3469.81,-341.652 3504,-210 3519.97,-148.485 3545.27,-115.336 3504,-67 3467.42,-24.1486 3291.27,-17.4699 3218.04,-16.5668"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3218.04,-13.0667 3208.01,-16.4718 3217.97,-20.0664 3218.04,-13.0667"/>
 </g>
-<!-- Node17 -->
-<g id="node17" class="node"><title>Node17</title>
-<polygon fill="white" stroke="#bfbfbf" points="386.787,-62 386.787,-81 454.787,-81 454.787,-62 386.787,-62"/>
-<text text-anchor="middle" x="420.787" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">type_traits</text>
+<!-- Node14 -->
+<g id="node14" class="node"><title>Node14</title>
+<polygon fill="white" stroke="#bfbfbf" points="2430,-6 2430,-25 2498,-25 2498,-6 2430,-6"/>
+<text text-anchor="middle" x="2464" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00">type_traits</text>
 </g>
-<!-- Node2&#45;&gt;Node17 -->
-<g id="edge140" class="edge"><title>Node2&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2474.18,-825.362C2257.4,-821.798 1212.74,-803.707 890.787,-781 670.813,-765.485 590.356,-832.454 397.787,-725 205.307,-617.596 122.771,-508.619 157.787,-291 170.637,-211.138 163.251,-171.766 227.787,-123 271.347,-90.0835 334.444,-78.5568 376.498,-74.5585"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="377.042,-78.0251 386.712,-73.6958 376.453,-71.05 377.042,-78.0251"/>
+<!-- Node2&#45;&gt;Node14 -->
+<g id="edge125" class="edge"><title>Node2&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M2990.49,-772.34C3005.2,-755.187 3038.65,-715.478 3064,-680 3165.14,-538.473 3279.94,-467.494 3200,-313 3065.34,-52.7543 2646.33,-20.2826 2508.47,-16.7426"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2508.35,-13.2393 2498.28,-16.5213 2508.2,-20.2376 2508.35,-13.2393"/>
 </g>
-<!-- Node18 -->
-<g id="node18" class="node"><title>Node18</title>
-<polygon fill="white" stroke="#bfbfbf" points="2051.79,-62 2051.79,-81 2093.79,-81 2093.79,-62 2051.79,-62"/>
-<text text-anchor="middle" x="2072.79" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">utility</text>
+<!-- Node15 -->
+<g id="node15" class="node"><title>Node15</title>
+<polygon fill="white" stroke="#bfbfbf" points="288,-6 288,-25 330,-25 330,-6 288,-6"/>
+<text text-anchor="middle" x="309" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00">utility</text>
 </g>
-<!-- Node2&#45;&gt;Node18 -->
-<g id="edge142" class="edge"><title>Node2&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M2537.04,-817.397C2596.93,-793.572 2751.79,-720.682 2751.79,-604 2751.79,-604 2751.79,-604 2751.79,-367 2751.79,-143.194 2519.2,-191.856 2300.79,-143 2228.92,-126.923 2146.93,-99.1837 2103.53,-83.7277"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2104.45,-80.3409 2093.86,-80.2596 2102.09,-86.93 2104.45,-80.3409"/>
+<!-- Node2&#45;&gt;Node15 -->
+<g id="edge127" class="edge"><title>Node2&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M2943.5,-774.239C2896.84,-766.06 2816.97,-751.455 2749,-736 2684.25,-721.277 2525.56,-670.569 2460,-660 2207.21,-619.246 2140.42,-642.067 1885,-624 1361.28,-586.954 1217.21,-643.835 709,-512 645.328,-495.483 632.702,-481.34 572,-456 384.748,-377.832 306.295,-408.783 152,-277 80.3088,-215.769 54.3091,-132.626 122,-67 164.422,-25.8714 236.703,-17.4106 277.871,-16.1493"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="277.94,-19.6487 287.874,-15.9668 277.812,-12.6499 277.94,-19.6487"/>
 </g>
-<!-- Node21 -->
-<g id="node21" class="node"><title>Node21</title>
-<g id="a_node21"><a xlink:href="packed__func_8h.html" target="_top" xlink:title="Type&#45;erased function used across TVM API. ">
-<polygon fill="white" stroke="black" points="1537.29,-291.5 1537.29,-321.5 1650.29,-321.5 1650.29,-291.5 1537.29,-291.5"/>
-<text text-anchor="start" x="1545.29" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/packed</text>
-<text text-anchor="middle" x="1593.79" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00">_func.h</text>
+<!-- Node16 -->
+<g id="node16" class="node"><title>Node16</title>
+<g id="a_node16"><a xlink:href="packed__func_8h.html" target="_top" xlink:title="Type&#45;erased function used across TVM API. ">
+<polygon fill="white" stroke="black" points="1764.5,-246.5 1764.5,-276.5 1877.5,-276.5 1877.5,-246.5 1764.5,-246.5"/>
+<text text-anchor="start" x="1772.5" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/packed</text>
+<text text-anchor="middle" x="1821" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00">_func.h</text>
 </a>
 </g>
 </g>
-<!-- Node2&#45;&gt;Node21 -->
-<g id="edge137" class="edge"><title>Node2&#45;&gt;Node21</title>
-<path fill="none" stroke="midnightblue" d="M2512.5,-817.466C2504.94,-770.735 2461.55,-545.231 2318.79,-470 2096.63,-352.934 1793.09,-319.942 1660.41,-310.854"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1660.61,-307.359 1650.4,-310.191 1660.14,-314.344 1660.61,-307.359"/>
+<!-- Node2&#45;&gt;Node16 -->
+<g id="edge122" class="edge"><title>Node2&#45;&gt;Node16</title>
+<path fill="none" stroke="midnightblue" d="M2979.66,-772.471C2963.55,-732.633 2889.74,-563.792 2769,-492 2730.16,-468.903 2096.72,-324.702 1887.49,-277.464"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1888.08,-274.009 1877.55,-275.222 1886.54,-280.837 1888.08,-274.009"/>
 </g>
-<!-- Node26 -->
-<g id="node26" class="node"><title>Node26</title>
-<polygon fill="white" stroke="#bfbfbf" points="2454.29,-179.5 2454.29,-198.5 2547.29,-198.5 2547.29,-179.5 2454.29,-179.5"/>
-<text text-anchor="middle" x="2500.79" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">unordered_map</text>
+<!-- Node20 -->
+<g id="node20" class="node"><title>Node20</title>
+<polygon fill="white" stroke="#bfbfbf" points="3328.5,-123.5 3328.5,-142.5 3421.5,-142.5 3421.5,-123.5 3328.5,-123.5"/>
+<text text-anchor="middle" x="3375" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">unordered_map</text>
 </g>
-<!-- Node2&#45;&gt;Node26 -->
-<g id="edge141" class="edge"><title>Node2&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M2527.6,-817.281C2551.91,-800.744 2599.79,-762.3 2599.79,-716 2599.79,-716 2599.79,-716 2599.79,-423 2599.79,-335.688 2586.37,-310.655 2542.79,-235 2536.48,-224.053 2527.04,-213.62 2518.71,-205.561"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2520.92,-202.836 2511.2,-198.622 2516.17,-207.979 2520.92,-202.836"/>
+<!-- Node2&#45;&gt;Node20 -->
+<g id="edge126" class="edge"><title>Node2&#45;&gt;Node20</title>
+<path fill="none" stroke="midnightblue" d="M2995.78,-772.266C3030.13,-748.762 3122.28,-685.562 3128,-680 3171.3,-637.876 3259.23,-511.951 3282,-456 3282.09,-455.77 3349.97,-220.676 3369.69,-152.39"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3373.1,-153.184 3372.52,-142.606 3366.38,-151.242 3373.1,-153.184"/>
 </g>
-<!-- Node27 -->
-<g id="node27" class="node"><title>Node27</title>
-<polygon fill="white" stroke="#bfbfbf" points="860.287,-179.5 860.287,-198.5 907.287,-198.5 907.287,-179.5 860.287,-179.5"/>
-<text text-anchor="middle" x="883.787" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
+<!-- Node21 -->
+<g id="node21" class="node"><title>Node21</title>
+<polygon fill="white" stroke="#bfbfbf" points="1187.5,-123.5 1187.5,-142.5 1234.5,-142.5 1234.5,-123.5 1187.5,-123.5"/>
+<text text-anchor="middle" x="1211" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
 </g>
-<!-- Node2&#45;&gt;Node27 -->
-<g id="edge143" class="edge"><title>Node2&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M2474.05,-820.049C2386.57,-807.177 2170.65,-776.648 1988.79,-761 1659.84,-732.696 1570.68,-789.045 1246.79,-725 976.921,-671.639 811.32,-736.889 669.787,-501 598.451,-382.108 791.151,-247.336 860.22,-204.119"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="862.43,-206.868 869.105,-198.64 858.756,-200.91 862.43,-206.868"/>
+<!-- Node2&#45;&gt;Node21 -->
+<g id="edge128" class="edge"><title>Node2&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M2951.99,-772.446C2766.66,-721.183 1804.01,-452.863 1522,-333 1425.26,-291.884 1406.91,-269.116 1320,-210 1288.96,-188.884 1253.33,-163.9 1231.49,-148.5"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1233.22,-145.436 1223.03,-142.527 1229.18,-151.154 1233.22,-145.436"/>
 </g>
-<!-- Node31 -->
-<g id="node31" class="node"><title>Node31</title>
-<polygon fill="white" stroke="#bfbfbf" points="1992.29,-235.5 1992.29,-254.5 2055.29,-254.5 2055.29,-235.5 1992.29,-235.5"/>
-<text text-anchor="middle" x="2023.79" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">functional</text>
+<!-- Node23 -->
+<g id="node23" class="node"><title>Node23</title>
+<polygon fill="white" stroke="#bfbfbf" points="2068.5,-185 2068.5,-204 2131.5,-204 2131.5,-185 2068.5,-185"/>
+<text text-anchor="middle" x="2100" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00">functional</text>
 </g>
-<!-- Node2&#45;&gt;Node31 -->
-<g id="edge138" class="edge"><title>Node2&#45;&gt;Node31</title>
-<path fill="none" stroke="midnightblue" d="M2515.09,-817.466C2517.8,-799.007 2523.79,-753.968 2523.79,-716 2523.79,-716 2523.79,-716 2523.79,-602 2523.79,-485.232 2157.34,-307.484 2051.87,-258.742"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2053.32,-255.557 2042.78,-254.56 2050.4,-261.917 2053.32,-255.557"/>
+<!-- Node2&#45;&gt;Node23 -->
+<g id="edge123" class="edge"><title>Node2&#45;&gt;Node23</title>
+<path fill="none" stroke="midnightblue" d="M2983,-772.442C2983,-753.936 2983,-708.812 2983,-671 2983,-671 2983,-671 2983,-613 2983,-514.753 2886.41,-534.843 2798,-492 2609.49,-400.65 2547.72,-413.413 2343,-369 2268.37,-352.81 2236.19,-378.681 2175,-333 2134.62,-302.854 2113.4,-244.296 2104.76,-214.261"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2108.04,-213.001 2102.05,-204.264 2101.29,-214.832 2108.04,-213.001"/>
 </g>
-<!-- Node38 -->
-<g id="node38" class="node"><title>Node38</title>
-<g id="a_node38"><a xlink:href="structural__equal_8h.html" target="_top" xlink:title="Structural equality comparison. ">
-<polygon fill="white" stroke="black" points="679.287,-470.5 679.287,-500.5 790.287,-500.5 790.287,-470.5 679.287,-470.5"/>
-<text text-anchor="start" x="687.287" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/structural</text>
-<text text-anchor="middle" x="734.787" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00">_equal.h</text>
+<!-- Node28 -->
+<g id="node28" class="node"><title>Node28</title>
+<g id="a_node28"><a xlink:href="structural__equal_8h.html" target="_top" xlink:title="Structural equality comparison. ">
+<polygon fill="white" stroke="black" points="2318.5,-425.5 2318.5,-455.5 2429.5,-455.5 2429.5,-425.5 2318.5,-425.5"/>
+<text text-anchor="start" x="2326.5" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/structural</text>
+<text text-anchor="middle" x="2374" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">_equal.h</text>
 </a>
 </g>
 </g>
-<!-- Node2&#45;&gt;Node38 -->
-<g id="edge135" class="edge"><title>Node2&#45;&gt;Node38</title>
-<path fill="none" stroke="midnightblue" d="M2473.86,-824.755C2193.87,-815.935 535.129,-762.16 499.787,-725 420.356,-641.486 604.935,-544.268 692.214,-504.672"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="693.656,-507.861 701.35,-500.576 690.793,-501.473 693.656,-507.861"/>
+<!-- Node2&#45;&gt;Node28 -->
+<g id="edge120" class="edge"><title>Node2&#45;&gt;Node28</title>
+<path fill="none" stroke="midnightblue" d="M2971.24,-772.494C2943.23,-752.321 2870.16,-700.259 2807,-660 2724.34,-607.312 2704.27,-592.643 2617,-548 2549.53,-513.485 2468.41,-479.345 2419.06,-459.354"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2420.21,-456.044 2409.62,-455.548 2417.59,-462.535 2420.21,-456.044"/>
 </g>
-<!-- Node40 -->
-<g id="node40" class="node"><title>Node40</title>
-<g id="a_node40"><a xlink:href="structural__hash_8h.html" target="_top" xlink:title="tvm/node/structural\l_hash.h">
-<polygon fill="white" stroke="black" points="1538.29,-470.5 1538.29,-500.5 1649.29,-500.5 1649.29,-470.5 1538.29,-470.5"/>
-<text text-anchor="start" x="1546.29" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/structural</text>
-<text text-anchor="middle" x="1593.79" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00">_hash.h</text>
+<!-- Node30 -->
+<g id="node30" class="node"><title>Node30</title>
+<g id="a_node30"><a xlink:href="structural__hash_8h.html" target="_top" xlink:title="tvm/node/structural\l_hash.h">
+<polygon fill="white" stroke="black" points="2112.5,-425.5 2112.5,-455.5 2223.5,-455.5 2223.5,-425.5 2112.5,-425.5"/>
+<text text-anchor="start" x="2120.5" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/structural</text>
+<text text-anchor="middle" x="2168" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">_hash.h</text>
 </a>
 </g>
 </g>
-<!-- Node2&#45;&gt;Node40 -->
-<g id="edge136" class="edge"><title>Node2&#45;&gt;Node40</title>
-<path fill="none" stroke="midnightblue" d="M2493.31,-817.31C2463.14,-804.575 2404.89,-780.267 2354.79,-761 2088.99,-658.783 1766.85,-546.288 1644.35,-503.917"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1645.44,-500.589 1634.84,-500.63 1643.15,-507.205 1645.44,-500.589"/>
+<!-- Node2&#45;&gt;Node30 -->
+<g id="edge121" class="edge"><title>Node2&#45;&gt;Node30</title>
+<path fill="none" stroke="midnightblue" d="M2963.43,-772.429C2944.02,-763.767 2913.56,-749.734 2888,-736 2816.86,-697.777 2650.68,-581.069 2577,-548 2500.18,-513.519 2477.4,-513.567 2396,-492 2341.6,-477.586 2279.16,-463.955 2233.39,-454.496"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2234.09,-451.068 2223.59,-452.483 2232.68,-457.925 2234.09,-451.068"/>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node"><title>Node5</title>
 <g id="a_node5"><a xlink:href="span_8h.html" target="_top" xlink:title="Span information for debugging purposes. ">
-<polygon fill="white" stroke="black" points="1148.79,-649.5 1148.79,-668.5 1228.79,-668.5 1228.79,-649.5 1148.79,-649.5"/>
-<text text-anchor="middle" x="1188.79" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/span.h</text>
+<polygon fill="white" stroke="black" points="1894,-604.5 1894,-623.5 1974,-623.5 1974,-604.5 1894,-604.5"/>
+<text text-anchor="middle" x="1934" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/span.h</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node5 -->
 <g id="edge4" class="edge"><title>Node4&#45;&gt;Node5</title>
-<path fill="none" stroke="midnightblue" d="M1902.89,-769.196C1765.18,-766.117 1305.82,-753.768 1246.79,-725 1225.62,-714.685 1208.75,-692.876 1198.77,-677.368"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1201.67,-675.401 1193.48,-668.686 1195.7,-679.046 1201.67,-675.401"/>
+<path fill="none" stroke="midnightblue" d="M2173.6,-716.368C2127.84,-697.01 2016.88,-650.065 1963.56,-627.507"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1964.88,-624.264 1954.31,-623.591 1962.15,-630.711 1964.88,-624.264"/>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node"><title>Node6</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="white" stroke="black" points="1033.79,-593.5 1033.79,-612.5 1131.79,-612.5 1131.79,-593.5 1033.79,-593.5"/>
-<text text-anchor="middle" x="1082.79" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/node.h</text>
+<polygon fill="white" stroke="black" points="1792,-548.5 1792,-567.5 1890,-567.5 1890,-548.5 1792,-548.5"/>
+<text text-anchor="middle" x="1841" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/node.h</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node6 -->
-<g id="edge129" class="edge"><title>Node4&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M1903.15,-770.428C1771.98,-771.445 1344.79,-771.059 1216.79,-725 1161.43,-705.082 1115.22,-649.331 1094.49,-620.995"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1097.34,-618.952 1088.68,-612.838 1091.64,-623.014 1097.34,-618.952"/>
+<g id="edge114" class="edge"><title>Node4&#45;&gt;Node6</title>
+<path fill="none" stroke="midnightblue" d="M2155.36,-720.926C2092.64,-712.584 1967.43,-688.55 1885,-624 1868.96,-611.439 1856.65,-591.382 1849.18,-576.867"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1852.32,-575.324 1844.8,-567.864 1846.03,-578.387 1852.32,-575.324"/>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node"><title>Node7</title>
 <g id="a_node7"><a xlink:href="node_2container_8h.html" target="_top" xlink:title="Array/Map container in the DSL graph. ">
-<polygon fill="white" stroke="black" points="1882.29,-414.5 1882.29,-433.5 2001.29,-433.5 2001.29,-414.5 1882.29,-414.5"/>
-<text text-anchor="middle" x="1941.79" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/container.h</text>
+<polygon fill="white" stroke="red" points="1856.5,-369.5 1856.5,-388.5 1975.5,-388.5 1975.5,-369.5 1856.5,-369.5"/>
+<text text-anchor="middle" x="1916" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/container.h</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node7 -->
-<g id="edge128" class="edge"><title>Node4&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M1964.45,-761.356C2010.81,-742.379 2116.19,-692.335 2164.79,-613 2198.19,-558.467 2221.61,-519.227 2180.79,-470 2159.6,-444.447 2074.26,-433.307 2011.58,-428.515"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2011.57,-425.005 2001.34,-427.773 2011.06,-431.987 2011.57,-425.005"/>
+<g id="edge113" class="edge"><title>Node4&#45;&gt;Node7</title>
+<path fill="none" stroke="midnightblue" d="M2198.86,-716.473C2208.68,-698.386 2230,-654.585 2230,-615 2230,-615 2230,-615 2230,-557 2230,-438.81 2082.78,-520.902 1984,-456 1960.15,-440.332 1939.38,-414.272 1927.27,-397.114"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1929.99,-394.9 1921.46,-388.619 1924.21,-398.85 1929.99,-394.9"/>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node"><title>Node11</title>
 <g id="a_node11"><a xlink:href="object_8h.html" target="_top" xlink:title="A managed object in the TVM runtime. ">
-<polygon fill="white" stroke="black" points="1120.29,-123.5 1120.29,-142.5 1237.29,-142.5 1237.29,-123.5 1120.29,-123.5"/>
-<text text-anchor="middle" x="1178.79" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/object.h</text>
+<polygon fill="white" stroke="red" points="1500.5,-67.5 1500.5,-86.5 1617.5,-86.5 1617.5,-67.5 1500.5,-67.5"/>
+<text text-anchor="middle" x="1559" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/object.h</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node11 -->
-<g id="edge130" class="edge"><title>Node4&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1903.23,-770.45C1790.51,-771.185 1452.02,-769.253 1175.79,-725 887.954,-678.888 719.562,-788.019 541.787,-557 518.205,-526.356 534.267,-507.928 541.787,-470 552.774,-414.583 601.285,-277.254 638.787,-235 672.6,-196.902 690.217,-194.355 738.787,-179 806.1,-157.719 1003.72,-143.793 1109.72,-137.635"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1110.22,-141.113 1120,-137.046 1109.81,-134.124 1110.22,-141.113"/>
+<g id="edge115" class="edge"><title>Node4&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M2155.31,-719.813C2094.81,-711.654 1974.17,-695.182 1872,-680 1634.57,-644.721 1032.91,-587.316 805,-512 613.093,-448.582 538.715,-398.192 465,-210 395.473,-32.498 497.256,-156.679 790,-123 1047.35,-93.3928 1355.52,-82.8268 1490.27,-79.4376"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1490.53,-82.9323 1500.44,-79.1872 1490.36,-75.9344 1490.53,-82.9323"/>
 </g>
-<!-- Node4&#45;&gt;Node16 -->
-<g id="edge133" class="edge"><title>Node4&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M1980.64,-767.94C2087.82,-760.835 2394.21,-730.842 2613.79,-613 2716.01,-558.138 2746.93,-535.129 2803.79,-434 2843.64,-363.108 2833.3,-335.884 2841.79,-255 2847.91,-196.654 2876.11,-170.576 2841.79,-123 2814.66,-85.3973 2758.38,-75.3548 2722.44,-72.923"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2722.15,-69.4042 2711.99,-72.3905 2721.8,-76.3951 2722.15,-69.4042"/>
+<!-- Node4&#45;&gt;Node13 -->
+<g id="edge118" class="edge"><title>Node4&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M2232.89,-716.776C2234.28,-716.51 2235.65,-716.25 2237,-716 2335.71,-697.712 2363.79,-708.696 2460,-680 2645.87,-624.559 3186,-389.46 3186,-195.5 3186,-195.5 3186,-195.5 3186,-132 3186,-97.8637 3186,-58.0522 3186,-35.2092"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3189.5,-35.1934 3186,-25.1934 3182.5,-35.1934 3189.5,-35.1934"/>
 </g>
-<!-- Node4&#45;&gt;Node17 -->
-<g id="edge134" class="edge"><title>Node4&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1903.14,-769.993C1683,-769.802 591.934,-766.738 448.787,-725 280.121,-675.822 82.0775,-378.468 81.7866,-378 21.0352,-280.165 -40.1659,-209.566 35.7866,-123 58.0128,-97.668 280.417,-81.0985 376.717,-75.0584"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="376.961,-78.5501 386.726,-74.4402 376.529,-71.5634 376.961,-78.5501"/>
+<!-- Node4&#45;&gt;Node14 -->
+<g id="edge119" class="edge"><title>Node4&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M2208.69,-716.399C2287.16,-670.116 2655.5,-448.486 2713,-333 2756.06,-246.508 3057.52,-484.114 2619,-67 2588.99,-38.4516 2542.63,-26.04 2508.42,-20.6451"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2508.63,-17.1384 2498.23,-19.186 2507.63,-24.0678 2508.63,-17.1384"/>
 </g>
-<!-- Node32 -->
-<g id="node32" class="node"><title>Node32</title>
-<polygon fill="white" stroke="#bfbfbf" points="2491.79,-235.5 2491.79,-254.5 2533.79,-254.5 2533.79,-235.5 2491.79,-235.5"/>
-<text text-anchor="middle" x="2512.79" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">limits</text>
+<!-- Node24 -->
+<g id="node24" class="node"><title>Node24</title>
+<polygon fill="white" stroke="#bfbfbf" points="474,-185 474,-204 516,-204 516,-185 474,-185"/>
+<text text-anchor="middle" x="495" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00">limits</text>
 </g>
-<!-- Node4&#45;&gt;Node32 -->
-<g id="edge132" class="edge"><title>Node4&#45;&gt;Node32</title>
-<path fill="none" stroke="midnightblue" d="M1974.47,-761.463C2001.03,-753.84 2039,-741.356 2069.79,-725 2261.41,-623.204 2339.53,-613.258 2461.79,-434 2498.58,-380.049 2508.89,-300.522 2511.73,-264.7"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2515.22,-264.908 2512.41,-254.692 2508.24,-264.43 2515.22,-264.908"/>
+<!-- Node4&#45;&gt;Node24 -->
+<g id="edge117" class="edge"><title>Node4&#45;&gt;Node24</title>
+<path fill="none" stroke="midnightblue" d="M2155.31,-720.01C2105.18,-713.119 2015.26,-699.315 1940,-680 1838.17,-653.866 1818.72,-626.379 1716,-604 1562.34,-570.524 1518.54,-597.149 1364,-568 1331.36,-561.844 1324.69,-553.837 1292,-548 1100.59,-513.828 1041.32,-570.854 856,-512 684.804,-457.63 546.017,-270.513 506.391,-212.673"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="509.205,-210.587 500.707,-204.261 503.405,-214.506 509.205,-210.587"/>
 </g>
-<!-- Node34 -->
-<g id="node34" class="node"><title>Node34</title>
-<polygon fill="white" stroke="#bfbfbf" points="275.787,-297 275.787,-316 337.787,-316 337.787,-297 275.787,-297"/>
-<text text-anchor="middle" x="306.787" y="-304" font-family="Helvetica,sans-Serif" font-size="10.00">algorithm</text>
+<!-- Node26 -->
+<g id="node26" class="node"><title>Node26</title>
+<polygon fill="white" stroke="#bfbfbf" points="3020,-252 3020,-271 3082,-271 3082,-252 3020,-252"/>
+<text text-anchor="middle" x="3051" y="-259" font-family="Helvetica,sans-Serif" font-size="10.00">algorithm</text>
 </g>
-<!-- Node4&#45;&gt;Node34 -->
-<g id="edge131" class="edge"><title>Node4&#45;&gt;Node34</title>
-<path fill="none" stroke="midnightblue" d="M1902.98,-769.543C1679.74,-766.821 566.655,-751.933 499.787,-725 368.78,-672.234 289.787,-627.734 289.787,-486.5 289.787,-486.5 289.787,-486.5 289.787,-423 289.787,-388.496 297.304,-348.806 302.341,-326.085"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="305.8,-326.66 304.634,-316.129 298.979,-325.089 305.8,-326.66"/>
+<!-- Node4&#45;&gt;Node26 -->
+<g id="edge116" class="edge"><title>Node4&#45;&gt;Node26</title>
+<path fill="none" stroke="midnightblue" d="M2220.34,-716.412C2246.02,-707.846 2286.07,-693.982 2320,-680 2356.77,-664.851 2445.27,-619.24 2482,-604 2526.54,-585.518 2850.54,-483.721 2890,-456 2960.9,-406.189 3018.56,-317.457 3040.95,-279.977"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3044.05,-281.617 3046.09,-271.222 3038.01,-278.072 3044.05,-281.617"/>
 </g>
-<!-- Node43 -->
-<g id="node43" class="node"><title>Node43</title>
-<g id="a_node43"><a xlink:href="ir_2type_8h.html" target="_top" xlink:title="IR/AST nodes for the unified type system in TVM. ">
-<polygon fill="white" stroke="black" points="1256.29,-705.5 1256.29,-724.5 1333.29,-724.5 1333.29,-705.5 1256.29,-705.5"/>
-<text text-anchor="middle" x="1294.79" y="-712.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/type.h</text>
+<!-- Node33 -->
+<g id="node33" class="node"><title>Node33</title>
+<g id="a_node33"><a xlink:href="ir_2type_8h.html" target="_top" xlink:title="IR/AST nodes for the unified type system in TVM. ">
+<polygon fill="white" stroke="black" points="2374.5,-660.5 2374.5,-679.5 2451.5,-679.5 2451.5,-660.5 2374.5,-660.5"/>
+<text text-anchor="middle" x="2413" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/type.h</text>
 </a>
 </g>
 </g>
-<!-- Node4&#45;&gt;Node43 -->
-<g id="edge121" class="edge"><title>Node4&#45;&gt;Node43</title>
-<path fill="none" stroke="midnightblue" d="M1903.25,-766.784C1791.57,-757.462 1467.79,-730.439 1343.85,-720.095"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1343.78,-716.577 1333.53,-719.233 1343.2,-723.553 1343.78,-716.577"/>
+<!-- Node4&#45;&gt;Node33 -->
+<g id="edge106" class="edge"><title>Node4&#45;&gt;Node33</title>
+<path fill="none" stroke="midnightblue" d="M2228.7,-716.444C2266.58,-707.102 2327.35,-692.119 2368.66,-681.933"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2369.59,-685.309 2378.46,-679.516 2367.91,-678.512 2369.59,-685.309"/>
 </g>
 <!-- Node5&#45;&gt;Node6 -->
 <g id="edge5" class="edge"><title>Node5&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M1171.76,-649.324C1154.76,-640.664 1128.41,-627.242 1108.79,-617.249"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1110.27,-614.075 1099.78,-612.655 1107.1,-620.312 1110.27,-614.075"/>
+<path fill="none" stroke="midnightblue" d="M1919.06,-604.324C1904.41,-595.822 1881.87,-582.729 1864.76,-572.797"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1866.31,-569.649 1855.9,-567.655 1862.8,-575.703 1866.31,-569.649"/>
 </g>
 <!-- Node5&#45;&gt;Node11 -->
-<g id="edge119" class="edge"><title>Node5&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1185.15,-649.294C1176.32,-628.69 1152.38,-575.762 1123.79,-537 1015.48,-390.194 837.667,-417.252 845.787,-235 846.899,-210.037 833.54,-197.082 850.787,-179 885.286,-142.829 1024.31,-135.036 1109.91,-133.757"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1110.11,-137.255 1120.07,-133.632 1110.03,-130.255 1110.11,-137.255"/>
+<g id="edge104" class="edge"><title>Node5&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M1893.98,-607.877C1801.03,-596.103 1563.32,-566.694 1364,-548 1309.76,-542.913 919.306,-543.703 875,-512 840.829,-487.549 868.959,-453.409 838,-425 800.099,-390.22 758.192,-430.648 728,-389 653.963,-286.868 714.973,-180.987 827,-123 884.933,-93.0131 1319.22,-82.1987 1490.17,-79.0777"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1490.37,-82.5747 1500.31,-78.8959 1490.25,-75.5758 1490.37,-82.5747"/>
 </g>
-<!-- Node5&#45;&gt;Node16 -->
-<g id="edge120" class="edge"><title>Node5&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M1228.85,-656.58C1374.15,-650.535 1885.9,-621.418 2286.79,-501 2435.5,-456.331 2491.81,-474.081 2613.79,-378 2704.18,-306.802 2697.3,-146.101 2692,-91.2549"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2695.47,-90.8003 2690.93,-81.2285 2688.51,-91.5435 2695.47,-90.8003"/>
+<!-- Node5&#45;&gt;Node13 -->
+<g id="edge105" class="edge"><title>Node5&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M1974.05,-608.27C2183.98,-582.392 3148,-449.722 3148,-195.5 3148,-195.5 3148,-195.5 3148,-132 3148,-95.7544 3165.09,-56.171 3176.35,-34.0327"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3179.46,-35.641 3181.03,-25.1633 3173.27,-32.3745 3179.46,-35.641"/>
 </g>
 <!-- Node6&#45;&gt;Node7 -->
 <g id="edge6" class="edge"><title>Node6&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M1132.06,-593.642C1184.73,-584.683 1270.69,-569.992 1344.79,-557 1483.98,-532.594 1519.85,-531.738 1657.79,-501 1746.24,-481.288 1848.62,-452.36 1903.05,-436.482"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1904.34,-439.749 1912.96,-433.581 1902.38,-433.031 1904.34,-439.749"/>
+<path fill="none" stroke="midnightblue" d="M1844.62,-548.463C1856.17,-521.195 1892.36,-435.783 1908.32,-398.133"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1911.56,-399.441 1912.24,-388.868 1905.12,-396.71 1911.56,-399.441"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node"><title>Node8</title>
 <g id="a_node8"><a xlink:href="runtime_2container_8h.html" target="_top" xlink:title="Common POD(plain old data) container types. ">
-<polygon fill="white" stroke="black" points="1197.79,-358.5 1197.79,-377.5 1329.79,-377.5 1329.79,-358.5 1197.79,-358.5"/>
-<text text-anchor="middle" x="1263.79" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/container.h</text>
+<polygon fill="white" stroke="red" points="2184,-313.5 2184,-332.5 2316,-332.5 2316,-313.5 2184,-313.5"/>
+<text text-anchor="middle" x="2250" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/container.h</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node8 -->
-<g id="edge112" class="edge"><title>Node6&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M1091.22,-593.266C1099.7,-584.364 1113.03,-570.047 1123.79,-557 1173.95,-496.156 1228.39,-419.703 1251.89,-386.135"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1254.81,-388.057 1257.66,-377.853 1249.07,-384.052 1254.81,-388.057"/>
+<g id="edge97" class="edge"><title>Node6&#45;&gt;Node8</title>
+<path fill="none" stroke="midnightblue" d="M1873.04,-548.434C1932.47,-532.644 2057.74,-499.843 2102,-492 2175.94,-478.895 2387.81,-511.856 2438,-456 2487.99,-400.372 2363.86,-355.411 2293.88,-335.339"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2294.55,-331.892 2283.98,-332.56 2292.66,-338.632 2294.55,-331.892"/>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node"><title>Node10</title>
 <g id="a_node10"><a xlink:href="runtime_2memory_8h.html" target="_top" xlink:title="Runtime memory management. ">
-<polygon fill="white" stroke="black" points="1890.29,-179.5 1890.29,-198.5 2017.29,-198.5 2017.29,-179.5 1890.29,-179.5"/>
-<text text-anchor="middle" x="1953.79" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/memory.h</text>
+<polygon fill="white" stroke="red" points="1443.5,-123.5 1443.5,-142.5 1570.5,-142.5 1570.5,-123.5 1443.5,-123.5"/>
+<text text-anchor="middle" x="1507" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/memory.h</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node10 -->
-<g id="edge113" class="edge"><title>Node6&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M1131.92,-597.642C1303.91,-581.735 1876.97,-523.034 2035.79,-434 2116.83,-388.569 2164.25,-301.907 2099.79,-235 2080.78,-215.268 2053.33,-204.133 2027.36,-197.87"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2028.02,-194.431 2017.5,-195.701 2026.51,-201.267 2028.02,-194.431"/>
+<g id="edge98" class="edge"><title>Node6&#45;&gt;Node10</title>
+<path fill="none" stroke="midnightblue" d="M1791.65,-556.331C1696.1,-551.911 1489.69,-526.229 1427,-389 1387.67,-302.892 1461.85,-192.064 1493.58,-150.615"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1496.41,-152.679 1499.82,-142.648 1490.9,-148.363 1496.41,-152.679"/>
 </g>
 <!-- Node6&#45;&gt;Node11 -->
-<g id="edge114" class="edge"><title>Node6&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1033.59,-600.018C971.771,-596.358 863.089,-586.019 774.787,-557 724.541,-540.488 709.033,-536.453 669.787,-501 594.435,-432.932 545.812,-386.691 579.787,-291 601.246,-230.559 614.148,-209.095 670.787,-179 708.659,-158.876 980.196,-143.437 1110.01,-137.118"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1110.41,-140.603 1120.23,-136.625 1110.08,-133.611 1110.41,-140.603"/>
+<g id="edge99" class="edge"><title>Node6&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M1791.75,-553.098C1712.4,-546.516 1551.43,-531.947 1416,-512 1110.79,-467.046 929.17,-485.836 791,-210 764.766,-157.627 833.887,-139.804 890,-123 1000.81,-89.8162 1342.73,-81.0347 1490.17,-78.7664"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1490.5,-82.2621 1500.45,-78.6141 1490.4,-75.2628 1490.5,-82.2621"/>
 </g>
 <!-- Node12 -->
 <g id="node12" class="node"><title>Node12</title>
 <g id="a_node12"><a xlink:href="c__runtime__api_8h.html" target="_top" xlink:title="tvm/runtime/c_runtime\l_api.h">
-<polygon fill="white" stroke="black" points="1542.29,-56.5 1542.29,-86.5 1669.29,-86.5 1669.29,-56.5 1542.29,-56.5"/>
-<text text-anchor="start" x="1550.29" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/c_runtime</text>
-<text text-anchor="middle" x="1605.79" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">_api.h</text>
+<polygon fill="white" stroke="red" points="1221.5,-0.5 1221.5,-30.5 1348.5,-30.5 1348.5,-0.5 1221.5,-0.5"/>
+<text text-anchor="start" x="1229.5" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/c_runtime</text>
+<text text-anchor="middle" x="1285" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_api.h</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node12 -->
-<g id="edge111" class="edge"><title>Node6&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1131.92,-599.233C1338.38,-587.377 2126.61,-539.702 2161.79,-501 2242.19,-412.528 2199.58,-325.778 2121.79,-235 2009.66,-104.162 1793.23,-77.3962 1679.59,-72.7326"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1679.7,-69.2347 1669.58,-72.3685 1679.45,-76.23 1679.7,-69.2347"/>
-</g>
-<!-- Node6&#45;&gt;Node16 -->
-<g id="edge115" class="edge"><title>Node6&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M1132.24,-602.354C1266.58,-602.695 1649.25,-599.541 1963.79,-557 2077.91,-541.564 2107.09,-536.076 2216.79,-501 2350.14,-458.359 2401.14,-469.868 2506.79,-378 2604.57,-292.97 2664.9,-142.395 2683.57,-90.596"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2686.89,-91.6959 2686.91,-81.1011 2680.29,-89.3679 2686.89,-91.6959"/>
-</g>
-<!-- Node6&#45;&gt;Node17 -->
-<g id="edge116" class="edge"><title>Node6&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1033.54,-599.681C865.904,-591.141 327.787,-558.146 327.787,-486.5 327.787,-486.5 327.787,-486.5 327.787,-423 327.787,-318.822 160.044,-335.417 187.787,-235 203.233,-179.09 209.088,-158.724 254.787,-123 290.103,-95.3918 340.452,-82.8165 376.424,-77.1259"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="377.24,-80.544 386.629,-75.6341 376.227,-73.6176 377.24,-80.544"/>
-</g>
-<!-- Node6&#45;&gt;Node18 -->
-<g id="edge117" class="edge"><title>Node6&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1131.96,-601.231C1256.4,-598.845 1593.76,-589.632 1872.79,-557 1908.09,-552.871 2161.06,-524.436 2187.79,-501 2295.4,-406.647 2238.94,-311.476 2184.79,-179 2173.77,-152.048 2171.08,-143.884 2150.79,-123 2136.03,-107.814 2115.91,-94.9262 2099.79,-85.9712"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2101.31,-82.8114 2090.84,-81.1654 2098,-88.979 2101.31,-82.8114"/>
-</g>
-<!-- Node6&#45;&gt;Node27 -->
-<g id="edge118" class="edge"><title>Node6&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1033.65,-600.16C969.418,-596.603 862.214,-586.323 837.787,-557 749.773,-451.348 841.192,-265.652 873.441,-207.752"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="876.659,-209.173 878.558,-198.75 870.573,-205.714 876.659,-209.173"/>
+<g id="edge96" class="edge"><title>Node6&#45;&gt;Node12</title>
+<path fill="none" stroke="midnightblue" d="M1791.72,-555.324C1631.99,-549.254 1130.48,-525.016 986,-456 884.479,-407.506 866.882,-372.249 807,-277 757.121,-197.662 742.693,-109.923 826,-67 891.393,-33.3071 1098.92,-21.9689 1211.18,-18.2495"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1211.53,-21.7404 1221.41,-17.923 1211.3,-14.7439 1211.53,-21.7404"/>
+</g>
+<!-- Node6&#45;&gt;Node13 -->
+<g id="edge100" class="edge"><title>Node6&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M1890.24,-551.431C2022.07,-536.196 2380.73,-492.528 2494,-456 2661.04,-402.133 2699.63,-373.851 2846,-277 2967.02,-196.925 2976.65,-149.532 3096,-67 3116.46,-52.8554 3141.19,-39.203 3159.54,-29.6674"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3161.2,-32.7504 3168.51,-25.0754 3158.01,-26.5205 3161.2,-32.7504"/>
+</g>
+<!-- Node6&#45;&gt;Node14 -->
+<g id="edge101" class="edge"><title>Node6&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M1890.19,-548.909C1937.36,-540.808 2010.44,-527.364 2073,-512 2103.18,-504.588 2109.55,-498.217 2140,-492 2209.68,-477.773 2398.63,-495.157 2458,-456 2595.88,-365.059 2658.62,-284.286 2623,-123 2617.08,-96.2049 2617.09,-85.6947 2597,-67 2572.44,-44.146 2536.51,-31.3275 2508.18,-24.3288"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2508.65,-20.8461 2498.12,-22.0059 2507.08,-27.6665 2508.65,-20.8461"/>
+</g>
+<!-- Node6&#45;&gt;Node15 -->
+<g id="edge102" class="edge"><title>Node6&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M1791.91,-555.743C1607.84,-550.89 964.579,-532.612 875,-512 746.071,-482.333 441.701,-344.639 328,-277 286.659,-252.407 264.637,-252.962 243,-210 214.186,-152.789 227.435,-121.559 261,-67 269.102,-53.8306 281.081,-41.2218 291.044,-31.8973"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="293.413,-34.4742 298.491,-25.1753 288.722,-29.2782 293.413,-34.4742"/>
+</g>
+<!-- Node6&#45;&gt;Node21 -->
+<g id="edge103" class="edge"><title>Node6&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M1791.94,-553.21C1729.28,-547.644 1617.85,-535.298 1525,-512 1300.12,-455.571 1167.87,-523.002 1035,-333 1029.91,-325.716 1031.63,-321.227 1035,-313 1037.15,-307.755 1152.05,-192.81 1195.02,-149.935"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1197.55,-152.35 1202.16,-142.81 1192.61,-147.394 1197.55,-152.35"/>
 </g>
-<!-- Node37 -->
-<g id="node37" class="node"><title>Node37</title>
-<g id="a_node37"><a xlink:href="reflection_8h.html" target="_top" xlink:title="Reflection and serialization of compiler IR/AST nodes. ">
-<polygon fill="white" stroke="black" points="847.287,-537.5 847.287,-556.5 966.287,-556.5 966.287,-537.5 847.287,-537.5"/>
-<text text-anchor="middle" x="906.787" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/reflection.h</text>
+<!-- Node27 -->
+<g id="node27" class="node"><title>Node27</title>
+<g id="a_node27"><a xlink:href="reflection_8h.html" target="_top" xlink:title="Reflection and serialization of compiler IR/AST nodes. ">
+<polygon fill="white" stroke="black" points="1578.5,-492.5 1578.5,-511.5 1697.5,-511.5 1697.5,-492.5 1578.5,-492.5"/>
+<text text-anchor="middle" x="1638" y="-499.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/reflection.h</text>
 </a>
 </g>
 </g>
-<!-- Node6&#45;&gt;Node37 -->
-<g id="edge80" class="edge"><title>Node6&#45;&gt;Node37</title>
-<path fill="none" stroke="midnightblue" d="M1054.9,-593.444C1025.03,-584.28 977.472,-569.688 944.331,-559.519"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="945.131,-556.104 934.544,-556.516 943.077,-562.796 945.131,-556.104"/>
+<!-- Node6&#45;&gt;Node27 -->
+<g id="edge65" class="edge"><title>Node6&#45;&gt;Node27</title>
+<path fill="none" stroke="midnightblue" d="M1808.83,-548.444C1773.94,-539.162 1718.11,-524.309 1679.83,-514.127"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1680.58,-510.705 1670.02,-511.516 1678.78,-517.47 1680.58,-510.705"/>
 </g>
-<!-- Node6&#45;&gt;Node38 -->
-<g id="edge109" class="edge"><title>Node6&#45;&gt;Node38</title>
-<path fill="none" stroke="midnightblue" d="M1033.6,-597.72C964.789,-591.111 843.815,-577.057 804.787,-557 782.912,-545.758 763.688,-525.167 750.948,-509.129"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="753.417,-506.595 744.562,-500.776 747.855,-510.846 753.417,-506.595"/>
+<!-- Node6&#45;&gt;Node28 -->
+<g id="edge94" class="edge"><title>Node6&#45;&gt;Node28</title>
+<path fill="none" stroke="midnightblue" d="M1865.96,-548.488C1892.16,-539.523 1934.54,-524.94 1971,-512 1995.51,-503.301 2000.73,-498.152 2026,-492 2147.05,-462.534 2181.14,-476.65 2304,-456 2305.45,-455.756 2306.92,-455.503 2308.4,-455.243"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2309.08,-458.677 2318.29,-453.436 2307.82,-451.791 2309.08,-458.677"/>
 </g>
-<!-- Node6&#45;&gt;Node40 -->
-<g id="edge110" class="edge"><title>Node6&#45;&gt;Node40</title>
-<path fill="none" stroke="midnightblue" d="M1120.78,-593.413C1207.36,-573.844 1420.16,-525.745 1528.35,-501.291"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1529.19,-504.69 1538.17,-499.071 1527.64,-497.862 1529.19,-504.69"/>
+<!-- Node6&#45;&gt;Node30 -->
+<g id="edge95" class="edge"><title>Node6&#45;&gt;Node30</title>
+<path fill="none" stroke="midnightblue" d="M1856.87,-548.455C1882.29,-535.032 1933.95,-508.804 1980,-492 2019.76,-477.491 2065.6,-465.093 2102.07,-456.212"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2103.19,-459.543 2112.09,-453.802 2101.55,-452.737 2103.19,-459.543"/>
 </g>
-<!-- Node41 -->
-<g id="node41" class="node"><title>Node41</title>
-<g id="a_node41"><a xlink:href="repr__printer_8h.html" target="_top" xlink:title="Printer class to print repr string of each AST/IR nodes. ">
-<polygon fill="white" stroke="black" points="984.787,-537.5 984.787,-556.5 1114.79,-556.5 1114.79,-537.5 984.787,-537.5"/>
-<text text-anchor="middle" x="1049.79" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/repr_printer.h</text>
+<!-- Node31 -->
+<g id="node31" class="node"><title>Node31</title>
+<g id="a_node31"><a xlink:href="repr__printer_8h.html" target="_top" xlink:title="Printer class to print repr string of each AST/IR nodes. ">
+<polygon fill="white" stroke="black" points="884,-492.5 884,-511.5 1014,-511.5 1014,-492.5 884,-492.5"/>
+<text text-anchor="middle" x="949" y="-499.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/repr_printer.h</text>
 </a>
 </g>
 </g>
-<!-- Node6&#45;&gt;Node41 -->
-<g id="edge106" class="edge"><title>Node6&#45;&gt;Node41</title>
-<path fill="none" stroke="midnightblue" d="M1077.34,-593.083C1072.77,-585.613 1066.12,-574.724 1060.49,-565.52"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1063.34,-563.459 1055.13,-556.751 1057.36,-567.109 1063.34,-563.459"/>
+<!-- Node6&#45;&gt;Node31 -->
+<g id="edge91" class="edge"><title>Node6&#45;&gt;Node31</title>
+<path fill="none" stroke="midnightblue" d="M1791.77,-554.02C1643.71,-545.057 1201.79,-518.303 1024.16,-507.55"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1024.31,-504.053 1014.11,-506.942 1023.88,-511.04 1024.31,-504.053"/>
 </g>
 <!-- Node7&#45;&gt;Node8 -->
 <g id="edge7" class="edge"><title>Node7&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M1882.29,-418.972C1775.81,-411.649 1545.69,-395.307 1351.79,-378 1348.05,-377.666 1344.22,-377.314 1340.36,-376.951"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1340.37,-373.436 1330.08,-375.965 1339.7,-380.404 1340.37,-373.436"/>
+<path fill="none" stroke="midnightblue" d="M1968.92,-369.444C2028.17,-359.865 2124.1,-344.356 2187.12,-334.167"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2188.01,-337.568 2197.32,-332.516 2186.89,-330.657 2188.01,-337.568"/>
 </g>
 <!-- Node7&#45;&gt;Node10 -->
-<g id="edge71" class="edge"><title>Node7&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M1958.59,-414.421C1972.69,-406.532 1992.58,-393.696 2005.79,-378 2025.24,-354.873 2057.18,-284.489 2063.79,-255 2065.73,-246.326 2068.74,-242.38 2063.79,-235 2052.87,-218.734 2034.91,-208.344 2016.65,-201.708"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2017.7,-198.369 2007.11,-198.569 2015.51,-205.018 2017.7,-198.369"/>
+<g id="edge57" class="edge"><title>Node7&#45;&gt;Node10</title>
+<path fill="none" stroke="midnightblue" d="M1856.16,-376.266C1775.59,-372.816 1637.71,-362.643 1598,-333 1537.47,-287.814 1516.07,-192.767 1509.53,-152.575"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1512.98,-151.949 1508.03,-142.578 1506.05,-152.986 1512.98,-151.949"/>
 </g>
 <!-- Node7&#45;&gt;Node11 -->
-<g id="edge72" class="edge"><title>Node7&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1902.63,-414.467C1862.63,-405.664 1798.76,-391.371 1743.79,-378 1647.42,-354.563 1622.31,-352.023 1527.79,-322 1490.65,-310.205 1483.2,-301.891 1445.79,-291 1370.38,-269.047 1339.42,-296.567 1272.79,-255 1231.56,-229.282 1201.31,-178.661 1187.36,-151.769"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1190.44,-150.094 1182.82,-142.725 1184.18,-153.233 1190.44,-150.094"/>
-</g>
-<!-- Node7&#45;&gt;Node16 -->
-<g id="edge75" class="edge"><title>Node7&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M2001.45,-416.497C2053.72,-409.853 2131.35,-397.678 2196.79,-378 2332.88,-337.074 2356.87,-300.888 2482.79,-235 2514.84,-218.228 2526.08,-219.646 2555.79,-199 2604.17,-165.371 2652.3,-114.653 2675.49,-88.8423"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2678.34,-90.9051 2682.36,-81.1046 2673.1,-86.2559 2678.34,-90.9051"/>
-</g>
-<!-- Node7&#45;&gt;Node17 -->
-<g id="edge76" class="edge"><title>Node7&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1882.11,-421.059C1754.59,-416.554 1446.15,-403.755 1188.79,-378 1011.04,-360.213 964.392,-364.073 790.787,-322 702.95,-300.713 678.456,-297.677 598.787,-255 562.43,-235.524 556.565,-225.292 524.787,-199 496.177,-175.33 486.329,-171.715 462.787,-143 449.282,-126.529 437.227,-105.252 429.534,-90.4003"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="432.565,-88.6385 424.94,-81.2825 426.314,-91.7879 432.565,-88.6385"/>
+<g id="edge58" class="edge"><title>Node7&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M1896.5,-369.39C1849.36,-347.874 1727.2,-287.852 1647,-210 1610.9,-174.958 1581.51,-122.719 1567.64,-95.6641"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1570.71,-93.9851 1563.1,-86.6167 1564.46,-97.1244 1570.71,-93.9851"/>
 </g>
-<!-- Node7&#45;&gt;Node18 -->
-<g id="edge78" class="edge"><title>Node7&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1969.95,-414.364C2024.4,-395.802 2141.6,-346.213 2173.79,-255 2197.21,-188.609 2126.81,-117.803 2091.58,-87.5772"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2093.76,-84.8443 2083.85,-81.1135 2089.27,-90.2139 2093.76,-84.8443"/>
+<!-- Node7&#45;&gt;Node13 -->
+<g id="edge60" class="edge"><title>Node7&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M1975.67,-375.029C2077.91,-369.405 2282.11,-355.69 2350,-333 2458.73,-296.663 2683.72,-104.647 2792,-67 2920.61,-22.2853 3085.2,-16.5042 3153.77,-16.1992"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3153.93,-19.6991 3163.93,-16.1921 3153.93,-12.6991 3153.93,-19.6991"/>
 </g>
-<!-- Node7&#45;&gt;Node21 -->
-<g id="edge73" class="edge"><title>Node7&#45;&gt;Node21</title>
-<path fill="none" stroke="midnightblue" d="M1915.91,-414.413C1858.93,-395.5 1721.66,-349.94 1646,-324.83"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1646.79,-321.404 1636.2,-321.575 1644.58,-328.047 1646.79,-321.404"/>
+<!-- Node7&#45;&gt;Node14 -->
+<g id="edge61" class="edge"><title>Node7&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M1975.59,-378.304C2075.18,-377.705 2269.96,-371.467 2325,-333 2429.02,-260.301 2456.03,-91.7561 2462.29,-35.307"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2465.8,-35.3393 2463.33,-25.0377 2458.84,-34.6344 2465.8,-35.3393"/>
 </g>
-<!-- Node7&#45;&gt;Node26 -->
-<g id="edge77" class="edge"><title>Node7&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M2001.31,-415.447C2045.45,-408.694 2106.57,-396.891 2157.79,-378 2287.61,-330.112 2428.07,-239.35 2479.99,-204.306"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2482.06,-207.132 2488.36,-198.617 2478.12,-201.342 2482.06,-207.132"/>
+<!-- Node7&#45;&gt;Node15 -->
+<g id="edge63" class="edge"><title>Node7&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M1856.18,-376.734C1572.17,-370.1 369.161,-334.744 265,-210 224.201,-161.139 247.323,-125.246 273,-67 278.453,-54.6293 287.218,-42.245 294.733,-32.8364"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="297.449,-35.0445 301.153,-25.1182 292.067,-30.568 297.449,-35.0445"/>
 </g>
-<!-- Node7&#45;&gt;Node27 -->
-<g id="edge79" class="edge"><title>Node7&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1882.06,-420.56C1761.9,-415.191 1499.48,-400.971 1465.79,-378 1429.99,-353.591 1457.51,-315.516 1421.79,-291 1355.86,-245.761 1141.23,-274.88 1063.79,-255 1041.8,-249.356 1038,-243.088 1016.79,-235 983.261,-222.216 944.318,-209.256 917.271,-200.549"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="918.115,-197.144 907.524,-197.429 915.981,-203.811 918.115,-197.144"/>
+<!-- Node7&#45;&gt;Node16 -->
+<g id="edge59" class="edge"><title>Node7&#45;&gt;Node16</title>
+<path fill="none" stroke="midnightblue" d="M1908.86,-369.319C1894.14,-351.424 1860.04,-309.966 1838.91,-284.281"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1841.61,-282.045 1832.55,-276.545 1836.2,-286.492 1841.61,-282.045"/>
 </g>
-<!-- Node36 -->
-<g id="node36" class="node"><title>Node36</title>
-<polygon fill="white" stroke="#bfbfbf" points="1336.29,-297 1336.29,-316 1413.29,-316 1413.29,-297 1336.29,-297"/>
-<text text-anchor="middle" x="1374.79" y="-304" font-family="Helvetica,sans-Serif" font-size="10.00">initializer_list</text>
+<!-- Node7&#45;&gt;Node20 -->
+<g id="edge62" class="edge"><title>Node7&#45;&gt;Node20</title>
+<path fill="none" stroke="midnightblue" d="M1975.74,-374.463C2066.77,-368.608 2245.52,-355.283 2396,-333 2759.64,-279.155 3192.2,-178.065 3330.31,-144.867"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3331.22,-148.249 3340.12,-142.504 3329.58,-141.444 3331.22,-148.249"/>
 </g>
-<!-- Node7&#45;&gt;Node36 -->
-<g id="edge74" class="edge"><title>Node7&#45;&gt;Node36</title>
-<path fill="none" stroke="midnightblue" d="M1882.06,-423.768C1763.73,-424.33 1504.34,-420.497 1427.79,-378 1406.72,-366.307 1391.53,-342.355 1382.95,-325.631"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1385.96,-323.817 1378.47,-316.326 1379.65,-326.854 1385.96,-323.817"/>
+<!-- Node7&#45;&gt;Node21 -->
+<g id="edge64" class="edge"><title>Node7&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M1856.32,-377.595C1786.5,-375.449 1668.31,-366.567 1573,-333 1448.84,-289.272 1437.41,-238.518 1320,-179 1295.3,-166.478 1266.26,-154.624 1244.38,-146.229"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1245.45,-142.894 1234.86,-142.625 1242.97,-149.44 1245.45,-142.894"/>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node"><title>Node9</title>
-<polygon fill="white" stroke="#bfbfbf" points="968.787,-62 968.787,-81 1054.79,-81 1054.79,-62 968.787,-62"/>
-<text text-anchor="middle" x="1011.79" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/logging.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="1823,-6 1823,-25 1909,-25 1909,-6 1823,-6"/>
+<text text-anchor="middle" x="1866" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/logging.h</text>
 </g>
 <!-- Node8&#45;&gt;Node9 -->
 <g id="edge8" class="edge"><title>Node8&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M1250.09,-358.299C1237.36,-349.862 1218.24,-336.274 1203.79,-322 1124.78,-243.965 1050.24,-132.64 1022.85,-90.019"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1025.65,-87.9069 1017.32,-81.3578 1019.75,-91.6711 1025.65,-87.9069"/>
+<path fill="none" stroke="midnightblue" d="M2251.67,-313.103C2254.11,-298.907 2258.16,-270.258 2256,-246 2250.7,-186.352 2250.02,-157.398 2201,-123 2113.51,-61.6055 1988.94,-34.3691 1918.97,-23.2883"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1919.47,-19.8239 1909.05,-21.7685 1918.41,-26.7431 1919.47,-19.8239"/>
 </g>
 <!-- Node8&#45;&gt;Node10 -->
 <g id="edge9" class="edge"><title>Node8&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M1330.12,-361.921C1426.03,-354.155 1598.54,-338.485 1658.79,-322 1764.83,-292.985 1881.36,-231.058 1930.2,-203.597"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1932.07,-206.561 1939.04,-198.585 1928.62,-200.471 1932.07,-206.561"/>
+<path fill="none" stroke="midnightblue" d="M2183.84,-319.507C2067.96,-314.556 1833.15,-301.762 1755,-277 1662.06,-247.551 1565.94,-179.269 1526.08,-148.958"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1528.09,-146.088 1518.03,-142.766 1523.82,-151.637 1528.09,-146.088"/>
 </g>
 <!-- Node8&#45;&gt;Node11 -->
-<g id="edge23" class="edge"><title>Node8&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1252.49,-358.249C1242.6,-349.977 1228.64,-336.673 1220.79,-322 1190.6,-265.568 1182.07,-188.451 1179.69,-153.108"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1183.17,-152.596 1179.1,-142.814 1176.18,-152.999 1183.17,-152.596"/>
+<g id="edge18" class="edge"><title>Node8&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M2250.09,-313.269C2249.89,-280.344 2244.13,-163.511 2174,-123 2127.64,-96.2219 1778.25,-83.8168 1627.69,-79.6725"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1627.73,-76.1722 1617.63,-79.3998 1627.54,-83.1697 1627.73,-76.1722"/>
 </g>
-<!-- Node8&#45;&gt;Node16 -->
-<g id="edge67" class="edge"><title>Node8&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M1329.95,-361.807C1464.72,-351.152 1760.2,-327.371 1781.79,-322 1855.8,-303.583 1870.09,-285.977 1939.79,-255 1959.05,-246.44 1962.95,-242.119 1982.79,-235 2169.48,-168.01 2221.12,-165.829 2414.79,-123 2501.96,-103.723 2605.81,-86.079 2657.39,-77.6715"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2658.27,-81.0753 2667.58,-76.0204 2657.15,-74.1654 2658.27,-81.0753"/>
+<!-- Node8&#45;&gt;Node13 -->
+<g id="edge53" class="edge"><title>Node8&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M2267.56,-313.347C2319.63,-287.657 2477.71,-209.48 2608,-143 2673.16,-109.752 2684.07,-88.4899 2754,-67 2898.17,-22.692 3080.37,-16.7828 3153.47,-16.3253"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3153.86,-19.8242 3163.85,-16.2935 3153.84,-12.8243 3153.86,-19.8242"/>
 </g>
-<!-- Node8&#45;&gt;Node17 -->
-<g id="edge68" class="edge"><title>Node8&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1206.67,-358.483C1062.22,-336.7 690.125,-278.991 638.787,-255 549.366,-213.213 466.628,-125.354 434.694,-88.8955"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="437.203,-86.4458 428.016,-81.1684 431.907,-91.023 437.203,-86.4458"/>
+<!-- Node8&#45;&gt;Node14 -->
+<g id="edge54" class="edge"><title>Node8&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M2259.34,-313.303C2285.19,-289.163 2356.31,-222.29 2364,-210 2399.56,-153.166 2376.28,-123.731 2412,-67 2420.55,-53.4222 2433.48,-40.8426 2444.31,-31.6349"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2446.54,-34.3286 2452.07,-25.2903 2442.12,-28.9084 2446.54,-34.3286"/>
 </g>
-<!-- Node8&#45;&gt;Node18 -->
-<g id="edge69" class="edge"><title>Node8&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1330.06,-361.389C1446.97,-351.351 1681,-330.566 1717.79,-322 1825.04,-297.025 1846.48,-273.151 1949.79,-235 1993.71,-218.78 2013.83,-230.151 2048.79,-199 2075.66,-175.049 2078.21,-158.969 2076.79,-123 2076.37,-112.504 2075.47,-100.809 2074.63,-91.3193"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2078.09,-90.6959 2073.67,-81.0657 2071.12,-91.3485 2078.09,-90.6959"/>
+<!-- Node8&#45;&gt;Node15 -->
+<g id="edge55" class="edge"><title>Node8&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M2183.71,-320.784C1924.45,-315.482 979.3,-290.898 692,-210 543.918,-168.303 385.523,-67.967 329.809,-30.727"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="331.727,-27.7994 321.478,-25.1152 327.816,-33.605 331.727,-27.7994"/>
 </g>
-<!-- Node8&#45;&gt;Node21 -->
-<g id="edge24" class="edge"><title>Node8&#45;&gt;Node21</title>
-<path fill="none" stroke="midnightblue" d="M1311.07,-358.475C1367.74,-348.257 1463.07,-331.069 1527.18,-319.51"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1527.97,-322.924 1537.19,-317.705 1526.73,-316.035 1527.97,-322.924"/>
-</g>
-<!-- Node25 -->
-<g id="node25" class="node"><title>Node25</title>
-<polygon fill="white" stroke="#bfbfbf" points="1662.29,-179.5 1662.29,-198.5 1719.29,-198.5 1719.29,-179.5 1662.29,-179.5"/>
-<text text-anchor="middle" x="1690.79" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">memory</text>
-</g>
-<!-- Node8&#45;&gt;Node25 -->
-<g id="edge66" class="edge"><title>Node8&#45;&gt;Node25</title>
-<path fill="none" stroke="midnightblue" d="M1268.4,-358.391C1277.39,-342.46 1298.87,-308.419 1326.79,-291 1384.59,-254.935 1411.92,-278.71 1475.79,-255 1494.05,-248.221 1496.57,-241.9 1514.79,-235 1539.75,-225.542 1608.68,-208.911 1652.5,-198.732"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1653.29,-202.141 1662.25,-196.477 1651.72,-195.321 1653.29,-202.141"/>
-</g>
-<!-- Node8&#45;&gt;Node27 -->
-<g id="edge70" class="edge"><title>Node8&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1245.46,-358.463C1184.02,-329.847 985.114,-237.197 911.509,-202.913"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="912.919,-199.708 902.376,-198.659 909.963,-206.054 912.919,-199.708"/>
+<!-- Node8&#45;&gt;Node16 -->
+<g id="edge19" class="edge"><title>Node8&#45;&gt;Node16</title>
+<path fill="none" stroke="midnightblue" d="M2188.53,-313.475C2108.69,-302.401 1969.82,-283.14 1887.55,-271.731"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1887.95,-268.252 1877.56,-270.345 1886.99,-275.186 1887.95,-268.252"/>
 </g>
-<!-- Node8&#45;&gt;Node34 -->
-<g id="edge63" class="edge"><title>Node8&#45;&gt;Node34</title>
-<path fill="none" stroke="midnightblue" d="M1197.63,-362.887C1013.36,-351.43 497.937,-319.384 348.118,-310.07"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="348.171,-306.566 337.973,-309.439 347.736,-313.553 348.171,-306.566"/>
+<!-- Node19 -->
+<g id="node19" class="node"><title>Node19</title>
+<polygon fill="white" stroke="#bfbfbf" points="1992.5,-123.5 1992.5,-142.5 2049.5,-142.5 2049.5,-123.5 1992.5,-123.5"/>
+<text text-anchor="middle" x="2021" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">memory</text>
 </g>
-<!-- Node35 -->
-<g id="node35" class="node"><title>Node35</title>
-<polygon fill="white" stroke="#bfbfbf" points="1230.29,-297 1230.29,-316 1279.29,-316 1279.29,-297 1230.29,-297"/>
-<text text-anchor="middle" x="1254.79" y="-304" font-family="Helvetica,sans-Serif" font-size="10.00">cstring</text>
+<!-- Node8&#45;&gt;Node19 -->
+<g id="edge52" class="edge"><title>Node8&#45;&gt;Node19</title>
+<path fill="none" stroke="midnightblue" d="M2243.78,-313.356C2222.56,-283.953 2153.58,-189.078 2140,-179 2115.99,-161.187 2084.1,-149.63 2059.38,-142.694"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2060.17,-139.284 2049.61,-140.086 2058.37,-146.047 2060.17,-139.284"/>
 </g>
-<!-- Node8&#45;&gt;Node35 -->
-<g id="edge64" class="edge"><title>Node8&#45;&gt;Node35</title>
-<path fill="none" stroke="midnightblue" d="M1262.5,-358.475C1261.23,-350.08 1259.25,-336.981 1257.61,-326.163"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1261.03,-325.373 1256.07,-316.009 1254.11,-326.42 1261.03,-325.373"/>
+<!-- Node8&#45;&gt;Node21 -->
+<g id="edge56" class="edge"><title>Node8&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M2183.98,-320.823C2077.13,-318.02 1859.98,-308.587 1679,-277 1567.79,-257.591 1534.36,-261.69 1434,-210 1414.62,-200.02 1415.52,-188.705 1396,-179 1346.63,-154.449 1283.05,-142.786 1244.74,-137.64"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1245,-134.145 1234.64,-136.356 1244.11,-141.089 1245,-134.145"/>
 </g>
-<!-- Node8&#45;&gt;Node36 -->
-<g id="edge65" class="edge"><title>Node8&#45;&gt;Node36</title>
-<path fill="none" stroke="midnightblue" d="M1279.69,-358.475C1298.07,-348.622 1328.54,-332.288 1350.03,-320.77"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1351.75,-323.818 1358.91,-316.009 1348.45,-317.649 1351.75,-323.818"/>
+<!-- Node8&#45;&gt;Node26 -->
+<g id="edge51" class="edge"><title>Node8&#45;&gt;Node26</title>
+<path fill="none" stroke="midnightblue" d="M2316.23,-317.08C2476.07,-305.207 2879.39,-275.248 3009.7,-265.568"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3009.97,-269.058 3019.68,-264.827 3009.45,-262.077 3009.97,-269.058"/>
 </g>
 <!-- Node10&#45;&gt;Node11 -->
 <g id="edge10" class="edge"><title>Node10&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1890.04,-183.558C1746.03,-173.524 1396.6,-149.177 1247.76,-138.806"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1247.62,-135.288 1237.4,-138.084 1247.13,-142.271 1247.62,-135.288"/>
+<path fill="none" stroke="midnightblue" d="M1515.59,-123.083C1523.16,-115.22 1534.38,-103.569 1543.51,-94.0813"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1546.16,-96.3821 1550.57,-86.7511 1541.12,-91.5266 1546.16,-96.3821"/>
 </g>
-<!-- Node10&#45;&gt;Node17 -->
-<g id="edge21" class="edge"><title>Node10&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1928.15,-179.407C1883.14,-164.768 1786.73,-135.377 1702.79,-123 1578.45,-104.669 676.948,-79.4095 465.216,-73.6852"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="465.181,-70.1831 455.09,-73.4121 464.992,-77.1805 465.181,-70.1831"/>
+<!-- Node10&#45;&gt;Node14 -->
+<g id="edge16" class="edge"><title>Node10&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M1559.4,-123.483C1642.19,-110.214 1808.42,-84.3322 1950,-67 2123.58,-45.7511 2331,-27.5689 2419.96,-20.1133"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2420.28,-23.5984 2429.96,-19.2786 2419.7,-16.6227 2420.28,-23.5984"/>
 </g>
-<!-- Node10&#45;&gt;Node18 -->
-<g id="edge22" class="edge"><title>Node10&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1962.73,-179.319C1982.63,-160.004 2030.82,-113.237 2056.32,-88.4827"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2059,-90.7583 2063.74,-81.282 2054.12,-85.7353 2059,-90.7583"/>
-</g>
-<!-- Node20 -->
-<g id="node20" class="node"><title>Node20</title>
-<polygon fill="white" stroke="#bfbfbf" points="1864.29,-123.5 1864.29,-142.5 1911.29,-142.5 1911.29,-123.5 1864.29,-123.5"/>
-<text text-anchor="middle" x="1887.79" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">cstdlib</text>
-</g>
-<!-- Node10&#45;&gt;Node20 -->
-<g id="edge20" class="edge"><title>Node10&#45;&gt;Node20</title>
-<path fill="none" stroke="midnightblue" d="M1943.18,-179.324C1933.33,-171.263 1918.44,-159.077 1906.57,-149.369"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1908.54,-146.457 1898.58,-142.834 1904.11,-151.875 1908.54,-146.457"/>
+<!-- Node10&#45;&gt;Node15 -->
+<g id="edge17" class="edge"><title>Node10&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M1446.78,-123.458C1350.17,-109.979 1154.49,-83.6061 988,-67 738.83,-42.1469 437.097,-23.846 340.405,-18.2713"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="340.338,-14.7618 330.154,-17.6838 339.937,-21.7504 340.338,-14.7618"/>
 </g>
 <!-- Node11&#45;&gt;Node9 -->
 <g id="edge11" class="edge"><title>Node11&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M1154.86,-123.475C1126.09,-113.225 1077.63,-95.9593 1045.18,-84.3994"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1046.26,-81.0684 1035.67,-81.0091 1043.91,-87.6624 1046.26,-81.0684"/>
+<path fill="none" stroke="midnightblue" d="M1602.99,-67.4751C1658.31,-56.7523 1753.24,-38.3537 1812.65,-26.8394"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1813.44,-30.2518 1822.59,-24.913 1812.11,-23.3797 1813.44,-30.2518"/>
 </g>
 <!-- Node11&#45;&gt;Node12 -->
 <g id="edge12" class="edge"><title>Node11&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1237.71,-123.789C1314.55,-113.083 1448.95,-94.3536 1532.35,-82.7336"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1532.83,-86.1995 1542.25,-81.3528 1531.87,-79.2665 1532.83,-86.1995"/>
-</g>
-<!-- Node11&#45;&gt;Node16 -->
-<g id="edge16" class="edge"><title>Node11&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M1237.53,-129.639C1282.93,-127.816 1347.34,-125.237 1403.79,-123 1903.66,-103.188 2512.85,-79.4025 2657.77,-73.7486"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2657.91,-77.2458 2667.77,-73.3585 2657.64,-70.2511 2657.91,-77.2458"/>
+<path fill="none" stroke="midnightblue" d="M1519.74,-67.4751C1477.76,-58.3584 1410.22,-43.6929 1358.35,-32.4276"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1359.04,-28.9961 1348.52,-30.2942 1357.55,-35.8366 1359.04,-28.9961"/>
+</g>
+<!-- Node11&#45;&gt;Node13 -->
+<g id="edge13" class="edge"><title>Node11&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M1617.87,-73.8472C1882.05,-64.186 2954.02,-24.9837 3153.84,-17.676"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3154.11,-21.1686 3163.98,-17.3054 3153.86,-14.1733 3154.11,-21.1686"/>
+</g>
+<!-- Node11&#45;&gt;Node14 -->
+<g id="edge14" class="edge"><title>Node11&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M1617.68,-72.1419C1786.37,-61.0515 2270.06,-29.2507 2419.48,-19.4268"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2419.91,-22.9066 2429.65,-18.7581 2419.45,-15.9217 2419.91,-22.9066"/>
+</g>
+<!-- Node11&#45;&gt;Node15 -->
+<g id="edge15" class="edge"><title>Node11&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M1500.39,-73.21C1280.06,-62.7223 505.597,-25.858 340.219,-17.986"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="340.375,-14.4896 330.22,-17.51 340.042,-21.4816 340.375,-14.4896"/>
+</g>
+<!-- Node16&#45;&gt;Node9 -->
+<g id="edge20" class="edge"><title>Node16&#45;&gt;Node9</title>
+<path fill="none" stroke="midnightblue" d="M1830.28,-246.094C1836.11,-236.312 1843.21,-222.864 1847,-210 1865.27,-148.04 1866.84,-70.586 1866.47,-35.4258"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1869.97,-35.1441 1866.29,-25.2067 1862.97,-35.2663 1869.97,-35.1441"/>
+</g>
+<!-- Node16&#45;&gt;Node11 -->
+<g id="edge42" class="edge"><title>Node16&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M1764.45,-251.573C1734.32,-244.462 1698.19,-231.909 1672,-210 1638.13,-181.662 1653.6,-155.769 1624,-123 1612.75,-110.543 1597.41,-99.7172 1584.46,-91.8073"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1585.94,-88.6189 1575.54,-86.5815 1582.4,-94.6579 1585.94,-88.6189"/>
+</g>
+<!-- Node16&#45;&gt;Node12 -->
+<g id="edge21" class="edge"><title>Node16&#45;&gt;Node12</title>
+<path fill="none" stroke="midnightblue" d="M1770.03,-246.469C1748.11,-238.502 1723.36,-226.705 1705,-210 1651.3,-161.13 1685.66,-108.39 1626,-67 1583.96,-37.835 1445.97,-25.1011 1358.94,-19.8599"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1359.04,-16.3598 1348.85,-19.272 1358.63,-23.3479 1359.04,-16.3598"/>
+</g>
+<!-- Node16&#45;&gt;Node13 -->
+<g id="edge46" class="edge"><title>Node16&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M1877.74,-257.441C1942.66,-252.599 2051.42,-240.358 2140,-210 2215.83,-184.011 2222.85,-150.895 2298,-123 2411.26,-80.9596 2444.44,-84.3675 2564,-67 2788.31,-34.4155 3061.42,-21.3615 3153.75,-17.6785"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3153.99,-21.1717 3163.85,-17.2845 3153.72,-14.177 3153.99,-21.1717"/>
+</g>
+<!-- Node16&#45;&gt;Node14 -->
+<g id="edge48" class="edge"><title>Node16&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M1877.59,-247.198C1900.49,-239.475 1925.76,-227.667 1944,-210 1974.44,-180.518 1950.15,-149.764 1983,-123 2050.38,-68.105 2313.92,-33.2492 2419.7,-21.2123"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2420.19,-24.6801 2429.73,-20.0858 2419.41,-17.7239 2420.19,-24.6801"/>
+</g>
+<!-- Node16&#45;&gt;Node15 -->
+<g id="edge49" class="edge"><title>Node16&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M1764.19,-258.962C1562.17,-253.319 885.562,-232.894 791,-210 662.444,-178.876 638.797,-145.16 520,-87 502.859,-78.608 499.694,-74.1543 482,-67 433.894,-47.5486 375.512,-32.1057 340.358,-23.641"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="340.768,-20.1413 330.23,-21.2413 339.154,-26.9527 340.768,-20.1413"/>
 </g>
-<!-- Node11&#45;&gt;Node17 -->
-<g id="edge17" class="edge"><title>Node11&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1120.03,-127.203C1103.16,-125.835 1084.75,-124.349 1067.79,-123 841.118,-104.965 569.727,-83.9799 465.004,-75.9051"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="465.052,-72.3985 454.812,-75.1195 464.513,-79.3778 465.052,-72.3985"/>
-</g>
-<!-- Node11&#45;&gt;Node18 -->
-<g id="edge18" class="edge"><title>Node11&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1237.44,-128.096C1409.93,-116.616 1911.49,-83.2353 2041.64,-74.573"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2041.97,-78.0586 2051.72,-73.9021 2041.51,-71.074 2041.97,-78.0586"/>
+<!-- Node17 -->
+<g id="node17" class="node"><title>Node17</title>
+<g id="a_node17"><a xlink:href="data__type_8h.html" target="_top" xlink:title="tvm/runtime/data_type.h">
+<polygon fill="white" stroke="black" points="2463,-123.5 2463,-142.5 2599,-142.5 2599,-123.5 2463,-123.5"/>
+<text text-anchor="middle" x="2531" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/data_type.h</text>
+</a>
 </g>
-<!-- Node19 -->
-<g id="node19" class="node"><title>Node19</title>
-<polygon fill="white" stroke="#bfbfbf" points="1234.79,-62 1234.79,-81 1284.79,-81 1284.79,-62 1234.79,-62"/>
-<text text-anchor="middle" x="1259.79" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">atomic</text>
 </g>
-<!-- Node11&#45;&gt;Node19 -->
-<g id="edge19" class="edge"><title>Node11&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1190.39,-123.475C1203.26,-114.02 1224.26,-98.5961 1239.79,-87.1871"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1242.22,-89.75 1248.2,-81.0091 1238.07,-84.1085 1242.22,-89.75"/>
+<!-- Node16&#45;&gt;Node17 -->
+<g id="edge22" class="edge"><title>Node16&#45;&gt;Node17</title>
+<path fill="none" stroke="midnightblue" d="M1877.84,-248.595C1914.59,-239.986 1963.02,-226.905 2004,-210 2029.94,-199.299 2032.23,-187.403 2059,-179 2130.28,-156.625 2337.79,-143.356 2452.49,-137.529"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2452.81,-141.018 2462.62,-137.022 2452.46,-134.026 2452.81,-141.018"/>
 </g>
-<!-- Node13 -->
-<g id="node13" class="node"><title>Node13</title>
-<polygon fill="white" stroke="#bfbfbf" points="1469.79,-0.5 1469.79,-19.5 1559.79,-19.5 1559.79,-0.5 1469.79,-0.5"/>
-<text text-anchor="middle" x="1514.79" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">dlpack/dlpack.h</text>
+<!-- Node18 -->
+<g id="node18" class="node"><title>Node18</title>
+<g id="a_node18"><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="white" stroke="red" points="1714,-185 1714,-204 1838,-204 1838,-185 1714,-185"/>
+<text text-anchor="middle" x="1776" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/module.h</text>
+</a>
 </g>
-<!-- Node12&#45;&gt;Node13 -->
-<g id="edge13" class="edge"><title>Node12&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M1584.22,-56.3993C1569.91,-47.0402 1551.17,-34.7924 1536.78,-25.3771"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1538.31,-22.2009 1528.03,-19.6578 1534.48,-28.0597 1538.31,-22.2009"/>
 </g>
-<!-- Node14 -->
-<g id="node14" class="node"><title>Node14</title>
-<polygon fill="white" stroke="#bfbfbf" points="1578.29,-0.5 1578.29,-19.5 1633.29,-19.5 1633.29,-0.5 1578.29,-0.5"/>
-<text text-anchor="middle" x="1605.79" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stddef.h</text>
+<!-- Node16&#45;&gt;Node18 -->
+<g id="edge27" class="edge"><title>Node16&#45;&gt;Node18</title>
+<path fill="none" stroke="midnightblue" d="M1805.56,-246.396C1797.54,-236.662 1788.4,-223.646 1782.18,-213.214"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1785.11,-211.29 1777.25,-204.195 1778.97,-214.648 1785.11,-211.29"/>
 </g>
-<!-- Node12&#45;&gt;Node14 -->
-<g id="edge14" class="edge"><title>Node12&#45;&gt;Node14</title>
-<path fill="none" stroke="midnightblue" d="M1605.79,-56.3993C1605.79,-48.4664 1605.79,-38.458 1605.79,-29.8583"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1609.29,-29.6577 1605.79,-19.6578 1602.29,-29.6578 1609.29,-29.6577"/>
+<!-- Node16&#45;&gt;Node19 -->
+<g id="edge45" class="edge"><title>Node16&#45;&gt;Node19</title>
+<path fill="none" stroke="midnightblue" d="M1877.81,-252.689C1910.03,-245.87 1949.47,-233.237 1978,-210 1996.59,-194.856 2008.62,-169.413 2015.11,-152.178"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2018.43,-153.269 2018.43,-142.674 2011.83,-150.956 2018.43,-153.269"/>
 </g>
-<!-- Node15 -->
-<g id="node15" class="node"><title>Node15</title>
-<polygon fill="white" stroke="#bfbfbf" points="1651.29,-0.5 1651.29,-19.5 1704.29,-19.5 1704.29,-0.5 1651.29,-0.5"/>
-<text text-anchor="middle" x="1677.79" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stdint.h</text>
-</g>
-<!-- Node12&#45;&gt;Node15 -->
-<g id="edge15" class="edge"><title>Node12&#45;&gt;Node15</title>
-<path fill="none" stroke="midnightblue" d="M1622.85,-56.3993C1633.85,-47.3076 1648.15,-35.4899 1659.4,-26.1909"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1661.83,-28.726 1667.31,-19.6578 1657.37,-23.33 1661.83,-28.726"/>
-</g>
-<!-- Node21&#45;&gt;Node9 -->
-<g id="edge25" class="edge"><title>Node21&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M1537.12,-296.808C1466.06,-285.547 1351.47,-266.053 1334.79,-255 1275.8,-215.925 1304.38,-162.663 1245.79,-123 1191.69,-86.3837 1115.82,-75.6934 1065.3,-72.8965"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1065.38,-69.3968 1055.23,-72.4249 1065.06,-76.3892 1065.38,-69.3968"/>
-</g>
-<!-- Node21&#45;&gt;Node11 -->
-<g id="edge54" class="edge"><title>Node21&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1537.26,-296.703C1455.29,-283.804 1312.02,-260.674 1301.79,-255 1262.14,-233.029 1266.54,-210.334 1233.79,-179 1222.67,-168.367 1209.34,-157.418 1198.58,-148.982"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1200.66,-146.159 1190.6,-142.81 1196.37,-151.696 1200.66,-146.159"/>
-</g>
-<!-- Node21&#45;&gt;Node12 -->
-<g id="edge26" class="edge"><title>Node21&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1648.89,-291.445C1692.72,-279.741 1747.83,-263.642 1754.79,-255 1770.46,-235.538 1758.67,-223.963 1759.79,-199 1760.18,-190.12 1762.07,-187.591 1759.79,-179 1752.43,-151.295 1749.3,-141.946 1727.79,-123 1711.3,-108.482 1690.06,-97.7569 1669.94,-90.0195"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1671.08,-86.71 1660.49,-86.5649 1668.68,-93.2847 1671.08,-86.71"/>
-</g>
-<!-- Node21&#45;&gt;Node16 -->
-<g id="edge58" class="edge"><title>Node21&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M1650.34,-294.929C1702.29,-285.079 1781.37,-269.736 1849.79,-255 2101.88,-200.705 2162.34,-175.636 2414.79,-123 2502.18,-104.777 2605.94,-86.6728 2657.44,-77.9223"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2658.34,-81.3204 2667.62,-76.2003 2657.17,-74.4186 2658.34,-81.3204"/>
-</g>
-<!-- Node21&#45;&gt;Node17 -->
-<g id="edge60" class="edge"><title>Node21&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1537.09,-297.543C1472.82,-288.299 1365,-272.116 1272.79,-255 1252.31,-251.2 636.41,-118.85 464.793,-81.9605"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="465.353,-78.5009 454.84,-79.8211 463.882,-85.3446 465.353,-78.5009"/>
-</g>
-<!-- Node21&#45;&gt;Node18 -->
-<g id="edge61" class="edge"><title>Node21&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1648.46,-291.493C1704.85,-277.1 1795.39,-254.153 1873.79,-235 1941.23,-218.524 1973.77,-244.976 2025.79,-199 2057.72,-170.772 2068.01,-118.776 2071.28,-91.051"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2074.76,-91.3976 2072.27,-81.0994 2067.8,-90.7023 2074.76,-91.3976"/>
+<!-- Node16&#45;&gt;Node21 -->
+<g id="edge50" class="edge"><title>Node16&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M1764.31,-248.404C1688.92,-232.357 1551.51,-203.23 1434,-179 1367,-165.184 1288.57,-149.463 1244.86,-140.739"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1245.27,-137.253 1234.78,-138.729 1243.9,-144.118 1245.27,-137.253"/>
 </g>
 <!-- Node22 -->
 <g id="node22" class="node"><title>Node22</title>
-<g id="a_node22"><a xlink:href="data__type_8h.html" target="_top" xlink:title="tvm/runtime/data_type.h">
-<polygon fill="white" stroke="black" points="256.787,-179.5 256.787,-198.5 392.787,-198.5 392.787,-179.5 256.787,-179.5"/>
-<text text-anchor="middle" x="324.787" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/data_type.h</text>
+<g id="a_node22"><a xlink:href="ndarray_8h.html" target="_top" xlink:title="A device&#45;independent managed NDArray abstraction. ">
+<polygon fill="white" stroke="red" points="1002.5,-185 1002.5,-204 1125.5,-204 1125.5,-185 1002.5,-185"/>
+<text text-anchor="middle" x="1064" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/ndarray.h</text>
 </a>
 </g>
 </g>
-<!-- Node21&#45;&gt;Node22 -->
-<g id="edge27" class="edge"><title>Node21&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M1537.28,-300.19C1503.74,-297.174 1460.36,-293.512 1421.79,-291 1074.16,-268.364 984.435,-298.444 638.787,-255 540.624,-242.662 427.426,-216.129 367.376,-201.055"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="368.054,-197.617 357.501,-198.559 366.338,-204.403 368.054,-197.617"/>
+<!-- Node16&#45;&gt;Node22 -->
+<g id="edge36" class="edge"><title>Node16&#45;&gt;Node22</title>
+<path fill="none" stroke="midnightblue" d="M1764.41,-255.641C1628.77,-243.994 1285.27,-214.5 1135.58,-201.646"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1135.83,-198.155 1125.57,-200.787 1135.23,-205.129 1135.83,-198.155"/>
 </g>
-<!-- Node23 -->
-<g id="node23" class="node"><title>Node23</title>
-<g id="a_node23"><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="white" stroke="black" points="1621.79,-235.5 1621.79,-254.5 1745.79,-254.5 1745.79,-235.5 1621.79,-235.5"/>
-<text text-anchor="middle" x="1683.79" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/module.h</text>
-</a>
+<!-- Node16&#45;&gt;Node23 -->
+<g id="edge43" class="edge"><title>Node16&#45;&gt;Node23</title>
+<path fill="none" stroke="midnightblue" d="M1877.85,-249.699C1925.24,-240.331 1994.39,-225.819 2054,-210 2057.42,-209.092 2060.97,-208.088 2064.5,-207.045"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2065.79,-210.313 2074.33,-204.049 2063.75,-203.617 2065.79,-210.313"/>
 </g>
+<!-- Node16&#45;&gt;Node24 -->
+<g id="edge44" class="edge"><title>Node16&#45;&gt;Node24</title>
+<path fill="none" stroke="midnightblue" d="M1764.26,-258.269C1601.61,-251.793 1119.79,-232.049 720,-210 650.821,-206.185 569.744,-200.714 526.292,-197.7"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="526.305,-194.193 516.086,-196.99 525.819,-201.176 526.305,-194.193"/>
 </g>
-<!-- Node21&#45;&gt;Node23 -->
-<g id="edge32" class="edge"><title>Node21&#45;&gt;Node23</title>
-<path fill="none" stroke="midnightblue" d="M1609.28,-291.399C1622.48,-281.862 1641.45,-269.325 1657.04,-259.842"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1658.95,-262.777 1665.76,-254.658 1655.38,-256.76 1658.95,-262.777"/>
+<!-- Node25 -->
+<g id="node25" class="node"><title>Node25</title>
+<polygon fill="white" stroke="#bfbfbf" points="1894.5,-185 1894.5,-204 1935.5,-204 1935.5,-185 1894.5,-185"/>
+<text text-anchor="middle" x="1915" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00">tuple</text>
+</g>
+<!-- Node16&#45;&gt;Node25 -->
+<g id="edge47" class="edge"><title>Node16&#45;&gt;Node25</title>
+<path fill="none" stroke="midnightblue" d="M1841.4,-246.396C1857.01,-235.597 1878.48,-220.756 1894.19,-209.887"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1896.46,-212.573 1902.7,-204.007 1892.48,-206.816 1896.46,-212.573"/>
+</g>
+<!-- Node17&#45;&gt;Node9 -->
+<g id="edge23" class="edge"><title>Node17&#45;&gt;Node9</title>
+<path fill="none" stroke="midnightblue" d="M2503.96,-123.412C2459.4,-109.566 2367.55,-82.3181 2288,-67 2156.77,-41.7297 2000,-26.9389 1919.51,-20.4483"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1919.39,-16.9274 1909.14,-19.624 1918.83,-23.9054 1919.39,-16.9274"/>
+</g>
+<!-- Node17&#45;&gt;Node12 -->
+<g id="edge24" class="edge"><title>Node17&#45;&gt;Node12</title>
+<path fill="none" stroke="midnightblue" d="M2462.68,-125.667C2246.99,-105.674 1581.67,-44.0007 1358.7,-23.3316"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1359.01,-19.8459 1348.73,-22.4079 1358.37,-26.8161 1359.01,-19.8459"/>
+</g>
+<!-- Node17&#45;&gt;Node13 -->
+<g id="edge25" class="edge"><title>Node17&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M2546.28,-123.278C2572.36,-108.852 2627.54,-80.2991 2678,-67 2853.11,-20.8461 3072.31,-16.197 3153.67,-16.2006"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3153.77,-19.7008 3163.77,-16.2259 3153.78,-12.7008 3153.77,-19.7008"/>
+</g>
+<!-- Node17&#45;&gt;Node14 -->
+<g id="edge26" class="edge"><title>Node17&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M2525.96,-123.319C2515,-104.422 2488.8,-59.2483 2474.22,-34.1206"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2477.14,-32.1758 2469.09,-25.282 2471.08,-35.6882 2477.14,-32.1758"/>
+</g>
+<!-- Node18&#45;&gt;Node10 -->
+<g id="edge29" class="edge"><title>Node18&#45;&gt;Node10</title>
+<path fill="none" stroke="midnightblue" d="M1737.46,-184.975C1689.52,-174.371 1607.64,-156.26 1555.49,-144.724"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1555.99,-141.251 1545.47,-142.509 1554.48,-148.086 1555.99,-141.251"/>
+</g>
+<!-- Node18&#45;&gt;Node11 -->
+<g id="edge30" class="edge"><title>Node18&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M1763.36,-184.852C1742.68,-170.905 1700.13,-142.99 1662,-123 1638.58,-110.719 1611.08,-98.8286 1590.4,-90.3574"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1591.71,-87.1116 1581.12,-86.6019 1589.08,-93.5997 1591.71,-87.1116"/>
+</g>
+<!-- Node18&#45;&gt;Node12 -->
+<g id="edge28" class="edge"><title>Node18&#45;&gt;Node12</title>
+<path fill="none" stroke="midnightblue" d="M1776.36,-184.712C1776.8,-161.345 1774.46,-97.3976 1738,-67 1709.54,-43.2723 1480.26,-27.2332 1359.23,-20.3329"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1359.11,-16.8208 1348.93,-19.7529 1358.72,-23.8098 1359.11,-16.8208"/>
+</g>
+<!-- Node18&#45;&gt;Node13 -->
+<g id="edge32" class="edge"><title>Node18&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M1796.45,-184.932C1833.13,-169.926 1912.85,-138.967 1983,-123 2438.79,-19.2564 3013.08,-15.436 3153.8,-16.1792"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3153.88,-19.6797 3163.91,-16.2449 3153.93,-12.6799 3153.88,-19.6797"/>
+</g>
+<!-- Node18&#45;&gt;Node16 -->
+<g id="edge35" class="edge"><title>Node18&#45;&gt;Node16</title>
+<path fill="none" stroke="midnightblue" d="M1786.79,-204.195C1794.5,-212.714 1804.31,-226.067 1811.65,-237.632"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1808.76,-239.627 1816.91,-246.396 1814.76,-236.022 1808.76,-239.627"/>
+</g>
+<!-- Node18&#45;&gt;Node19 -->
+<g id="edge31" class="edge"><title>Node18&#45;&gt;Node19</title>
+<path fill="none" stroke="midnightblue" d="M1811.1,-184.975C1856.59,-173.928 1935.62,-154.735 1982.64,-143.315"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1983.56,-146.694 1992.45,-140.933 1981.91,-139.892 1983.56,-146.694"/>
+</g>
+<!-- Node18&#45;&gt;Node20 -->
+<g id="edge33" class="edge"><title>Node18&#45;&gt;Node20</title>
+<path fill="none" stroke="midnightblue" d="M1831.61,-184.988C1848.7,-182.674 1867.59,-180.417 1885,-179 2171.26,-155.699 3081.15,-138.976 3318.13,-134.94"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3318.31,-138.437 3328.25,-134.768 3318.19,-131.438 3318.31,-138.437"/>
+</g>
+<!-- Node18&#45;&gt;Node21 -->
+<g id="edge34" class="edge"><title>Node18&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M1713.92,-186.962C1594.66,-174.403 1337.16,-147.286 1244.82,-137.561"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1244.95,-134.056 1234.64,-136.49 1244.22,-141.018 1244.95,-134.056"/>
+</g>
+<!-- Node22&#45;&gt;Node11 -->
+<g id="edge39" class="edge"><title>Node22&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M1074.5,-184.763C1093.68,-169.345 1136.25,-137.566 1178,-123 1282.72,-86.4606 1412.42,-78.4169 1490.28,-77.2579"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1490.49,-80.7558 1500.45,-77.1414 1490.41,-73.7563 1490.49,-80.7558"/>
 </g>
-<!-- Node21&#45;&gt;Node25 -->
-<g id="edge57" class="edge"><title>Node21&#45;&gt;Node25</title>
-<path fill="none" stroke="midnightblue" d="M1594.45,-291.394C1595.83,-276.076 1600.04,-251.582 1612.79,-235 1623.91,-220.527 1641.12,-209.895 1656.54,-202.611"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1658.11,-205.745 1665.84,-198.504 1655.28,-199.341 1658.11,-205.745"/>
+<!-- Node22&#45;&gt;Node12 -->
+<g id="edge37" class="edge"><title>Node22&#45;&gt;Node12</title>
+<path fill="none" stroke="midnightblue" d="M1071.89,-184.791C1084.57,-170.998 1110.55,-143.582 1135,-123 1174.14,-90.0557 1223.03,-56.6409 1254.14,-36.2435"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1256.34,-38.988 1262.81,-30.5965 1252.52,-33.1229 1256.34,-38.988"/>
 </g>
-<!-- Node21&#45;&gt;Node27 -->
-<g id="edge62" class="edge"><title>Node21&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1536.94,-299.441C1425.76,-287.531 1187.07,-261.648 1149.79,-255 1126.91,-250.92 983.788,-215.15 917.461,-198.482"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="918.058,-195.023 907.506,-195.978 916.35,-201.811 918.058,-195.023"/>
+<!-- Node22&#45;&gt;Node15 -->
+<g id="edge40" class="edge"><title>Node22&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M1032.55,-184.933C953.896,-163.643 742.194,-107.157 564,-67 483.775,-48.9208 388.562,-30.9931 340.343,-22.1611"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="340.702,-18.6688 330.236,-20.3171 339.446,-25.5552 340.702,-18.6688"/>
 </g>
-<!-- Node28 -->
-<g id="node28" class="node"><title>Node28</title>
-<g id="a_node28"><a xlink:href="ndarray_8h.html" target="_top" xlink:title="A device&#45;independent managed NDArray abstraction. ">
-<polygon fill="white" stroke="black" points="1344.29,-235.5 1344.29,-254.5 1467.29,-254.5 1467.29,-235.5 1344.29,-235.5"/>
-<text text-anchor="middle" x="1405.79" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/ndarray.h</text>
+<!-- Node22&#45;&gt;Node17 -->
+<g id="edge38" class="edge"><title>Node22&#45;&gt;Node17</title>
+<path fill="none" stroke="midnightblue" d="M1125.63,-191C1359.61,-181.51 2192.77,-147.718 2452.85,-137.169"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2453.12,-140.662 2462.97,-136.759 2452.84,-133.667 2453.12,-140.662"/>
+</g>
+<!-- Node22&#45;&gt;Node21 -->
+<g id="edge41" class="edge"><title>Node22&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M1085.06,-184.975C1110.06,-174.857 1151.94,-157.905 1180.49,-146.351"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1182.02,-149.505 1189.98,-142.509 1179.39,-143.017 1182.02,-149.505"/>
+</g>
+<!-- Node27&#45;&gt;Node10 -->
+<g id="edge84" class="edge"><title>Node27&#45;&gt;Node10</title>
+<path fill="none" stroke="midnightblue" d="M1632.45,-492.435C1610.84,-458.478 1532.49,-329.35 1511,-210 1507.53,-190.726 1506.74,-168.294 1506.68,-152.822"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1510.19,-152.539 1506.76,-142.514 1503.19,-152.49 1510.19,-152.539"/>
+</g>
+<!-- Node27&#45;&gt;Node11 -->
+<g id="edge86" class="edge"><title>Node27&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M1578.42,-497.329C1513.78,-492.252 1408.03,-480.744 1320,-456 1286.8,-446.667 1058.41,-358.325 1035,-333 995.785,-290.584 1002.46,-266.986 993,-210 990.743,-196.408 985.248,-190.39 993,-179 1031.17,-122.915 1069.11,-139.171 1135,-123 1257.79,-92.8606 1405.48,-82.9072 1490.18,-79.6204"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1490.33,-83.1174 1500.19,-79.2517 1490.07,-76.1222 1490.33,-83.1174"/>
+</g>
+<!-- Node27&#45;&gt;Node12 -->
+<g id="edge82" class="edge"><title>Node27&#45;&gt;Node12</title>
+<path fill="none" stroke="midnightblue" d="M1578.26,-496.954C1481.8,-489.987 1296.18,-474.659 1233,-456 1116.06,-421.467 806.276,-236.546 791,-210 699.127,-50.3445 1052.26,-22.0466 1211.2,-17.3069"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1211.48,-20.8006 1221.38,-17.0276 1211.29,-13.8032 1211.48,-20.8006"/>
+</g>
+<!-- Node27&#45;&gt;Node13 -->
+<g id="edge88" class="edge"><title>Node27&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M1697.62,-500.613C1858.36,-499.1 2297.99,-491.719 2438,-456 2616.56,-410.448 2660.04,-381.25 2812,-277 2848.04,-252.272 2855.47,-243.119 2884,-210 2934.29,-151.624 2918.69,-110.906 2982,-67 3034.65,-30.4863 3111.07,-20.3043 3153.87,-17.5101"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3154.2,-20.9972 3163.99,-16.9474 3153.81,-14.008 3154.2,-20.9972"/>
+</g>
+<!-- Node27&#45;&gt;Node14 -->
+<g id="edge89" class="edge"><title>Node27&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M1697.63,-498.778C1844.55,-493.014 2215.82,-476.589 2268,-456 2278.1,-452.013 2565.07,-218.366 2572,-210 2593.56,-183.967 2599.75,-175.782 2608,-143 2622.44,-85.6073 2547.32,-46.9046 2500.1,-28.6232"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2501.09,-25.2544 2490.49,-25.0327 2498.64,-31.8116 2501.09,-25.2544"/>
+</g>
+<!-- Node27&#45;&gt;Node16 -->
+<g id="edge87" class="edge"><title>Node27&#45;&gt;Node16</title>
+<path fill="none" stroke="midnightblue" d="M1644.73,-492.229C1670.7,-458.386 1764.86,-335.663 1803.88,-284.81"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1806.77,-286.801 1810.08,-276.737 1801.21,-282.54 1806.77,-286.801"/>
+</g>
+<!-- Node27&#45;&gt;Node17 -->
+<g id="edge83" class="edge"><title>Node27&#45;&gt;Node17</title>
+<path fill="none" stroke="midnightblue" d="M1697.57,-498.503C1838.29,-492.316 2183.22,-475.369 2232,-456 2252.19,-447.982 2367.49,-347.12 2384,-333 2412.22,-308.868 2420.14,-303.643 2446,-277 2473.23,-248.948 2483.27,-243.753 2503,-210 2513.72,-191.654 2521.54,-168.483 2526.15,-152.577"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2529.54,-153.445 2528.82,-142.875 2522.79,-151.586 2529.54,-153.445"/>
+</g>
+<!-- Node27&#45;&gt;Node21 -->
+<g id="edge90" class="edge"><title>Node27&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M1617.38,-492.454C1578.26,-475.735 1491.4,-436.181 1427,-389 1398.35,-368.012 1393.79,-359.365 1370,-333 1311.8,-268.508 1249.29,-185.813 1223.36,-150.828"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1226.07,-148.604 1217.32,-142.639 1220.44,-152.762 1226.07,-148.604"/>
+</g>
+<!-- Node27&#45;&gt;Node22 -->
+<g id="edge85" class="edge"><title>Node27&#45;&gt;Node22</title>
+<path fill="none" stroke="midnightblue" d="M1578.35,-500.016C1522.19,-497.046 1436.93,-487.169 1370,-456 1302.16,-424.409 1133.14,-262.837 1080.15,-211.311"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1082.28,-208.498 1072.68,-204.023 1077.39,-213.51 1082.28,-208.498"/>
+</g>
+<!-- Node27&#45;&gt;Node28 -->
+<g id="edge66" class="edge"><title>Node27&#45;&gt;Node28</title>
+<path fill="none" stroke="midnightblue" d="M1697.53,-499.706C1814.32,-496.566 2081.53,-486.411 2304,-456 2305.46,-455.8 2306.94,-455.588 2308.42,-455.365"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2309.03,-458.812 2318.33,-453.747 2307.9,-451.903 2309.03,-458.812"/>
+</g>
+<!-- Node27&#45;&gt;Node30 -->
+<g id="edge76" class="edge"><title>Node27&#45;&gt;Node30</title>
+<path fill="none" stroke="midnightblue" d="M1697.51,-494.319C1797.48,-483.096 1998.38,-460.543 2102.33,-448.872"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2102.84,-452.337 2112.39,-447.743 2102.06,-445.381 2102.84,-452.337"/>
+</g>
+<!-- Node28&#45;&gt;Node7 -->
+<g id="edge67" class="edge"><title>Node28&#45;&gt;Node7</title>
+<path fill="none" stroke="midnightblue" d="M2318.3,-432.264C2234.66,-421.398 2076.74,-400.882 1985.62,-389.044"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1986.03,-385.568 1975.66,-387.75 1985.12,-392.51 1986.03,-385.568"/>
+</g>
+<!-- Node28&#45;&gt;Node13 -->
+<g id="edge75" class="edge"><title>Node28&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M2420.86,-425.465C2478.89,-407.346 2580.09,-373.309 2662,-333 2754.28,-287.59 2785.97,-283.408 2858,-210 2909.94,-157.063 2883.53,-109.943 2944,-67 2977.44,-43.2539 3095.81,-26.8188 3153.68,-20.0123"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3154.21,-23.4743 3163.74,-18.8539 3153.41,-16.5202 3154.21,-23.4743"/>
+</g>
+<!-- Node28&#45;&gt;Node17 -->
+<g id="edge74" class="edge"><title>Node28&#45;&gt;Node17</title>
+<path fill="none" stroke="midnightblue" d="M2398.85,-425.375C2438.98,-401.012 2516.88,-346.905 2550,-277 2568.66,-237.606 2564.2,-221.381 2554,-179 2551.69,-169.418 2546.98,-159.581 2542.42,-151.558"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2545.29,-149.537 2537.1,-142.809 2539.31,-153.173 2545.29,-149.537"/>
+</g>
+<!-- Node29 -->
+<g id="node29" class="node"><title>Node29</title>
+<g id="a_node29"><a xlink:href="functor_8h.html" target="_top" xlink:title="Defines the Functor data structures. ">
+<polygon fill="white" stroke="black" points="800.5,-185 800.5,-204 907.5,-204 907.5,-185 800.5,-185"/>
+<text text-anchor="middle" x="854" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/functor.h</text>
 </a>
 </g>
 </g>
-<!-- Node21&#45;&gt;Node28 -->
-<g id="edge42" class="edge"><title>Node21&#45;&gt;Node28</title>
-<path fill="none" stroke="midnightblue" d="M1549.23,-291.399C1516.75,-281.118 1473.25,-267.351 1442.7,-257.682"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1443.46,-254.252 1432.87,-254.571 1441.35,-260.925 1443.46,-254.252"/>
+<!-- Node28&#45;&gt;Node29 -->
+<g id="edge68" class="edge"><title>Node28&#45;&gt;Node29</title>
+<path fill="none" stroke="midnightblue" d="M2318.22,-428.936C2242.59,-414.725 2103.27,-388.933 1984,-369 1578.73,-301.269 1089.95,-229.621 917.758,-204.685"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="918.003,-201.184 907.605,-203.216 917.001,-208.112 918.003,-201.184"/>
+</g>
+<!-- Node29&#45;&gt;Node9 -->
+<g id="edge69" class="edge"><title>Node29&#45;&gt;Node9</title>
+<path fill="none" stroke="midnightblue" d="M849.295,-184.56C842.328,-169.946 831.564,-140.792 846,-123 922.122,-29.184 992.321,-83.522 1112,-67 1373.09,-30.9557 1688.73,-20.3834 1812.52,-17.502"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1812.93,-20.9938 1822.85,-17.2693 1812.78,-13.9956 1812.93,-20.9938"/>
+</g>
+<!-- Node29&#45;&gt;Node11 -->
+<g id="edge70" class="edge"><title>Node29&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M859.234,-184.831C869.204,-169.225 892.572,-136.746 922,-123 972.446,-99.4364 1335.96,-85.1445 1490.15,-80.0827"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1490.56,-83.5714 1500.44,-79.7484 1490.33,-76.5751 1490.56,-83.5714"/>
+</g>
+<!-- Node29&#45;&gt;Node14 -->
+<g id="edge71" class="edge"><title>Node29&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M855.635,-184.78C859.026,-169.39 868.387,-137.653 890,-123 945.512,-85.3644 1424.11,-71.8502 1491,-67 1849.03,-41.0393 2282.12,-23.4161 2419.78,-18.1478"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2420.07,-21.6394 2429.93,-17.7613 2419.8,-14.6444 2420.07,-21.6394"/>
+</g>
+<!-- Node29&#45;&gt;Node15 -->
+<g id="edge72" class="edge"><title>Node29&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M833.979,-184.889C782.584,-163.012 641.491,-104.38 520,-67 457.076,-47.6397 381.717,-31.1753 340.235,-22.6773"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="340.699,-19.2003 330.203,-20.6425 339.308,-26.0606 340.699,-19.2003"/>
+</g>
+<!-- Node29&#45;&gt;Node21 -->
+<g id="edge73" class="edge"><title>Node29&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M905.149,-184.975C979.145,-172.642 1114.07,-150.156 1176.99,-139.668"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1177.88,-143.069 1187.17,-137.972 1176.73,-136.164 1177.88,-143.069"/>
+</g>
+<!-- Node30&#45;&gt;Node7 -->
+<g id="edge77" class="edge"><title>Node30&#45;&gt;Node7</title>
+<path fill="none" stroke="midnightblue" d="M2112.39,-426.369C2067.16,-415.692 2004.13,-400.81 1961.79,-390.812"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1962.56,-387.398 1952.03,-388.506 1960.95,-394.21 1962.56,-387.398"/>
+</g>
+<!-- Node30&#45;&gt;Node13 -->
+<g id="edge81" class="edge"><title>Node30&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M2203.79,-425.408C2228.04,-415.653 2260.7,-402.112 2289,-389 2574.31,-256.789 2621.48,-168.811 2919,-67 3000.88,-38.9792 3102.52,-25.1852 3153.55,-19.6173"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3154.07,-23.0821 3163.65,-18.5519 3153.34,-16.1207 3154.07,-23.0821"/>
+</g>
+<!-- Node30&#45;&gt;Node17 -->
+<g id="edge79" class="edge"><title>Node30&#45;&gt;Node17</title>
+<path fill="none" stroke="midnightblue" d="M2192.63,-425.327C2217.6,-410.998 2257.38,-388.279 2292,-369 2321.19,-352.742 2331.96,-353.939 2358,-333 2428.74,-276.118 2493.68,-187.969 2519.37,-151.112"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2522.5,-152.738 2525.29,-142.518 2516.74,-148.766 2522.5,-152.738"/>
+</g>
+<!-- Node30&#45;&gt;Node23 -->
+<g id="edge80" class="edge"><title>Node30&#45;&gt;Node23</title>
+<path fill="none" stroke="midnightblue" d="M2147.97,-425.36C2114.43,-400.188 2048.56,-343.92 2028,-277 2023.95,-263.83 2021.64,-258.224 2028,-246 2036.69,-229.286 2053.73,-216.952 2069.05,-208.659"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2070.92,-211.636 2078.28,-204.014 2067.78,-205.384 2070.92,-211.636"/>
+</g>
+<!-- Node30&#45;&gt;Node29 -->
+<g id="edge78" class="edge"><title>Node30&#45;&gt;Node29</title>
+<path fill="none" stroke="midnightblue" d="M2112.37,-433.667C1986.35,-420.024 1669.67,-383.334 1408,-333 1305.53,-313.29 1281.28,-302.098 1180,-277 1079.16,-252.01 960.856,-222.349 898.187,-206.608"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="898.802,-203.154 888.251,-204.112 897.097,-209.943 898.802,-203.154"/>
+</g>
+<!-- Node31&#45;&gt;Node29 -->
+<g id="edge92" class="edge"><title>Node31&#45;&gt;Node29</title>
+<path fill="none" stroke="midnightblue" d="M946.259,-492.186C933.255,-450.368 877.66,-271.585 859.653,-213.678"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="862.973,-212.567 856.661,-204.058 856.288,-214.646 862.973,-212.567"/>
+</g>
+<!-- Node32 -->
+<g id="node32" class="node"><title>Node32</title>
+<polygon fill="white" stroke="#bfbfbf" points="770.5,-431 770.5,-450 829.5,-450 829.5,-431 770.5,-431"/>
+<text text-anchor="middle" x="800" y="-438" font-family="Helvetica,sans-Serif" font-size="10.00">iostream</text>
+</g>
+<!-- Node31&#45;&gt;Node32 -->
+<g id="edge93" class="edge"><title>Node31&#45;&gt;Node32</title>
+<path fill="none" stroke="midnightblue" d="M927.652,-492.475C902.314,-482.357 859.862,-465.405 830.929,-453.851"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="831.893,-450.467 821.308,-450.009 829.297,-456.968 831.893,-450.467"/>
+</g>
+<!-- Node33&#45;&gt;Node5 -->
+<g id="edge107" class="edge"><title>Node33&#45;&gt;Node5</title>
+<path fill="none" stroke="midnightblue" d="M2374.21,-664.627C2287.93,-654.9 2080.21,-631.483 1984.2,-620.66"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1984.5,-617.171 1974.17,-619.528 1983.71,-624.126 1984.5,-617.171"/>
+</g>
+<!-- Node33&#45;&gt;Node6 -->
+<g id="edge109" class="edge"><title>Node33&#45;&gt;Node6</title>
+<path fill="none" stroke="midnightblue" d="M2374.13,-661.526C2274.55,-642.375 2010.03,-591.505 1895.32,-569.447"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1895.84,-565.982 1885.36,-567.53 1894.52,-572.856 1895.84,-565.982"/>
+</g>
+<!-- Node33&#45;&gt;Node7 -->
+<g id="edge108" class="edge"><title>Node33&#45;&gt;Node7</title>
+<path fill="none" stroke="midnightblue" d="M2404.29,-660.453C2395.17,-651.459 2380.46,-636.852 2368,-624 2311.98,-566.201 2314.93,-530.054 2244,-492 2159.78,-446.818 2120.96,-490.925 2032,-456 2029.41,-454.985 1970.21,-415.898 1937.41,-394.187"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1939.2,-391.173 1928.93,-388.57 1935.33,-397.009 1939.2,-391.173"/>
+</g>
+<!-- Node33&#45;&gt;Node11 -->
+<g id="edge111" class="edge"><title>Node33&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M2417.56,-660.414C2434.78,-626.688 2492.21,-501.401 2438,-425 2366.34,-324.009 2257.48,-425.37 2175,-333 2128.25,-280.644 2179.49,-237.027 2140,-179 2115.17,-142.515 2099.54,-137.907 2058,-123 1980.71,-95.2639 1746.01,-83.9627 1628.12,-79.9408"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1627.88,-76.4311 1617.77,-79.5963 1627.65,-83.4272 1627.88,-76.4311"/>
+</g>
+<!-- Node33&#45;&gt;Node13 -->
+<g id="edge112" class="edge"><title>Node33&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M2431.65,-660.304C2459.13,-647.562 2512.22,-623.246 2558,-604 2718.29,-536.607 3262,-436.379 3262,-262.5 3262,-262.5 3262,-262.5 3262,-132 3262,-90.3123 3227.02,-52.0299 3204.52,-31.7185"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3206.73,-28.9985 3196.89,-25.0755 3202.14,-34.2796 3206.73,-28.9985"/>
+</g>
+<!-- Node33&#45;&gt;Node17 -->
+<g id="edge110" class="edge"><title>Node33&#45;&gt;Node17</title>
+<path fill="none" stroke="midnightblue" d="M2421.75,-660.391C2434.69,-647.757 2459.77,-623.574 2482,-604 2584.14,-514.08 2665.28,-520.579 2700,-389 2727.61,-284.359 2604.2,-184.742 2552.68,-148.447"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2554.45,-145.412 2544.23,-142.607 2550.47,-151.171 2554.45,-145.412"/>
+</g>
+<!-- Node34&#45;&gt;Node5 -->
+<g id="edge130" class="edge"><title>Node34&#45;&gt;Node5</title>
+<path fill="none" stroke="midnightblue" d="M1520.92,-940.346C1502.56,-928.597 1475.25,-906.475 1486,-884 1554.49,-740.867 1622.42,-731.65 1764,-660 1801.93,-640.802 1848.9,-629.175 1883.85,-622.563"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1884.61,-625.981 1893.83,-620.749 1883.36,-619.094 1884.61,-625.981"/>
+</g>
+<!-- Node34&#45;&gt;Node6 -->
+<g id="edge131" class="edge"><title>Node34&#45;&gt;Node6</title>
+<path fill="none" stroke="midnightblue" d="M1487.1,-941.962C1431.39,-930.861 1348,-903.475 1348,-839 1348,-839 1348,-839 1348,-669 1348,-581.056 1650.62,-563.394 1781.67,-559.869"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1782.02,-563.361 1791.93,-559.612 1781.84,-556.363 1782.02,-563.361"/>
+</g>
+<!-- Node34&#45;&gt;Node13 -->
+<g id="edge155" class="edge"><title>Node34&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M1584.68,-941.009C1587.83,-940.627 1590.96,-940.285 1594,-940 2076.59,-894.755 2199.78,-925.842 2684,-904 2738.42,-901.545 3614.25,-872.324 3663,-848 3696.86,-831.103 3718,-820.843 3718,-783 3718,-783 3718,-783 3718,-132 3718,-98.3101 3707.43,-85.073 3679,-67 3602.1,-18.1192 3314.96,-15.5543 3218.12,-16.1253"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3218.03,-12.6258 3208.06,-16.2004 3218.08,-19.6256 3218.03,-12.6258"/>
+</g>
+<!-- Node34&#45;&gt;Node21 -->
+<g id="edge156" class="edge"><title>Node34&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M1495.51,-940.426C1362.78,-909.913 939.567,-793.022 769,-512 664.257,-339.428 988.252,-181.651 993,-179 1052.2,-145.955 1132.64,-137.068 1177.41,-134.747"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1177.62,-138.241 1187.46,-134.306 1177.31,-131.248 1177.62,-138.241"/>
 </g>
-<!-- Node21&#45;&gt;Node31 -->
-<g id="edge55" class="edge"><title>Node21&#45;&gt;Node31</title>
-<path fill="none" stroke="midnightblue" d="M1650.44,-297.66C1738,-285.544 1904.18,-262.55 1981.84,-251.805"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1982.76,-255.21 1992.19,-250.372 1981.8,-248.276 1982.76,-255.21"/>
+<!-- Node35 -->
+<g id="node35" class="node"><title>Node35</title>
+<g id="a_node35"><a xlink:href="tir_2expr_8h.html" target="_top" xlink:title="TIR expressions. ">
+<polygon fill="white" stroke="black" points="1609,-884.5 1609,-903.5 1689,-903.5 1689,-884.5 1609,-884.5"/>
+<text text-anchor="middle" x="1649" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/tir/expr.h</text>
+</a>
 </g>
-<!-- Node21&#45;&gt;Node32 -->
-<g id="edge56" class="edge"><title>Node21&#45;&gt;Node32</title>
-<path fill="none" stroke="midnightblue" d="M1650.58,-301.823C1824.72,-290.548 2347.45,-256.705 2481.29,-248.039"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2481.89,-251.508 2491.64,-247.369 2481.44,-244.522 2481.89,-251.508"/>
 </g>
-<!-- Node33 -->
-<g id="node33" class="node"><title>Node33</title>
-<polygon fill="white" stroke="#bfbfbf" points="1524.29,-235.5 1524.29,-254.5 1565.29,-254.5 1565.29,-235.5 1524.29,-235.5"/>
-<text text-anchor="middle" x="1544.79" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tuple</text>
+<!-- Node34&#45;&gt;Node35 -->
+<g id="edge132" class="edge"><title>Node34&#45;&gt;Node35</title>
+<path fill="none" stroke="midnightblue" d="M1553.91,-940.444C1572.25,-931.675 1601.01,-917.935 1622.09,-907.858"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1623.67,-910.986 1631.18,-903.516 1620.65,-904.67 1623.67,-910.986"/>
+</g>
+<!-- Node35&#45;&gt;Node4 -->
+<g id="edge133" class="edge"><title>Node35&#45;&gt;Node4</title>
+<path fill="none" stroke="midnightblue" d="M1671.33,-884.393C1726.5,-863.325 1873.94,-808.243 2000,-772 2049.06,-757.895 2106.06,-745.091 2145.53,-736.78"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2146.34,-740.185 2155.42,-734.713 2144.91,-733.333 2146.34,-740.185"/>
+</g>
+<!-- Node35&#45;&gt;Node6 -->
+<g id="edge136" class="edge"><title>Node35&#45;&gt;Node6</title>
+<path fill="none" stroke="midnightblue" d="M1650.96,-884.496C1655.03,-866.095 1664,-821.162 1664,-783 1664,-783 1664,-783 1664,-669 1664,-611.898 1731.28,-583.394 1782.88,-569.931"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1783.77,-573.315 1792.63,-567.511 1782.09,-566.52 1783.77,-573.315"/>
+</g>
+<!-- Node35&#45;&gt;Node7 -->
+<g id="edge134" class="edge"><title>Node35&#45;&gt;Node7</title>
+<path fill="none" stroke="midnightblue" d="M1640.26,-884.493C1623.39,-867.117 1588,-825.582 1588,-783 1588,-783 1588,-783 1588,-725 1588,-635.045 1825.17,-448.609 1896.16,-394.823"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1898.45,-397.482 1904.33,-388.668 1894.23,-391.893 1898.45,-397.482"/>
+</g>
+<!-- Node35&#45;&gt;Node12 -->
+<g id="edge137" class="edge"><title>Node35&#45;&gt;Node12</title>
+<path fill="none" stroke="midnightblue" d="M1609.94,-884.469C1426.48,-843.817 651.444,-665.389 462,-512 341.088,-414.1 325.757,-360.143 285,-210 235.303,-26.9203 971.366,-14.8033 1210.97,-15.6776"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1211.3,-19.1791 1221.32,-15.7247 1211.34,-12.1792 1211.3,-19.1791"/>
+</g>
+<!-- Node35&#45;&gt;Node13 -->
+<g id="edge152" class="edge"><title>Node35&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M1689.19,-892.392C1947.29,-888.433 3362.51,-865.935 3403,-848 3616.55,-753.42 3642,-613.553 3642,-380 3642,-380 3642,-380 3642,-132 3642,-98.3101 3631.26,-85.3344 3603,-67 3539.5,-25.8072 3304.78,-18.2142 3218.28,-16.8155"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3218.3,-13.3156 3208.25,-16.6708 3218.2,-20.3148 3218.3,-13.3156"/>
+</g>
+<!-- Node35&#45;&gt;Node15 -->
+<g id="edge154" class="edge"><title>Node35&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M1608.7,-893.581C1427.53,-894.088 678.297,-873.43 242,-512 97.7769,-392.525 45.1513,-307.011 80,-123 84.9758,-96.7264 81.8588,-84.5896 102,-67 151.935,-23.3907 233.408,-16.0909 277.786,-15.6348"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="277.964,-19.1349 287.968,-15.6451 277.971,-12.1349 277.964,-19.1349"/>
+</g>
+<!-- Node35&#45;&gt;Node17 -->
+<g id="edge138" class="edge"><title>Node35&#45;&gt;Node17</title>
+<path fill="none" stroke="midnightblue" d="M1689.1,-891.474C1882.94,-883.345 2721.44,-839.325 2917,-680 3078.11,-548.738 3257.26,-370.671 3091,-246 3015.82,-189.624 2744.93,-155.328 2609.38,-141.324"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2609.38,-137.805 2599.07,-140.271 2608.67,-144.769 2609.38,-137.805"/>
+</g>
+<!-- Node35&#45;&gt;Node20 -->
+<g id="edge153" class="edge"><title>Node35&#45;&gt;Node20</title>
+<path fill="none" stroke="midnightblue" d="M1689.33,-892.723C1946.79,-890.865 3350.5,-879.306 3381,-848 3480.13,-746.266 3396.97,-254.503 3378.45,-152.534"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3381.86,-151.729 3376.61,-142.526 3374.98,-152.994 3381.86,-151.729"/>
+</g>
+<!-- Node35&#45;&gt;Node24 -->
+<g id="edge151" class="edge"><title>Node35&#45;&gt;Node24</title>
+<path fill="none" stroke="midnightblue" d="M1618.99,-884.44C1592.04,-876.342 1551.64,-863.189 1518,-848 1409.88,-799.184 1393.63,-765.894 1286,-716 1109.86,-634.346 1052.73,-646.151 875,-568 826.226,-546.552 815.06,-538.784 769,-512 681.07,-460.867 642.14,-466.277 576,-389 529.86,-335.091 507.033,-251.151 498.76,-214.123"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="502.157,-213.273 496.65,-204.223 495.311,-214.732 502.157,-213.273"/>
+</g>
+<!-- Node35&#45;&gt;Node26 -->
+<g id="edge149" class="edge"><title>Node35&#45;&gt;Node26</title>
+<path fill="none" stroke="midnightblue" d="M1689.01,-892.051C1932.67,-886.082 3208.25,-852.025 3263,-792 3412.07,-628.569 3139.55,-347.169 3067.7,-278.13"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3069.98,-275.47 3060.32,-271.114 3065.16,-280.542 3069.98,-275.47"/>
+</g>
+<!-- Node35&#45;&gt;Node29 -->
+<g id="edge135" class="edge"><title>Node35&#45;&gt;Node29</title>
+<path fill="none" stroke="midnightblue" d="M1630.27,-884.427C1611.35,-875.65 1581.36,-861.429 1556,-848 1364.19,-746.445 1334.48,-684.686 1133,-604 1059.94,-574.741 852.196,-561.487 791,-512 697.929,-436.737 804.076,-266.668 841.752,-212.447"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="844.638,-214.427 847.551,-204.241 838.921,-210.387 844.638,-214.427"/>
+</g>
+<!-- Node35&#45;&gt;Node32 -->
+<g id="edge150" class="edge"><title>Node35&#45;&gt;Node32</title>
+<path fill="none" stroke="midnightblue" d="M1627.53,-884.378C1611.08,-876.853 1588.76,-864.542 1574,-848 1531.1,-799.914 1562.03,-758.97 1514,-716 1330.16,-551.515 1224.35,-607.688 985,-548 905.417,-528.154 857.809,-573.902 804,-512 791.833,-498.003 792.649,-475.929 795.353,-460.213"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="798.847,-460.607 797.496,-450.098 791.999,-459.155 798.847,-460.607"/>
 </g>
-<!-- Node21&#45;&gt;Node33 -->
-<g id="edge59" class="edge"><title>Node21&#45;&gt;Node33</title>
-<path fill="none" stroke="midnightblue" d="M1582.17,-291.399C1575.05,-282.753 1565.9,-271.642 1558.44,-262.576"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1560.98,-260.152 1551.92,-254.658 1555.57,-264.602 1560.98,-260.152"/>
+<!-- Node36 -->
+<g id="node36" class="node"><title>Node36</title>
+<g id="a_node36"><a xlink:href="buffer_8h.html" target="_top" xlink:title="Symbolic n&#45;dimensional array, to represent a memory buffer. ">
+<polygon fill="white" stroke="black" points="1948.5,-828.5 1948.5,-847.5 2035.5,-847.5 2035.5,-828.5 1948.5,-828.5"/>
+<text text-anchor="middle" x="1992" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/tir/buffer.h</text>
+</a>
 </g>
-<!-- Node22&#45;&gt;Node9 -->
-<g id="edge28" class="edge"><title>Node22&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M370.7,-179.473C439.679,-166.736 574.191,-142.188 688.787,-123 783.571,-107.129 894.276,-90.1604 958.375,-80.4892"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="959.269,-83.894 968.636,-78.9432 958.226,-76.9721 959.269,-83.894"/>
 </g>
-<!-- Node22&#45;&gt;Node12 -->
-<g id="edge29" class="edge"><title>Node22&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M393.206,-181.831C613.665,-161.954 1304.29,-99.684 1532.08,-79.1454"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1532.61,-82.6122 1542.25,-78.2283 1531.98,-75.6405 1532.61,-82.6122"/>
+<!-- Node35&#45;&gt;Node36 -->
+<g id="edge139" class="edge"><title>Node35&#45;&gt;Node36</title>
+<path fill="none" stroke="midnightblue" d="M1689.02,-886.7C1750.71,-876.988 1869.12,-858.346 1938.23,-847.465"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1939.13,-850.866 1948.47,-845.853 1938.05,-843.951 1939.13,-850.866"/>
 </g>
-<!-- Node22&#45;&gt;Node16 -->
-<g id="edge30" class="edge"><title>Node22&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M393.037,-185.962C545.9,-181.113 927.35,-167.433 1245.79,-143 1330.89,-136.47 1351.66,-129.166 1436.79,-123 1921.42,-87.8968 2513.39,-75.6174 2657.19,-73.0462"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2657.57,-76.5402 2667.51,-72.8648 2657.45,-69.5413 2657.57,-76.5402"/>
+<!-- Node37 -->
+<g id="node37" class="node"><title>Node37</title>
+<g id="a_node37"><a xlink:href="var_8h.html" target="_top" xlink:title="Variables in the TIR. ">
+<polygon fill="white" stroke="black" points="2027,-772.5 2027,-791.5 2101,-791.5 2101,-772.5 2027,-772.5"/>
+<text text-anchor="middle" x="2064" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/tir/var.h</text>
+</a>
 </g>
-<!-- Node22&#45;&gt;Node17 -->
-<g id="edge31" class="edge"><title>Node22&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M332.002,-179.319C347.917,-160.172 386.256,-114.044 406.964,-89.1306"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="409.787,-91.2096 413.487,-81.282 404.404,-86.7352 409.787,-91.2096"/>
-</g>
-<!-- Node23&#45;&gt;Node10 -->
-<g id="edge35" class="edge"><title>Node23&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M1726.57,-235.444C1773.97,-225.964 1850.41,-210.675 1901.37,-200.483"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1902.09,-203.91 1911.2,-198.516 1900.71,-197.046 1902.09,-203.91"/>
-</g>
-<!-- Node23&#45;&gt;Node11 -->
-<g id="edge36" class="edge"><title>Node23&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1628.07,-235.48C1576.24,-227.244 1496.98,-213.857 1428.79,-199 1353.92,-182.69 1267.64,-159.199 1218.52,-145.377"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1219.19,-141.931 1208.62,-142.58 1217.29,-148.667 1219.19,-141.931"/>
-</g>
-<!-- Node23&#45;&gt;Node12 -->
-<g id="edge34" class="edge"><title>Node23&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1703.08,-235.48C1717.22,-228.081 1735.34,-215.887 1743.79,-199 1747.76,-191.05 1746.55,-187.449 1743.79,-179 1734.2,-149.681 1726.19,-143.093 1702.79,-123 1687.71,-110.061 1668.76,-99.263 1651.62,-91.0174"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1652.86,-87.7349 1642.31,-86.7017 1649.91,-94.0849 1652.86,-87.7349"/>
-</g>
-<!-- Node23&#45;&gt;Node16 -->
-<g id="edge38" class="edge"><title>Node23&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M1705.27,-235.427C1741.08,-221.479 1815.48,-193.932 1880.79,-179 2178.15,-111.004 2547.64,-82.046 2657.53,-74.5613"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2657.89,-78.0452 2667.64,-73.8844 2657.43,-71.0609 2657.89,-78.0452"/>
-</g>
-<!-- Node23&#45;&gt;Node21 -->
-<g id="edge41" class="edge"><title>Node23&#45;&gt;Node21</title>
-<path fill="none" stroke="midnightblue" d="M1675.62,-254.658C1664.98,-262.859 1646.4,-275.462 1629.55,-286.069"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1627.61,-283.155 1620.96,-291.399 1631.3,-289.105 1627.61,-283.155"/>
 </g>
-<!-- Node24 -->
-<g id="node24" class="node"><title>Node24</title>
-<polygon fill="white" stroke="#bfbfbf" points="1633.79,-123.5 1633.79,-142.5 1693.79,-142.5 1693.79,-123.5 1633.79,-123.5"/>
-<text text-anchor="middle" x="1663.79" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/io.h</text>
-</g>
-<!-- Node23&#45;&gt;Node24 -->
-<g id="edge33" class="edge"><title>Node23&#45;&gt;Node24</title>
-<path fill="none" stroke="midnightblue" d="M1696.95,-235.366C1713.61,-223.284 1738.9,-200.406 1727.79,-179 1720.63,-165.226 1707.12,-154.783 1694.34,-147.441"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1695.74,-144.225 1685.27,-142.64 1692.47,-150.412 1695.74,-144.225"/>
-</g>
-<!-- Node23&#45;&gt;Node25 -->
-<g id="edge37" class="edge"><title>Node23&#45;&gt;Node25</title>
-<path fill="none" stroke="midnightblue" d="M1684.94,-235.083C1685.87,-227.927 1687.2,-217.635 1688.36,-208.691"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1691.84,-209.118 1689.65,-198.751 1684.9,-208.218 1691.84,-209.118"/>
-</g>
-<!-- Node23&#45;&gt;Node26 -->
-<g id="edge39" class="edge"><title>Node23&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M1745.86,-239.897C1899.51,-229.742 2295.77,-203.551 2443.84,-193.764"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2444.32,-197.24 2454.07,-193.088 2443.86,-190.255 2444.32,-197.24"/>
-</g>
-<!-- Node23&#45;&gt;Node27 -->
-<g id="edge40" class="edge"><title>Node23&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1621.55,-238.728C1605.96,-237.457 1589.27,-236.138 1573.79,-235 1321.68,-216.467 1017.46,-197.975 917.436,-191.997"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="917.519,-188.496 907.328,-191.394 917.102,-195.483 917.519,-188.496"/>
-</g>
-<!-- Node28&#45;&gt;Node11 -->
-<g id="edge45" class="edge"><title>Node28&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1388.02,-235.373C1362.36,-222.918 1313.44,-199.179 1271.79,-179 1249.52,-168.212 1224.24,-155.983 1205.67,-146.999"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1207.14,-143.825 1196.62,-142.622 1204.1,-150.126 1207.14,-143.825"/>
-</g>
-<!-- Node28&#45;&gt;Node12 -->
-<g id="edge43" class="edge"><title>Node28&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1462.97,-235.443C1506.3,-227.808 1560.98,-215.318 1576.79,-199 1603.22,-171.71 1607.41,-125.489 1607.2,-97.1156"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1610.69,-96.7474 1606.92,-86.8457 1603.69,-96.9367 1610.69,-96.7474"/>
-</g>
-<!-- Node28&#45;&gt;Node18 -->
-<g id="edge52" class="edge"><title>Node28&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1448.87,-235.429C1488.04,-227.278 1547.26,-214.051 1597.79,-199 1622.71,-191.575 1628.01,-186.925 1652.79,-179 1741.52,-150.615 1764.5,-145.962 1854.79,-123 1921.08,-106.14 1999.31,-88.5825 2041.7,-79.263"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2042.65,-82.6367 2051.67,-77.0766 2041.15,-75.7991 2042.65,-82.6367"/>
-</g>
-<!-- Node28&#45;&gt;Node19 -->
-<g id="edge51" class="edge"><title>Node28&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1398.35,-235.26C1375.2,-208.076 1304.23,-124.708 1273.84,-89.0059"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1276.19,-86.365 1267.04,-81.0194 1270.86,-90.9027 1276.19,-86.365"/>
-</g>
-<!-- Node28&#45;&gt;Node22 -->
-<g id="edge44" class="edge"><title>Node28&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M1344.18,-240.922C1159.18,-231.681 608.67,-204.181 403.242,-193.919"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="403.299,-190.418 393.137,-193.414 402.95,-197.409 403.299,-190.418"/>
-</g>
-<!-- Node28&#45;&gt;Node27 -->
-<g id="edge53" class="edge"><title>Node28&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1344.11,-237.62C1233.14,-226.14 1003.36,-202.369 917.298,-193.467"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="917.606,-189.98 907.299,-192.432 916.886,-196.943 917.606,-189.98"/>
+<!-- Node35&#45;&gt;Node37 -->
+<g id="edge148" class="edge"><title>Node35&#45;&gt;Node37</title>
+<path fill="none" stroke="midnightblue" d="M1689.14,-893.804C1778.62,-894.767 1990.76,-892.196 2044,-848 2057.46,-836.822 2062.04,-816.799 2063.51,-801.919"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2067.01,-801.968 2064.12,-791.776 2060.03,-801.547 2067.01,-801.968"/>
 </g>
-<!-- Node29 -->
-<g id="node29" class="node"><title>Node29</title>
-<g id="a_node29"><a xlink:href="serializer_8h.html" target="_top" xlink:title="Serializer extension to support TVM data types Include this file to enable serialization of DLDataTyp...">
-<polygon fill="white" stroke="black" points="1437.79,-179.5 1437.79,-198.5 1567.79,-198.5 1567.79,-179.5 1437.79,-179.5"/>
-<text text-anchor="middle" x="1502.79" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/serializer.h</text>
-</a>
+<!-- Node36&#45;&gt;Node4 -->
+<g id="edge140" class="edge"><title>Node36&#45;&gt;Node4</title>
+<path fill="none" stroke="midnightblue" d="M1992.96,-828.423C1994.98,-814.468 2001.01,-786.912 2018,-772 2053.14,-741.159 2106.61,-730.947 2145.39,-727.814"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2145.67,-731.303 2155.41,-727.134 2145.19,-724.319 2145.67,-731.303"/>
 </g>
+<!-- Node36&#45;&gt;Node7 -->
+<g id="edge141" class="edge"><title>Node36&#45;&gt;Node7</title>
+<path fill="none" stroke="midnightblue" d="M1992.44,-828.458C1993.85,-797.819 1997.4,-690.657 1983,-604 1969.98,-525.644 1937.72,-436.196 1923.24,-398.396"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1926.38,-396.829 1919.5,-388.772 1919.86,-399.361 1926.38,-396.829"/>
 </g>
-<!-- Node28&#45;&gt;Node29 -->
-<g id="edge46" class="edge"><title>Node28&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M1416.26,-235.324C1429.94,-226.664 1453.78,-213.242 1473.09,-203.249"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1474.8,-206.304 1482.13,-198.655 1471.63,-200.063 1474.8,-206.304"/>
+<!-- Node36&#45;&gt;Node13 -->
+<g id="edge147" class="edge"><title>Node36&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M2035.66,-836.547C2207.17,-834.547 2834.94,-825.075 3031,-792 3116.55,-777.568 3144.79,-782.558 3218,-736 3338.54,-659.339 3566,-338.354 3566,-195.5 3566,-195.5 3566,-195.5 3566,-132 3566,-97.8442 3553.61,-85.6601 3525,-67 3474.77,-34.2339 3293.44,-21.7573 3218.63,-17.9337"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3218.55,-14.4258 3208.39,-17.431 3218.21,-21.4174 3218.55,-14.4258"/>
 </g>
-<!-- Node29&#45;&gt;Node12 -->
-<g id="edge49" class="edge"><title>Node29&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1512.27,-179.34C1521.8,-170.495 1536.76,-156.223 1548.79,-143 1562.91,-127.477 1577.78,-109 1588.79,-94.857"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1591.77,-96.7305 1595.11,-86.676 1586.23,-92.4527 1591.77,-96.7305"/>
+<!-- Node36&#45;&gt;Node37 -->
+<g id="edge142" class="edge"><title>Node36&#45;&gt;Node37</title>
+<path fill="none" stroke="midnightblue" d="M2003.57,-828.324C2014.42,-820.185 2030.88,-807.839 2043.88,-798.087"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2046.32,-800.634 2052.22,-791.834 2042.12,-795.034 2046.32,-800.634"/>
 </g>
-<!-- Node29&#45;&gt;Node24 -->
-<g id="edge47" class="edge"><title>Node29&#45;&gt;Node24</title>
-<path fill="none" stroke="midnightblue" d="M1528.3,-179.444C1555.38,-170.359 1598.38,-155.939 1628.66,-145.783"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1630.03,-149.015 1638.4,-142.516 1627.8,-142.378 1630.03,-149.015"/>
+<!-- Node37&#45;&gt;Node4 -->
+<g id="edge143" class="edge"><title>Node37&#45;&gt;Node4</title>
+<path fill="none" stroke="midnightblue" d="M2084.6,-772.444C2105.99,-763.557 2139.68,-749.563 2164.02,-739.451"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2165.61,-742.585 2173.5,-735.516 2162.92,-736.12 2165.61,-742.585"/>
 </g>
-<!-- Node29&#45;&gt;Node28 -->
-<g id="edge50" class="edge"><title>Node29&#45;&gt;Node28</title>
-<path fill="none" stroke="midnightblue" d="M1492.35,-198.655C1478.69,-207.307 1454.84,-220.727 1435.54,-230.726"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1433.82,-227.674 1426.49,-235.324 1436.99,-233.915 1433.82,-227.674"/>
+<!-- Node37&#45;&gt;Node6 -->
+<g id="edge144" class="edge"><title>Node37&#45;&gt;Node6</title>
+<path fill="none" stroke="midnightblue" d="M2047.28,-772.425C2009.04,-751.977 1914.5,-696.59 1863,-624 1853.2,-610.184 1847.5,-591.663 1844.37,-577.926"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1847.72,-576.831 1842.31,-567.721 1840.85,-578.216 1847.72,-576.831"/>
 </g>
-<!-- Node30 -->
-<g id="node30" class="node"><title>Node30</title>
-<polygon fill="white" stroke="#bfbfbf" points="1445.79,-123.5 1445.79,-142.5 1539.79,-142.5 1539.79,-123.5 1445.79,-123.5"/>
-<text text-anchor="middle" x="1492.79" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/serializer.h</text>
-</g>
-<!-- Node29&#45;&gt;Node30 -->
-<g id="edge48" class="edge"><title>Node29&#45;&gt;Node30</title>
-<path fill="none" stroke="midnightblue" d="M1501.14,-179.083C1499.81,-171.927 1497.9,-161.635 1496.25,-152.691"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1499.67,-151.947 1494.41,-142.751 1492.79,-153.221 1499.67,-151.947"/>
-</g>
-<!-- Node37&#45;&gt;Node10 -->
-<g id="edge99" class="edge"><title>Node37&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M966.594,-537.913C969.701,-537.582 972.779,-537.275 975.787,-537 1205.74,-515.965 1832.03,-581.391 2009.79,-434 2081.96,-374.156 2133.8,-311.638 2079.79,-235 2067.43,-217.461 2047.58,-206.721 2027.26,-200.156"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2028.18,-196.778 2017.6,-197.34 2026.22,-203.498 2028.18,-196.778"/>
-</g>
-<!-- Node37&#45;&gt;Node11 -->
-<g id="edge101" class="edge"><title>Node37&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M895.304,-537.337C839.173,-494.503 597.97,-304.638 638.787,-235 664.545,-191.054 690.217,-194.355 738.787,-179 806.1,-157.719 1003.72,-143.793 1109.72,-137.635"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1110.22,-141.113 1120,-137.046 1109.81,-134.124 1110.22,-141.113"/>
-</g>
-<!-- Node37&#45;&gt;Node12 -->
-<g id="edge97" class="edge"><title>Node37&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M914.358,-537.408C944.409,-503.586 1058.98,-377.266 1168.79,-291 1279.33,-204.155 1308.72,-180.984 1436.79,-123 1467.87,-108.925 1503.92,-97.5341 1534.72,-89.1581"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1535.76,-92.5029 1544.52,-86.545 1533.96,-85.7391 1535.76,-92.5029"/>
-</g>
-<!-- Node37&#45;&gt;Node16 -->
-<g id="edge103" class="edge"><title>Node37&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M966.59,-537.86C969.697,-537.544 972.777,-537.254 975.787,-537 1182.98,-519.535 1707.2,-543.296 1910.79,-501 2058.34,-470.344 2094.75,-450.665 2226.79,-378 2341.72,-314.748 2336.48,-253.017 2444.79,-179 2514.68,-131.239 2609.45,-97.4461 2658.09,-81.9815"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2659.25,-85.2872 2667.75,-78.9612 2657.16,-78.6064 2659.25,-85.2872"/>
+<!-- Node37&#45;&gt;Node13 -->
+<g id="edge146" class="edge"><title>Node37&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M2101.33,-774.001C2307.73,-734.269 3300,-529.377 3300,-262.5 3300,-262.5 3300,-262.5 3300,-132 3300,-83.1978 3247.81,-47.5591 3214.05,-29.6129"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3215.58,-26.4611 3205.08,-25.024 3212.39,-32.6934 3215.58,-26.4611"/>
 </g>
 <!-- Node37&#45;&gt;Node17 -->
-<g id="edge104" class="edge"><title>Node37&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M847.097,-544.818C789.306,-541.744 700.323,-531.828 629.787,-501 604.998,-490.166 259.243,-223.508 247.787,-199 219.352,-138.175 316.965,-100.246 377.053,-83.1562"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="378,-86.5258 386.711,-80.4955 376.141,-79.7772 378,-86.5258"/>
-</g>
-<!-- Node37&#45;&gt;Node21 -->
-<g id="edge102" class="edge"><title>Node37&#45;&gt;Node21</title>
-<path fill="none" stroke="midnightblue" d="M931.643,-537.371C1031.74,-502.622 1406.45,-372.538 1543.32,-325.02"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1544.84,-328.196 1553.14,-321.61 1542.55,-321.583 1544.84,-328.196"/>
-</g>
-<!-- Node37&#45;&gt;Node22 -->
-<g id="edge98" class="edge"><title>Node37&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M847.258,-542.997C797.719,-538.592 726.403,-527.736 669.787,-501 661.547,-497.109 425.631,-295.637 417.787,-291 379.989,-268.657 350.817,-291.074 325.787,-255 316.547,-241.684 317.359,-222.853 319.853,-208.885"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="323.314,-209.443 322.054,-198.923 316.479,-207.933 323.314,-209.443"/>
-</g>
-<!-- Node37&#45;&gt;Node27 -->
-<g id="edge105" class="edge"><title>Node37&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M910.343,-537.365C918.086,-517.754 935.787,-468.204 935.787,-425 935.787,-425 935.787,-425 935.787,-367 935.787,-306.572 907.542,-239.074 892.685,-207.75"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="895.743,-206.036 888.22,-198.576 889.449,-209.099 895.743,-206.036"/>
-</g>
-<!-- Node37&#45;&gt;Node28 -->
-<g id="edge100" class="edge"><title>Node37&#45;&gt;Node28</title>
-<path fill="none" stroke="midnightblue" d="M924.862,-537.443C941.755,-529.107 967.366,-515.588 987.787,-501 1101.22,-419.963 1097.52,-356.125 1220.79,-291 1255.63,-272.589 1298.15,-261.566 1333.63,-255.044"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1334.68,-258.414 1343.92,-253.241 1333.47,-251.519 1334.68,-258.414"/>
-</g>
-<!-- Node37&#45;&gt;Node38 -->
-<g id="edge81" class="edge"><title>Node37&#45;&gt;Node38</title>
-<path fill="none" stroke="midnightblue" d="M882.143,-537.475C856.889,-528.739 816.905,-514.907 784.956,-503.855"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="785.918,-500.485 775.324,-500.523 783.63,-507.1 785.918,-500.485"/>
-</g>
-<!-- Node37&#45;&gt;Node40 -->
-<g id="edge91" class="edge"><title>Node37&#45;&gt;Node40</title>
-<path fill="none" stroke="midnightblue" d="M966.605,-538.018C969.708,-537.66 972.783,-537.318 975.787,-537 1176.4,-515.733 1414.47,-498.541 1527.65,-490.854"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1528.14,-494.329 1537.88,-490.162 1527.67,-487.345 1528.14,-494.329"/>
-</g>
-<!-- Node38&#45;&gt;Node7 -->
-<g id="edge82" class="edge"><title>Node38&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M790.582,-481.75C988.084,-472.013 1653.85,-439.194 1871.96,-428.442"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1872.19,-431.935 1882,-427.947 1871.84,-424.944 1872.19,-431.935"/>
-</g>
-<!-- Node38&#45;&gt;Node16 -->
-<g id="edge90" class="edge"><title>Node38&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M790.436,-479.16C953.138,-462.938 1441.56,-409.902 1838.79,-322 1940.66,-299.456 1964.4,-286.776 2063.79,-255 2150.14,-227.392 2362.38,-147.045 2449.79,-123 2523.3,-102.779 2611.38,-86.1397 2657.7,-77.9639"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2658.48,-81.3794 2667.73,-76.2098 2657.28,-74.484 2658.48,-81.3794"/>
-</g>
-<!-- Node38&#45;&gt;Node22 -->
-<g id="edge89" class="edge"><title>Node38&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M712.11,-470.441C696.208,-460.476 674.528,-446.678 655.787,-434 565.277,-372.774 553.661,-339.592 455.787,-291 407.436,-266.995 376.517,-294.559 339.787,-255 328.346,-242.678 325.057,-223.425 324.354,-209.067"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="327.851,-208.787 324.238,-198.827 320.852,-208.866 327.851,-208.787"/>
+<g id="edge145" class="edge"><title>Node37&#45;&gt;Node17</title>
+<path fill="none" stroke="midnightblue" d="M2101.18,-773.564C2137.39,-765.853 2193.73,-752.602 2241,-736 2261.27,-728.881 2264.57,-722.65 2285,-716 2360.51,-691.417 2385.71,-708.048 2460,-680 2647.73,-609.122 2710.34,-598.117 2852,-456 2881.79,-426.116 2909.31,-406.518 2890,-369 2823.4,-239.579 2649.33,-170.819 2570.64,-145.516"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2571.67,-142.172 2561.08,-142.507 2569.57,-148.849 2571.67,-142.172"/>
+</g>
+<!-- Node38&#45;&gt;Node2 -->
+<g id="edge158" class="edge"><title>Node38&#45;&gt;Node2</title>
+<path fill="none" stroke="midnightblue" d="M2676.02,-1059.56C2792.92,-1055.59 3089.82,-1042.95 3125,-1016 3149.44,-997.27 3149,-981.795 3149,-951 3149,-951 3149,-951 3149,-893 3149,-836.559 3081.49,-807.37 3032.58,-793.628"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3033.33,-790.205 3022.76,-791.004 3031.52,-796.968 3033.33,-790.205"/>
+</g>
+<!-- Node38&#45;&gt;Node4 -->
+<g id="edge159" class="edge"><title>Node38&#45;&gt;Node4</title>
+<path fill="none" stroke="midnightblue" d="M2581.73,-1059.72C2463.98,-1055.26 2167,-1035.61 2167,-951 2167,-951 2167,-951 2167,-837 2167,-803.861 2178.7,-766.682 2186.7,-745.144"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2190.02,-746.252 2190.36,-735.662 2183.49,-743.73 2190.02,-746.252"/>
+</g>
+<!-- Node38&#45;&gt;Node13 -->
+<g id="edge206" class="edge"><title>Node38&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M2676.16,-1060.39C2898.58,-1056.29 3832,-1024.69 3832,-783 3832,-783 3832,-783 3832,-132 3832,-98.3101 3821.6,-84.8011 3793,-67 3744.03,-36.5223 3337.6,-21.313 3218.61,-17.485"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3218.43,-13.9777 3208.33,-17.1596 3218.21,-20.9742 3218.43,-13.9777"/>
+</g>
+<!-- Node38&#45;&gt;Node23 -->
+<g id="edge205" class="edge"><title>Node38&#45;&gt;Node23</title>
+<path fill="none" stroke="midnightblue" d="M2633.17,-1052.42C2644.2,-1029.21 2673.98,-962.937 2684,-904 2710.65,-747.308 2736.17,-681.559 2650,-548 2519.08,-345.078 2345.22,-476.505 2151,-333 2126.61,-314.976 2123.17,-305.197 2112,-277 2103.95,-256.69 2101.24,-231.601 2100.35,-214.667"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2103.84,-214.276 2099.99,-204.405 2096.85,-214.522 2103.84,-214.276"/>
+</g>
+<!-- Node38&#45;&gt;Node34 -->
+<g id="edge207" class="edge"><title>Node38&#45;&gt;Node34</title>
+<path fill="none" stroke="midnightblue" d="M2581.72,-1061.21C2414.09,-1061.57 1848.87,-1059.47 1674,-1016 1630.74,-1005.25 1584.7,-980.532 1558.25,-964.865"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1559.8,-961.713 1549.43,-959.545 1556.18,-967.707 1559.8,-961.713"/>
 </g>
 <!-- Node39 -->
 <g id="node39" class="node"><title>Node39</title>
-<g id="a_node39"><a xlink:href="functor_8h.html" target="_top" xlink:title="Defines the Functor data structures. ">
-<polygon fill="white" stroke="black" points="648.287,-235.5 648.287,-254.5 755.287,-254.5 755.287,-235.5 648.287,-235.5"/>
-<text text-anchor="middle" x="701.787" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/functor.h</text>
+<g id="a_node39"><a xlink:href="ir_2module_8h.html" target="_top" xlink:title="IRModule that holds the functions and type definitions. ">
+<polygon fill="white" stroke="black" points="2583,-884.5 2583,-903.5 2675,-903.5 2675,-884.5 2583,-884.5"/>
+<text text-anchor="middle" x="2629" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/module.h</text>
 </a>
 </g>
 </g>
 <!-- Node38&#45;&gt;Node39 -->
-<g id="edge83" class="edge"><title>Node38&#45;&gt;Node39</title>
-<path fill="none" stroke="midnightblue" d="M732.821,-470.295C727.167,-429.433 710.857,-311.551 704.432,-265.12"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="707.862,-264.372 703.024,-254.946 700.928,-265.331 707.862,-264.372"/>
-</g>
-<!-- Node39&#45;&gt;Node9 -->
-<g id="edge84" class="edge"><title>Node39&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M704.631,-235.174C709.504,-221.366 720.709,-194.621 738.787,-179 802.831,-123.658 898.938,-95.2673 958.382,-82.1712"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="959.269,-85.5608 968.317,-80.0496 957.807,-78.7152 959.269,-85.5608"/>
-</g>
-<!-- Node39&#45;&gt;Node11 -->
-<g id="edge85" class="edge"><title>Node39&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M707.737,-235.415C718.32,-220.925 741.94,-191.933 769.787,-179 906.001,-115.738 956.585,-160.189 1105.79,-143 1107.25,-142.831 1108.74,-142.659 1110.23,-142.484"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1110.71,-145.953 1120.23,-141.303 1109.88,-139.001 1110.71,-145.953"/>
-</g>
-<!-- Node39&#45;&gt;Node17 -->
-<g id="edge86" class="edge"><title>Node39&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M693.507,-235.191C672.632,-213.423 615.397,-156.445 557.787,-123 528.011,-105.714 491.267,-92.5554 463.331,-84.0102"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="464.049,-80.5722 453.466,-81.0716 462.05,-87.2809 464.049,-80.5722"/>
-</g>
-<!-- Node39&#45;&gt;Node18 -->
-<g id="edge87" class="edge"><title>Node39&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M745.51,-235.483C859.085,-213.647 1172.98,-155.131 1436.79,-123 1668.15,-94.8214 1948.86,-78.8477 2041.48,-74.0528"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2041.78,-77.5424 2051.59,-73.5358 2041.42,-70.5515 2041.78,-77.5424"/>
-</g>
-<!-- Node39&#45;&gt;Node27 -->
-<g id="edge88" class="edge"><title>Node39&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M730.625,-235.444C763.053,-225.822 815.655,-210.215 849.987,-200.028"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="851.422,-203.254 860.013,-197.054 849.43,-196.543 851.422,-203.254"/>
+<g id="edge160" class="edge"><title>Node38&#45;&gt;Node39</title>
+<path fill="none" stroke="midnightblue" d="M2629,-1052.08C2629,-1025.95 2629,-949.211 2629,-913.577"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2632.5,-913.568 2629,-903.568 2625.5,-913.568 2632.5,-913.568"/>
 </g>
-<!-- Node40&#45;&gt;Node7 -->
-<g id="edge92" class="edge"><title>Node40&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M1649.31,-475.006C1712.79,-464.153 1816.34,-446.449 1881.67,-435.278"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1882.55,-438.679 1891.82,-433.543 1881.37,-431.779 1882.55,-438.679"/>
-</g>
-<!-- Node40&#45;&gt;Node16 -->
-<g id="edge96" class="edge"><title>Node40&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M1649.45,-480.768C1729.72,-474.705 1882.31,-460.623 2009.79,-434 2094.71,-416.264 2121.45,-421.023 2196.79,-378 2346.99,-292.225 2333.75,-195.512 2490.79,-123 2546.49,-97.281 2617.24,-83.3178 2657.63,-76.9286"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2658.34,-80.361 2667.7,-75.3942 2657.29,-73.4409 2658.34,-80.361"/>
-</g>
-<!-- Node40&#45;&gt;Node22 -->
-<g id="edge94" class="edge"><title>Node40&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M1538.26,-477.891C1418.25,-463.232 1125.97,-425.499 883.787,-378 855.398,-372.432 402.257,-270.431 377.787,-255 358.995,-243.15 343.776,-222.336 334.547,-207.452"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="337.467,-205.514 329.369,-198.682 331.439,-209.073 337.467,-205.514"/>
-</g>
-<!-- Node40&#45;&gt;Node31 -->
-<g id="edge95" class="edge"><title>Node40&#45;&gt;Node31</title>
-<path fill="none" stroke="midnightblue" d="M1648.69,-470.491C1726.12,-448.686 1868.96,-400.753 1967.79,-322 1988.14,-305.777 2004.8,-280.43 2014.51,-263.525"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2017.62,-265.125 2019.4,-254.68 2011.49,-261.739 2017.62,-265.125"/>
-</g>
-<!-- Node40&#45;&gt;Node39 -->
-<g id="edge93" class="edge"><title>Node40&#45;&gt;Node39</title>
-<path fill="none" stroke="midnightblue" d="M1539.71,-470.418C1462.02,-450.156 1314.34,-411.524 1188.79,-378 1023.45,-333.855 826.863,-280.218 742.996,-257.282"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="743.67,-253.838 733.101,-254.576 741.823,-260.59 743.67,-253.838"/>
-</g>
-<!-- Node41&#45;&gt;Node39 -->
-<g id="edge107" class="edge"><title>Node41&#45;&gt;Node39</title>
-<path fill="none" stroke="midnightblue" d="M1034.22,-537.335C994.053,-514.537 884.653,-449.683 807.787,-378 768.542,-341.402 731.359,-289.865 713.258,-263.314"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="715.972,-261.078 707.485,-254.736 710.165,-264.987 715.972,-261.078"/>
+<!-- Node43 -->
+<g id="node43" class="node"><title>Node43</title>
+<g id="a_node43"><a xlink:href="ir_2op_8h.html" target="_top" xlink:title="Primitive operators(builtin intrinsics) and registry for them. ">
+<polygon fill="white" stroke="black" points="1683,-996.5 1683,-1015.5 1751,-1015.5 1751,-996.5 1683,-996.5"/>
+<text text-anchor="middle" x="1717" y="-1003.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/op.h</text>
+</a>
+</g>
+</g>
+<!-- Node38&#45;&gt;Node43 -->
+<g id="edge181" class="edge"><title>Node38&#45;&gt;Node43</title>
+<path fill="none" stroke="midnightblue" d="M2581.89,-1058.21C2423.93,-1048.86 1914.45,-1018.69 1761.09,-1009.61"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1761.28,-1006.12 1751.09,-1009.02 1760.86,-1013.1 1761.28,-1006.12"/>
+</g>
+<!-- Node49 -->
+<g id="node49" class="node"><title>Node49</title>
+<g id="a_node49"><a xlink:href="relay_2type_8h.html" target="_top" xlink:title="Relay typed AST nodes. ">
+<polygon fill="white" stroke="black" points="2319.5,-996.5 2319.5,-1015.5 2372.5,-1015.5 2372.5,-996.5 2319.5,-996.5"/>
+<text text-anchor="middle" x="2346" y="-1003.5" font-family="Helvetica,sans-Serif" font-size="10.00">./type.h</text>
+</a>
+</g>
+</g>
+<!-- Node38&#45;&gt;Node49 -->
+<g id="edge208" class="edge"><title>Node38&#45;&gt;Node49</title>
+<path fill="none" stroke="midnightblue" d="M2584.16,-1052.44C2528.46,-1041.82 2434.48,-1023.88 2382.8,-1014.02"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2383.23,-1010.54 2372.75,-1012.1 2381.92,-1017.42 2383.23,-1010.54"/>
+</g>
+<!-- Node39&#45;&gt;Node4 -->
+<g id="edge168" class="edge"><title>Node39&#45;&gt;Node4</title>
+<path fill="none" stroke="midnightblue" d="M2582.95,-893.824C2501.33,-892.867 2329.93,-879.674 2224,-792 2209.81,-780.254 2201.99,-760.32 2197.93,-745.617"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2201.26,-744.512 2195.51,-735.616 2194.46,-746.159 2201.26,-744.512"/>
+</g>
+<!-- Node39&#45;&gt;Node7 -->
+<g id="edge176" class="edge"><title>Node39&#45;&gt;Node7</title>
+<path fill="none" stroke="midnightblue" d="M2628.63,-884.295C2627.86,-871.542 2625.44,-847.211 2618,-828 2607.31,-800.409 2599.59,-795.794 2582,-772 2504.06,-666.556 2488.77,-634.237 2390,-548 2356.48,-518.733 2348.26,-508.676 2307,-492 2221.64,-457.499 2187.61,-492.298 2103,-456 2081.68,-446.853 2081.7,-435.474 2061,-425 2030.81,-409.726 1994.44,-398.455 1965.68,-391.013"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1966.39,-387.585 1955.84,-388.54 1964.69,-394.374 1966.39,-387.585"/>
+</g>
+<!-- Node39&#45;&gt;Node13 -->
+<g id="edge177" class="edge"><title>Node39&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M2675.31,-891.471C2869.82,-884.98 3611.66,-859.515 3633,-848 3664.37,-831.072 3680,-818.65 3680,-783 3680,-783 3680,-783 3680,-132 3680,-101.205 3680.29,-85.9313 3656,-67 3621.53,-40.1365 3319.08,-23.0169 3218.42,-18.0226"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3218.41,-14.5177 3208.25,-17.5251 3218.06,-21.5093 3218.41,-14.5177"/>
+</g>
+<!-- Node39&#45;&gt;Node20 -->
+<g id="edge178" class="edge"><title>Node39&#45;&gt;Node20</title>
+<path fill="none" stroke="midnightblue" d="M2675.3,-891.717C2866.31,-886.315 3583.84,-864.926 3600,-848 3609.4,-838.154 3701.6,-961.421 3557,-492 3513.9,-352.09 3419.07,-200.856 3386.36,-150.992"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3389.27,-149.055 3380.84,-142.644 3383.43,-152.916 3389.27,-149.055"/>
+</g>
+<!-- Node39&#45;&gt;Node21 -->
+<g id="edge180" class="edge"><title>Node39&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M2582.53,-893.548C2447.43,-894.581 2056.89,-893.448 1939,-848 1581.77,-710.284 1532.03,-576.872 1294,-277 1270.9,-247.898 1262.64,-242.145 1244,-210 1233.1,-191.193 1223.57,-168.105 1217.59,-152.345"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1220.79,-150.915 1214.04,-142.748 1214.22,-153.341 1220.79,-150.915"/>
+</g>
+<!-- Node39&#45;&gt;Node33 -->
+<g id="edge175" class="edge"><title>Node39&#45;&gt;Node33</title>
+<path fill="none" stroke="midnightblue" d="M2625.49,-884.359C2616.7,-863.446 2592.15,-809.1 2560,-772 2525.64,-732.343 2472.35,-700.93 2440.25,-684.225"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2441.52,-680.94 2431.02,-679.52 2438.34,-687.177 2441.52,-680.94"/>
+</g>
+<!-- Node40 -->
+<g id="node40" class="node"><title>Node40</title>
+<g id="a_node40"><a xlink:href="ir_2adt_8h.html" target="_top" xlink:title="Algebraic data type definitions. ">
+<polygon fill="white" stroke="black" points="2479,-772.5 2479,-791.5 2551,-791.5 2551,-772.5 2479,-772.5"/>
+<text text-anchor="middle" x="2515" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/adt.h</text>
+</a>
+</g>
+</g>
+<!-- Node39&#45;&gt;Node40 -->
+<g id="edge161" class="edge"><title>Node39&#45;&gt;Node40</title>
+<path fill="none" stroke="midnightblue" d="M2614.34,-884.475C2600.72,-876.162 2580.3,-862.658 2565,-848 2549.8,-833.436 2535.47,-814.009 2526.09,-800.197"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2528.87,-798.061 2520.43,-791.66 2523.04,-801.929 2528.87,-798.061"/>
+</g>
+<!-- Node41 -->
+<g id="node41" class="node"><title>Node41</title>
+<g id="a_node41"><a xlink:href="ir_2function_8h.html" target="_top" xlink:title="Function nodes. ">
+<polygon fill="white" stroke="black" points="3277.5,-828.5 3277.5,-847.5 3372.5,-847.5 3372.5,-828.5 3277.5,-828.5"/>
+<text text-anchor="middle" x="3325" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/function.h</text>
+</a>
+</g>
+</g>
+<!-- Node39&#45;&gt;Node41 -->
+<g id="edge169" class="edge"><title>Node39&#45;&gt;Node41</title>
+<path fill="none" stroke="midnightblue" d="M2675.21,-889.415C2798,-879.888 3132.29,-853.951 3267.3,-843.477"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3267.74,-846.953 3277.44,-842.69 3267.2,-839.974 3267.74,-846.953"/>
 </g>
 <!-- Node42 -->
 <g id="node42" class="node"><title>Node42</title>
-<polygon fill="white" stroke="#bfbfbf" points="2094.29,-476 2094.29,-495 2153.29,-495 2153.29,-476 2094.29,-476"/>
-<text text-anchor="middle" x="2123.79" y="-483" font-family="Helvetica,sans-Serif" font-size="10.00">iostream</text>
-</g>
-<!-- Node41&#45;&gt;Node42 -->
-<g id="edge108" class="edge"><title>Node41&#45;&gt;Node42</title>
-<path fill="none" stroke="midnightblue" d="M1115.01,-545.96C1273.99,-545.229 1693.94,-539.48 2041.79,-501 2055.64,-499.467 2070.69,-497.032 2084.07,-494.592"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2084.75,-498.026 2093.93,-492.739 2083.46,-491.146 2084.75,-498.026"/>
-</g>
-<!-- Node43&#45;&gt;Node5 -->
-<g id="edge122" class="edge"><title>Node43&#45;&gt;Node5</title>
-<path fill="none" stroke="midnightblue" d="M1277.76,-705.324C1260.76,-696.664 1234.41,-683.242 1214.79,-673.249"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1216.27,-670.075 1205.78,-668.655 1213.1,-676.312 1216.27,-670.075"/>
-</g>
-<!-- Node43&#45;&gt;Node6 -->
-<g id="edge124" class="edge"><title>Node43&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M1289.61,-705.44C1280.76,-691.509 1261.34,-663.988 1237.79,-649 1208.9,-630.619 1172.28,-619.533 1141.89,-612.965"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1142.34,-609.485 1131.84,-610.907 1140.93,-616.343 1142.34,-609.485"/>
-</g>
-<!-- Node43&#45;&gt;Node7 -->
-<g id="edge123" class="edge"><title>Node43&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M1333.31,-710.679C1487.4,-696.525 2056.17,-635.706 2161.79,-501 2204.65,-446.336 2090.75,-430.816 2011.3,-426.519"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2011.46,-423.023 2001.3,-426.027 2011.12,-430.015 2011.46,-423.023"/>
-</g>
-<!-- Node43&#45;&gt;Node11 -->
-<g id="edge126" class="edge"><title>Node43&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1294.79,-705.442C1294.79,-686.936 1294.79,-641.812 1294.79,-604 1294.79,-604 1294.79,-604 1294.79,-546 1294.79,-457.713 1226.15,-457.993 1188.79,-378 1177.72,-354.313 1174.84,-347.828 1170.79,-322 1161.15,-260.528 1170.28,-186.458 1175.59,-152.566"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1179.04,-153.123 1177.21,-142.688 1172.14,-151.99 1179.04,-153.123"/>
-</g>
-<!-- Node43&#45;&gt;Node16 -->
-<g id="edge127" class="edge"><title>Node43&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M1333.29,-712.42C1492.93,-704.488 2115.11,-659.843 2558.79,-434 2624.38,-400.61 2648.11,-387.958 2680.79,-322 2694.53,-294.264 2693.36,-285.278 2699.79,-255 2711.99,-197.478 2719.31,-180.854 2708.79,-123 2706.74,-111.765 2702.34,-99.7786 2698.28,-90.3041"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2701.46,-88.8328 2694.15,-81.1636 2695.08,-91.7174 2701.46,-88.8328"/>
-</g>
-<!-- Node43&#45;&gt;Node22 -->
-<g id="edge125" class="edge"><title>Node43&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M1256.2,-711.754C1142.13,-703.922 798.425,-671.697 541.787,-557 503.481,-539.88 493.631,-532.386 465.787,-501 394.595,-420.75 409.214,-378.242 346.787,-291 334.329,-273.591 322.394,-275.01 314.787,-255 309.024,-239.842 312.733,-221.496 317.179,-208.165"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="320.492,-209.298 320.735,-198.706 313.94,-206.835 320.492,-209.298"/>
-</g>
-<!-- Node44&#45;&gt;Node5 -->
-<g id="edge145" class="edge"><title>Node44&#45;&gt;Node5</title>
-<path fill="none" stroke="midnightblue" d="M1162.18,-991.432C998.2,-982.278 472.867,-948.782 423.787,-893 323.482,-779 953.105,-689.705 1138.51,-666.126"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1139.06,-669.585 1148.54,-664.859 1138.18,-662.64 1139.06,-669.585"/>
-</g>
-<!-- Node44&#45;&gt;Node6 -->
-<g id="edge146" class="edge"><title>Node44&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M1162.07,-993.086C1027.11,-990.189 650.445,-979.524 530.787,-949 473.367,-934.353 441.698,-942.932 409.787,-893 339.423,-782.901 447.821,-683.722 573.787,-649 657.012,-626.059 907.89,-611.991 1023.4,-606.563"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1023.65,-610.056 1033.48,-606.096 1023.33,-603.063 1023.65,-610.056"/>
-</g>
-<!-- Node44&#45;&gt;Node16 -->
-<g id="edge170" class="edge"><title>Node44&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M1259.66,-993.712C1551.92,-991.677 3055.79,-976.705 3055.79,-884 3055.79,-884 3055.79,-884 3055.79,-188 3055.79,-147.458 3027.76,-141.701 2991.79,-123 2902.5,-76.5836 2780.13,-71.1997 2722.42,-71.5452"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2722.05,-68.0495 2712.1,-71.674 2722.14,-75.0489 2722.05,-68.0495"/>
-</g>
-<!-- Node44&#45;&gt;Node27 -->
-<g id="edge171" class="edge"><title>Node44&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1162.07,-994.025C956.653,-993.502 171.787,-984.898 171.787,-884 171.787,-884 171.787,-884 171.787,-658 171.787,-573.756 204.568,-347.797 266.787,-291 353.465,-211.874 733.969,-194.358 850.047,-190.826"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="850.233,-194.322 860.128,-190.535 850.031,-187.325 850.233,-194.322"/>
+<polygon fill="white" stroke="#bfbfbf" points="3505,-828.5 3505,-847.5 3591,-847.5 3591,-828.5 3505,-828.5"/>
+<text text-anchor="middle" x="3548" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00">unordered_set</text>
+</g>
+<!-- Node39&#45;&gt;Node42 -->
+<g id="edge179" class="edge"><title>Node39&#45;&gt;Node42</title>
+<path fill="none" stroke="midnightblue" d="M2675.39,-892.281C2804.79,-889.908 3180.62,-880.515 3491,-848 3492.26,-847.868 3493.54,-847.727 3494.82,-847.578"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3495.33,-851.042 3504.8,-846.306 3494.44,-844.099 3495.33,-851.042"/>
+</g>
+<!-- Node40&#45;&gt;Node4 -->
+<g id="edge162" class="edge"><title>Node40&#45;&gt;Node4</title>
+<path fill="none" stroke="midnightblue" d="M2478.8,-774.91C2420.9,-765.171 2307.4,-746.077 2242.53,-735.164"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2243,-731.693 2232.56,-733.486 2241.84,-738.597 2243,-731.693"/>
+</g>
+<!-- Node40&#45;&gt;Node6 -->
+<g id="edge165" class="edge"><title>Node40&#45;&gt;Node6</title>
+<path fill="none" stroke="midnightblue" d="M2489.84,-772.488C2413.64,-746.734 2178.57,-667.519 1983,-604 1947.36,-592.423 1906.56,-579.534 1877.87,-570.527"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1878.85,-567.164 1868.26,-567.511 1876.75,-573.844 1878.85,-567.164"/>
+</g>
+<!-- Node40&#45;&gt;Node7 -->
+<g id="edge164" class="edge"><title>Node40&#45;&gt;Node7</title>
+<path fill="none" stroke="midnightblue" d="M2512.55,-772.384C2506.32,-751.526 2488.35,-697.293 2460,-660 2392.59,-571.315 2374.08,-540.917 2274,-492 2191.28,-451.57 2155.54,-490.053 2070,-456 2046.75,-446.744 2045.07,-436.79 2023,-425 1999.11,-412.238 1970.81,-400.472 1949.31,-392.174"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1950.55,-388.899 1939.96,-388.614 1948.06,-395.441 1950.55,-388.899"/>
+</g>
+<!-- Node40&#45;&gt;Node11 -->
+<g id="edge166" class="edge"><title>Node40&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M2528.01,-772.341C2577.85,-738.046 2750.98,-607.953 2693,-492 2570.76,-247.523 2457.12,-218.454 2201,-123 2148.39,-103.392 1782.6,-86.8328 1627.87,-80.6231"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1627.67,-77.1127 1617.54,-80.2116 1627.39,-84.1072 1627.67,-77.1127"/>
+</g>
+<!-- Node40&#45;&gt;Node13 -->
+<g id="edge167" class="edge"><title>Node40&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M2551.4,-774.493C2667.88,-751.882 3035.94,-666.327 3244,-456 3363.22,-335.481 3520.12,-266.582 3430,-123 3383.7,-49.2309 3273.36,-26.3585 3218.34,-19.4239"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3218.45,-15.9128 3208.11,-18.2391 3217.64,-22.8664 3218.45,-15.9128"/>
+</g>
+<!-- Node40&#45;&gt;Node33 -->
+<g id="edge163" class="edge"><title>Node40&#45;&gt;Node33</title>
+<path fill="none" stroke="midnightblue" d="M2509.05,-772.143C2500.16,-759.2 2482.59,-734.636 2465,-716 2454.88,-705.283 2442.43,-694.439 2432.25,-686.082"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2434.32,-683.251 2424.33,-679.704 2429.93,-688.703 2434.32,-683.251"/>
+</g>
+<!-- Node41&#45;&gt;Node2 -->
+<g id="edge170" class="edge"><title>Node41&#45;&gt;Node2</title>
+<path fill="none" stroke="midnightblue" d="M3277.45,-829.492C3212.99,-819.313 3098.41,-801.223 3032.81,-790.864"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3033.14,-787.373 3022.71,-789.27 3032.04,-794.287 3033.14,-787.373"/>
+</g>
+<!-- Node41&#45;&gt;Node4 -->
+<g id="edge171" class="edge"><title>Node41&#45;&gt;Node4</title>
+<path fill="none" stroke="midnightblue" d="M3277.44,-837.465C3147.42,-838.097 2775.33,-835.632 2470,-792 2383.93,-779.701 2285.25,-753.434 2232.33,-738.326"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2233.26,-734.952 2222.68,-735.551 2231.33,-741.679 2233.26,-734.952"/>
+</g>
+<!-- Node41&#45;&gt;Node8 -->
+<g id="edge172" class="edge"><title>Node41&#45;&gt;Node8</title>
+<path fill="none" stroke="midnightblue" d="M3319.44,-828.38C3287.76,-780.014 3124.59,-540.422 2928,-425 2852.08,-380.426 2824.46,-385.565 2738,-369 2594.09,-341.429 2422.94,-330.588 2326.34,-326.445"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2326.22,-322.937 2316.08,-326.019 2325.93,-329.931 2326.22,-322.937"/>
+</g>
+<!-- Node41&#45;&gt;Node13 -->
+<g id="edge173" class="edge"><title>Node41&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M3351.3,-828.486C3388.68,-815 3456.65,-785.098 3493,-736 3495.92,-732.06 3604,-317.308 3604,-262.5 3604,-262.5 3604,-262.5 3604,-132 3604,-101.205 3604.09,-86.1785 3580,-67 3524.3,-22.6667 3302.2,-16.9953 3218.31,-16.4607"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3218.11,-12.96 3208.1,-16.4172 3218.08,-19.9599 3218.11,-12.96"/>
+</g>
+<!-- Node41&#45;&gt;Node14 -->
+<g id="edge174" class="edge"><title>Node41&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M3330.56,-828.374C3348.64,-800.038 3406.73,-706.88 3443,-624 3532.29,-419.94 3591.96,-275.91 3430,-123 3362.07,-58.8709 2688.73,-25.9941 2508.29,-18.2905"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2508.24,-14.7854 2498.1,-17.86 2507.95,-21.7792 2508.24,-14.7854"/>
+</g>
+<!-- Node43&#45;&gt;Node2 -->
+<g id="edge183" class="edge"><title>Node43&#45;&gt;Node2</title>
+<path fill="none" stroke="midnightblue" d="M1751.21,-1005.13C1856.99,-1005.06 2187.91,-1001.31 2458,-960 2560.29,-944.354 2585.57,-935.934 2684,-904 2786.08,-870.881 2902.89,-819.536 2955.17,-795.815"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2956.8,-798.917 2964.45,-791.585 2953.9,-792.547 2956.8,-798.917"/>
+</g>
+<!-- Node43&#45;&gt;Node4 -->
+<g id="edge184" class="edge"><title>Node43&#45;&gt;Node4</title>
+<path fill="none" stroke="midnightblue" d="M1751.07,-1003.22C1849.78,-997.129 2129,-973.013 2129,-895 2129,-895 2129,-895 2129,-837 2129,-806.205 2137,-798.313 2153,-772 2159.42,-761.434 2168.54,-751.127 2176.55,-743.048"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2179.29,-745.259 2184.04,-735.786 2174.42,-740.232 2179.29,-745.259"/>
+</g>
+<!-- Node43&#45;&gt;Node13 -->
+<g id="edge202" class="edge"><title>Node43&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M1751.33,-1003.58C1863.03,-998.866 2226.18,-982.704 2526,-960 2656,-950.155 3576.74,-904.978 3694,-848 3729.91,-830.552 3756,-822.923 3756,-783 3756,-783 3756,-783 3756,-132 3756,-95.5528 3737.88,-84.6639 3706,-67 3621.6,-20.2396 3318.35,-16.3221 3218.29,-16.3331"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3218.17,-12.8332 3208.18,-16.3481 3218.18,-19.8332 3218.17,-12.8332"/>
+</g>
+<!-- Node43&#45;&gt;Node15 -->
+<g id="edge203" class="edge"><title>Node43&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M1682.88,-1004.89C1492.11,-1004.12 555.836,-998.436 270,-960 147.673,-943.551 0,-1018.43 0,-895 0,-895 0,-895 0,-132 0,-85.1454 40.6503,-87.0465 83,-67 148.096,-36.1865 232.753,-23.7691 277.72,-19.0903"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="278.128,-22.5672 287.739,-18.1088 277.445,-15.6006 278.128,-22.5672"/>
+</g>
+<!-- Node43&#45;&gt;Node21 -->
+<g id="edge204" class="edge"><title>Node43&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M1682.84,-1003.81C1483.17,-996.635 476,-957.354 476,-895 476,-895 476,-895 476,-501 476,-300.798 610.865,-266.362 791,-179 859.013,-146.015 1089.85,-136.973 1177.16,-134.702"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1177.41,-138.197 1187.32,-134.452 1177.24,-131.199 1177.41,-138.197"/>
+</g>
+<!-- Node43&#45;&gt;Node33 -->
+<g id="edge185" class="edge"><title>Node43&#45;&gt;Node33</title>
+<path fill="none" stroke="midnightblue" d="M1717,-996.442C1717,-977.936 1717,-932.812 1717,-895 1717,-895 1717,-895 1717,-837 1717,-703.88 2204.84,-677.306 2363.67,-672.182"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2364.2,-675.667 2374.09,-671.861 2363.99,-668.671 2364.2,-675.667"/>
+</g>
+<!-- Node44 -->
+<g id="node44" class="node"><title>Node44</title>
+<polygon fill="white" stroke="#bfbfbf" points="1603,-940.5 1603,-959.5 1689,-959.5 1689,-940.5 1603,-940.5"/>
+<text text-anchor="middle" x="1646" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/registry.h</text>
+</g>
+<!-- Node43&#45;&gt;Node44 -->
+<g id="edge182" class="edge"><title>Node43&#45;&gt;Node44</title>
+<path fill="none" stroke="midnightblue" d="M1705.59,-996.324C1694.89,-988.185 1678.66,-975.839 1665.84,-966.087"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1667.69,-963.102 1657.61,-959.834 1663.46,-968.673 1667.69,-963.102"/>
 </g>
 <!-- Node45 -->
 <g id="node45" class="node"><title>Node45</title>
-<g id="a_node45"><a xlink:href="tir_2expr_8h.html" target="_top" xlink:title="TIR expressions. ">
-<polygon fill="white" stroke="black" points="2038.79,-929.5 2038.79,-948.5 2118.79,-948.5 2118.79,-929.5 2038.79,-929.5"/>
-<text text-anchor="middle" x="2078.79" y="-936.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/tir/expr.h</text>
+<g id="a_node45"><a xlink:href="type__relation_8h.html" target="_top" xlink:title="Type relation and function for type inference(checking). ">
+<polygon fill="white" stroke="black" points="2330.5,-940.5 2330.5,-959.5 2449.5,-959.5 2449.5,-940.5 2330.5,-940.5"/>
+<text text-anchor="middle" x="2390" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/type_relation.h</text>
 </a>
 </g>
 </g>
-<!-- Node44&#45;&gt;Node45 -->
-<g id="edge147" class="edge"><title>Node44&#45;&gt;Node45</title>
-<path fill="none" stroke="midnightblue" d="M1259.31,-990.981C1410.78,-981.558 1873.89,-952.747 2028.17,-943.149"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2028.55,-946.632 2038.31,-942.518 2028.12,-939.646 2028.55,-946.632"/>
-</g>
-<!-- Node45&#45;&gt;Node4 -->
-<g id="edge148" class="edge"><title>Node45&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M2065.71,-929.226C2054.11,-920.939 2037.26,-907.625 2025.79,-893 2002.48,-863.288 2010.04,-847.515 1987.79,-817 1979.93,-806.218 1969.39,-795.702 1960.38,-787.55"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1962.49,-784.744 1952.66,-780.789 1957.88,-790.01 1962.49,-784.744"/>
-</g>
-<!-- Node45&#45;&gt;Node6 -->
-<g id="edge151" class="edge"><title>Node45&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M2038.63,-937.47C1786.97,-933.893 437.787,-910.85 437.787,-828 437.787,-828 437.787,-828 437.787,-770 437.787,-649.643 864.321,-615.26 1023.67,-606.614"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1023.98,-610.103 1033.78,-606.081 1023.61,-603.113 1023.98,-610.103"/>
-</g>
-<!-- Node45&#45;&gt;Node7 -->
-<g id="edge149" class="edge"><title>Node45&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M2118.89,-933.538C2208.42,-922.46 2416.79,-890.018 2416.79,-828 2416.79,-828 2416.79,-828 2416.79,-714 2416.79,-589.413 2389.61,-526.918 2278.79,-470 2233.5,-446.743 2096.25,-434.397 2011.52,-428.817"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2011.66,-425.319 2001.46,-428.17 2011.21,-432.305 2011.66,-425.319"/>
-</g>
-<!-- Node45&#45;&gt;Node12 -->
-<g id="edge152" class="edge"><title>Node45&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M2118.9,-936.668C2279.27,-930.82 2865.79,-904.223 2865.79,-828 2865.79,-828 2865.79,-828 2865.79,-714 2865.79,-638.314 2903.79,-623.686 2903.79,-548 2903.79,-548 2903.79,-548 2903.79,-484.5 2903.79,-278.691 2744.59,-260.928 2555.79,-179 2419.23,-119.741 2370.74,-159.45 2222.79,-143 2026.72,-121.2 1795.72,-94.5467 1679.89,-81.1149"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1680.06,-77.611 1669.72,-79.9354 1679.25,-84.5644 1680.06,-77.611"/>
-</g>
-<!-- Node45&#45;&gt;Node16 -->
-<g id="edge167" class="edge"><title>Node45&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M2118.99,-937.421C2278.91,-934.914 2864.89,-923.697 2941.79,-893 2983.07,-876.521 3017.79,-872.447 3017.79,-828 3017.79,-828 3017.79,-828 3017.79,-188 3017.79,-149.577 2994.18,-142.01 2960.79,-123 2883.36,-78.9171 2775.22,-72.2436 2721.99,-71.8827"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2721.8,-68.3827 2711.8,-71.8878 2721.8,-75.3827 2721.8,-68.3827"/>
-</g>
-<!-- Node45&#45;&gt;Node18 -->
-<g id="edge169" class="edge"><title>Node45&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M2118.95,-937.284C2274.01,-934.32 2828.59,-921.787 2901.79,-893 2943.78,-876.485 2979.79,-873.126 2979.79,-828 2979.79,-828 2979.79,-828 2979.79,-546 2979.79,-141.849 2263.35,-82.0695 2103.96,-73.7709"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2104.03,-70.2702 2093.87,-73.2768 2103.69,-77.2618 2104.03,-70.2702"/>
-</g>
-<!-- Node45&#45;&gt;Node22 -->
-<g id="edge153" class="edge"><title>Node45&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M2038.62,-937.58C1785.12,-934.852 415.012,-918.946 330.787,-893 113.391,-826.031 19.7866,-713.977 19.7866,-486.5 19.7866,-486.5 19.7866,-486.5 19.7866,-367 19.7866,-261.077 159.097,-217.482 249.416,-200.348"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="250.149,-203.772 259.356,-198.531 248.89,-196.886 250.149,-203.772"/>
-</g>
-<!-- Node45&#45;&gt;Node26 -->
-<g id="edge168" class="edge"><title>Node45&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M2118.93,-937.259C2277.57,-934.137 2853.4,-920.912 2879.79,-893 2955.18,-813.247 2892.31,-746.432 2841.79,-649 2770.91,-512.313 2637.79,-522.97 2637.79,-369 2637.79,-369 2637.79,-369 2637.79,-305.5 2637.79,-252.363 2576.8,-218.716 2536.21,-202.206"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2537.47,-198.941 2526.88,-198.564 2534.92,-205.462 2537.47,-198.941"/>
-</g>
-<!-- Node45&#45;&gt;Node32 -->
-<g id="edge166" class="edge"><title>Node45&#45;&gt;Node32</title>
-<path fill="none" stroke="midnightblue" d="M2118.79,-936.07C2268.86,-928.305 2789.79,-896.425 2789.79,-828 2789.79,-828 2789.79,-828 2789.79,-714 2789.79,-560.03 2659.61,-569.121 2585.79,-434 2553.52,-374.944 2528.56,-298.594 2518.12,-264.206"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2521.46,-263.172 2515.25,-254.591 2514.75,-265.174 2521.46,-263.172"/>
-</g>
-<!-- Node45&#45;&gt;Node34 -->
-<g id="edge164" class="edge"><title>Node45&#45;&gt;Node34</title>
-<path fill="none" stroke="midnightblue" d="M2038.66,-937.614C1789.92,-935.135 466.388,-920.68 385.787,-893 234.004,-840.875 183.917,-771.342 157.787,-613 152.287,-579.673 148.195,-569.387 157.787,-537 184.511,-446.759 259.11,-358.742 291.478,-323.553"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="294.137,-325.833 298.402,-316.134 289.02,-321.056 294.137,-325.833"/>
+<!-- Node43&#45;&gt;Node45 -->
+<g id="edge186" class="edge"><title>Node43&#45;&gt;Node45</title>
+<path fill="none" stroke="midnightblue" d="M1751.3,-1002.25C1856.68,-993.793 2177.2,-968.075 2320.03,-956.614"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2320.73,-960.07 2330.42,-955.781 2320.17,-953.092 2320.73,-960.07"/>
+</g>
+<!-- Node47 -->
+<g id="node47" class="node"><title>Node47</title>
+<g id="a_node47"><a xlink:href="attr__registry__map_8h.html" target="_top" xlink:title="Attribute map used in registry. ">
+<polygon fill="white" stroke="black" points="294,-179.5 294,-209.5 418,-209.5 418,-179.5 294,-179.5"/>
+<text text-anchor="start" x="302" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/attr_registry</text>
+<text text-anchor="middle" x="356" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">_map.h</text>
+</a>
 </g>
-<!-- Node45&#45;&gt;Node39 -->
-<g id="edge150" class="edge"><title>Node45&#45;&gt;Node39</title>
-<path fill="none" stroke="midnightblue" d="M2038.71,-938.32C1832.73,-939.732 891.639,-943.274 604.787,-893 441.507,-864.383 388.491,-842.725 271.787,-725 135.979,-588.006 129.992,-427.009 266.787,-291 292.592,-265.343 523.706,-252.877 638.152,-248.234"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="638.334,-251.73 648.187,-247.835 638.055,-244.735 638.334,-251.73"/>
 </g>
-<!-- Node45&#45;&gt;Node42 -->
-<g id="edge165" class="edge"><title>Node45&#45;&gt;Node42</title>
-<path fill="none" stroke="midnightblue" d="M2092.65,-929.279C2104.4,-921.214 2120.87,-908.199 2130.79,-893 2147.3,-867.684 2150.79,-858.225 2150.79,-828 2150.79,-828 2150.79,-828 2150.79,-602 2150.79,-566.783 2138.74,-527.075 2130.74,-504.592"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2133.95,-503.201 2127.21,-495.033 2127.39,-505.627 2133.95,-503.201"/>
+<!-- Node43&#45;&gt;Node47 -->
+<g id="edge194" class="edge"><title>Node43&#45;&gt;Node47</title>
+<path fill="none" stroke="midnightblue" d="M1682.89,-1005.02C1507.54,-1004.92 706.394,-1002.14 462,-960 367.391,-943.687 256,-991.005 256,-895 256,-895 256,-895 256,-322 256,-276.646 296.049,-238.034 325.458,-215.794"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="327.796,-218.421 333.807,-209.696 323.667,-212.768 327.796,-218.421"/>
+</g>
+<!-- Node48 -->
+<g id="node48" class="node"><title>Node48</title>
+<g id="a_node48"><a xlink:href="registry_8h.html" target="_top" xlink:title="This file defines the TVM global function registry. ">
+<polygon fill="white" stroke="black" points="1044,-313.5 1044,-332.5 1166,-332.5 1166,-313.5 1044,-313.5"/>
+<text text-anchor="middle" x="1105" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/registry.h</text>
+</a>
+</g>
+</g>
+<!-- Node43&#45;&gt;Node48 -->
+<g id="edge197" class="edge"><title>Node43&#45;&gt;Node48</title>
+<path fill="none" stroke="midnightblue" d="M1682.63,-1005.04C1546,-1004.93 1046,-1001.65 990,-960 965.289,-941.623 966,-925.795 966,-895 966,-895 966,-895 966,-837 966,-636.399 1066.24,-406.549 1096.47,-341.792"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1099.73,-343.082 1100.84,-332.545 1093.4,-340.092 1099.73,-343.082"/>
+</g>
+<!-- Node45&#45;&gt;Node2 -->
+<g id="edge187" class="edge"><title>Node45&#45;&gt;Node2</title>
+<path fill="none" stroke="midnightblue" d="M2411.86,-940.495C2446.1,-927.354 2514.6,-901.778 2574,-884 2702.25,-845.612 2856.18,-810.487 2933.52,-793.583"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2934.43,-796.965 2943.46,-791.417 2932.94,-790.125 2934.43,-796.965"/>
+</g>
+<!-- Node45&#45;&gt;Node33 -->
+<g id="edge193" class="edge"><title>Node45&#45;&gt;Node33</title>
+<path fill="none" stroke="midnightblue" d="M2393.1,-940.289C2399.38,-921.856 2413,-877.435 2413,-839 2413,-839 2413,-839 2413,-781 2413,-748.948 2413,-711.643 2413,-689.749"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2416.5,-689.558 2413,-679.558 2409.5,-689.558 2416.5,-689.558"/>
+</g>
+<!-- Node45&#45;&gt;Node39 -->
+<g id="edge192" class="edge"><title>Node45&#45;&gt;Node39</title>
+<path fill="none" stroke="midnightblue" d="M2427.87,-940.444C2469.48,-931.043 2536.37,-915.929 2581.47,-905.739"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2582.32,-909.134 2591.31,-903.516 2580.78,-902.306 2582.32,-909.134"/>
 </g>
 <!-- Node46 -->
 <g id="node46" class="node"><title>Node46</title>
-<g id="a_node46"><a xlink:href="buffer_8h.html" target="_top" xlink:title="Symbolic n&#45;dimensional array, to represent a memory buffer. ">
-<polygon fill="white" stroke="black" points="2035.29,-873.5 2035.29,-892.5 2122.29,-892.5 2122.29,-873.5 2035.29,-873.5"/>
-<text text-anchor="middle" x="2078.79" y="-880.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/tir/buffer.h</text>
+<g id="a_node46"><a xlink:href="env__func_8h.html" target="_top" xlink:title="Serializable global function used in IR. ">
+<polygon fill="white" stroke="black" points="1184.5,-548.5 1184.5,-567.5 1283.5,-567.5 1283.5,-548.5 1184.5,-548.5"/>
+<text text-anchor="middle" x="1234" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/env_func.h</text>
 </a>
 </g>
 </g>
 <!-- Node45&#45;&gt;Node46 -->
-<g id="edge154" class="edge"><title>Node45&#45;&gt;Node46</title>
-<path fill="none" stroke="midnightblue" d="M2078.79,-929.083C2078.79,-922.006 2078.79,-911.861 2078.79,-902.986"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2082.29,-902.751 2078.79,-892.751 2075.29,-902.751 2082.29,-902.751"/>
-</g>
-<!-- Node47 -->
-<g id="node47" class="node"><title>Node47</title>
-<g id="a_node47"><a xlink:href="var_8h.html" target="_top" xlink:title="Variables in the TIR. ">
-<polygon fill="white" stroke="black" points="1904.79,-817.5 1904.79,-836.5 1978.79,-836.5 1978.79,-817.5 1904.79,-817.5"/>
-<text text-anchor="middle" x="1941.79" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/tir/var.h</text>
+<g id="edge188" class="edge"><title>Node45&#45;&gt;Node46</title>
+<path fill="none" stroke="midnightblue" d="M2330.23,-948.661C2170.73,-947.27 1737.77,-940.172 1600,-904 1521.1,-883.286 1462,-864.571 1462,-783 1462,-783 1462,-783 1462,-669 1462,-628.346 1342.93,-589.003 1276.88,-570.308"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1277.73,-566.91 1267.15,-567.595 1275.85,-573.653 1277.73,-566.91"/>
+</g>
+<!-- Node46&#45;&gt;Node13 -->
+<g id="edge190" class="edge"><title>Node46&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M1283.75,-557.569C1455.45,-558.579 2038.22,-554.083 2506,-456 2594.87,-437.366 2616.87,-427.713 2699,-389 2742.3,-368.591 2750.17,-357.988 2791,-333 2831.5,-308.21 2843.3,-304.529 2882,-277 2999.29,-193.552 3125.77,-74.6253 3169.81,-32.2438"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3172.29,-34.7125 3177.05,-25.2468 3167.42,-29.6785 3172.29,-34.7125"/>
+</g>
+<!-- Node46&#45;&gt;Node15 -->
+<g id="edge191" class="edge"><title>Node46&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M1184.48,-557.798C1097.96,-557.975 914.322,-552.917 766,-512 666.439,-484.535 443.402,-347.346 346,-313 281.342,-290.2 254.577,-312.625 196,-277 113.271,-226.686 80.0338,-144.56 138,-67 154.77,-44.5615 233.3,-28.6089 277.88,-21.1868"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="278.584,-24.6184 287.898,-19.5673 277.467,-17.7081 278.584,-24.6184"/>
+</g>
+<!-- Node46&#45;&gt;Node27 -->
+<g id="edge189" class="edge"><title>Node46&#45;&gt;Node27</title>
+<path fill="none" stroke="midnightblue" d="M1283.54,-550.379C1354.87,-540.845 1486.83,-523.206 1568.06,-512.348"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1568.75,-515.787 1578.2,-510.993 1567.82,-508.849 1568.75,-515.787"/>
+</g>
+<!-- Node47&#45;&gt;Node15 -->
+<g id="edge195" class="edge"><title>Node47&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M352.233,-179.315C343.821,-147.633 323.501,-71.1092 314.024,-35.4186"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="317.306,-34.1409 311.356,-25.3741 310.54,-35.9374 317.306,-34.1409"/>
+</g>
+<!-- Node47&#45;&gt;Node21 -->
+<g id="edge196" class="edge"><title>Node47&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M418.164,-184.444C433.453,-182.434 449.798,-180.468 465,-179 739.381,-152.509 1072.14,-138.995 1177.4,-135.164"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1177.57,-138.66 1187.43,-134.803 1177.31,-131.665 1177.57,-138.66"/>
+</g>
+<!-- Node48&#45;&gt;Node13 -->
+<g id="edge199" class="edge"><title>Node48&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M1166.09,-321.84C1298.12,-320.759 1619.67,-314.163 1886,-277 2021.31,-258.12 2054.3,-246.31 2186,-210 2381.79,-156.024 2421.11,-108.072 2620,-67 2820.1,-25.6786 3066.89,-18.164 3153.85,-16.8008"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3153.93,-20.3001 3163.88,-16.6603 3153.84,-13.3008 3153.93,-20.3001"/>
+</g>
+<!-- Node48&#45;&gt;Node15 -->
+<g id="edge200" class="edge"><title>Node48&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M1043.97,-313.931C854.387,-288.833 288.146,-213.605 285,-210 241.055,-159.644 279.17,-71.8652 298.908,-34.3398"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="302.197,-35.6176 303.904,-25.1612 296.049,-32.2708 302.197,-35.6176"/>
+</g>
+<!-- Node48&#45;&gt;Node16 -->
+<g id="edge198" class="edge"><title>Node48&#45;&gt;Node16</title>
+<path fill="none" stroke="midnightblue" d="M1166.05,-316.927C1299.34,-305.851 1615.53,-279.575 1754.05,-268.064"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1754.43,-271.544 1764.11,-267.228 1753.85,-264.568 1754.43,-271.544"/>
+</g>
+<!-- Node48&#45;&gt;Node21 -->
+<g id="edge201" class="edge"><title>Node48&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M1108.64,-313.314C1114.8,-298.929 1127.98,-269.422 1142,-246 1152.13,-229.064 1157.35,-226.614 1168,-210 1180.49,-190.529 1193.36,-167.27 1201.73,-151.656"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1204.93,-153.089 1206.53,-142.615 1198.75,-149.808 1204.93,-153.089"/>
+</g>
+<!-- Node49&#45;&gt;Node2 -->
+<g id="edge209" class="edge"><title>Node49&#45;&gt;Node2</title>
+<path fill="none" stroke="midnightblue" d="M2372.74,-1004.65C2480.87,-1003.01 2882.16,-994.618 2926,-960 2975.16,-921.189 2982.54,-839.55 2983.24,-802.285"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2986.74,-801.868 2983.27,-791.856 2979.74,-801.844 2986.74,-801.868"/>
+</g>
+<!-- Node49&#45;&gt;Node13 -->
+<g id="edge218" class="edge"><title>Node49&#45;&gt;Node13</title>
+<path fill="none" stroke="midnightblue" d="M2372.55,-1003.61C2457.04,-999.042 2727.26,-983.486 2950,-960 3041.45,-950.357 3698.29,-905.566 3770,-848 3794.01,-828.722 3794,-813.795 3794,-783 3794,-783 3794,-783 3794,-132 3794,-101.205 3794.48,-85.6779 3770,-67 3725.96,-33.4063 3334.48,-20.4281 3218.34,-17.2969"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3218.38,-13.7967 3208.29,-17.0321 3218.19,-20.7943 3218.38,-13.7967"/>
+</g>
+<!-- Node49&#45;&gt;Node33 -->
+<g id="edge214" class="edge"><title>Node49&#45;&gt;Node33</title>
+<path fill="none" stroke="midnightblue" d="M2372.52,-1002.63C2399.19,-998.675 2438.99,-988.125 2458,-960 2517.07,-872.611 2450.65,-736.761 2423.5,-688.632"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2426.39,-686.649 2418.36,-679.743 2420.33,-690.152 2426.39,-686.649"/>
+</g>
+<!-- Node49&#45;&gt;Node34 -->
+<g id="edge219" class="edge"><title>Node49&#45;&gt;Node34</title>
+<path fill="none" stroke="midnightblue" d="M2319.28,-1004.31C2223.04,-1001.64 1884.9,-990.602 1594.98,-959.993"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1595.01,-956.476 1584.69,-958.896 1594.26,-963.436 1595.01,-956.476"/>
+</g>
+<!-- Node49&#45;&gt;Node35 -->
+<g id="edge217" class="edge"><title>Node49&#45;&gt;Node35</title>
+<path fill="none" stroke="midnightblue" d="M2319.1,-1000.76C2214.99,-984.324 1837.42,-924.736 1699.71,-903.003"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1699.86,-899.484 1689.44,-901.382 1698.77,-906.399 1699.86,-899.484"/>
+</g>
+<!-- Node49&#45;&gt;Node45 -->
+<g id="edge215" class="edge"><title>Node49&#45;&gt;Node45</title>
+<path fill="none" stroke="midnightblue" d="M2353.27,-996.083C2359.54,-988.377 2368.79,-977.033 2376.43,-967.653"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2379.27,-969.714 2382.87,-959.751 2373.84,-965.293 2379.27,-969.714"/>
+</g>
+<!-- Node49&#45;&gt;Node46 -->
+<g id="edge210" class="edge"><title>Node49&#45;&gt;Node46</title>
+<path fill="none" stroke="midnightblue" d="M2319.33,-1002.39C2253.49,-995.88 2078,-978.151 1932,-960 1856.66,-950.634 1315.6,-897.447 1258,-848 1234.63,-827.942 1234,-813.795 1234,-783 1234,-783 1234,-783 1234,-669 1234,-636.948 1234,-599.643 1234,-577.749"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1237.5,-577.558 1234,-567.558 1230.5,-577.558 1237.5,-577.558"/>
+</g>
+<!-- Node49&#45;&gt;Node48 -->
+<g id="edge216" class="edge"><title>Node49&#45;&gt;Node48</title>
+<path fill="none" stroke="midnightblue" d="M2319.43,-1004.99C2192.05,-1004.73 1643.27,-1001.18 1478,-960 1279.11,-910.439 1080,-931.972 1080,-727 1080,-727 1080,-727 1080,-501 1080,-485.365 1095.49,-384.661 1102.09,-342.51"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1105.56,-342.925 1103.66,-332.504 1098.65,-341.84 1105.56,-342.925"/>
+</g>
+<!-- Node50 -->
+<g id="node50" class="node"><title>Node50</title>
+<g id="a_node50"><a xlink:href="tensor__type_8h.html" target="_top" xlink:title="Polymorphic tensor types. ">
+<polygon fill="white" stroke="black" points="2233.5,-772.5 2233.5,-791.5 2346.5,-791.5 2346.5,-772.5 2233.5,-772.5"/>
+<text text-anchor="middle" x="2290" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/ir/tensor_type.h</text>
 </a>
 </g>
 </g>
-<!-- Node45&#45;&gt;Node47 -->
-<g id="edge163" class="edge"><title>Node45&#45;&gt;Node47</title>
-<path fill="none" stroke="midnightblue" d="M2056.39,-929.402C2038.06,-921.666 2012.09,-909.056 1992.79,-893 1976.3,-879.288 1961.68,-859.423 1952.36,-845.269"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1955.12,-843.089 1946.8,-836.528 1949.22,-846.844 1955.12,-843.089"/>
-</g>
-<!-- Node46&#45;&gt;Node4 -->
-<g id="edge155" class="edge"><title>Node46&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M2072.41,-873.185C2062.48,-859.86 2042.19,-834.308 2020.79,-817 2005.24,-804.424 1985.73,-793.274 1969.99,-785.218"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1971.25,-781.94 1960.74,-780.617 1968.14,-788.206 1971.25,-781.94"/>
-</g>
-<!-- Node46&#45;&gt;Node7 -->
-<g id="edge156" class="edge"><title>Node46&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M2106.33,-873.464C2173.6,-850.718 2340.79,-781.921 2340.79,-660 2340.79,-660 2340.79,-660 2340.79,-602 2340.79,-459.66 2125.99,-430.908 2011.6,-425.689"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2011.66,-422.189 2001.52,-425.278 2011.37,-429.183 2011.66,-422.189"/>
-</g>
-<!-- Node46&#45;&gt;Node16 -->
-<g id="edge162" class="edge"><title>Node46&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M2122.46,-879.621C2259.88,-871.564 2681.36,-842.319 2801.79,-781 2875.07,-743.682 2941.79,-742.241 2941.79,-660 2941.79,-660 2941.79,-660 2941.79,-546 2941.79,-465.541 2979.79,-449.459 2979.79,-369 2979.79,-369 2979.79,-369 2979.79,-188 2979.79,-152.088 2962.02,-142.386 2931.79,-123 2865.98,-80.8019 2771.32,-73.0866 2722.17,-72.1473"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2722.15,-68.6471 2712.11,-72.0391 2722.07,-75.6466 2722.15,-68.6471"/>
-</g>
-<!-- Node46&#45;&gt;Node47 -->
-<g id="edge157" class="edge"><title>Node46&#45;&gt;Node47</title>
-<path fill="none" stroke="midnightblue" d="M2057.08,-873.444C2034.43,-864.517 1998.71,-850.439 1973.03,-840.317"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1973.98,-836.927 1963.39,-836.516 1971.41,-843.44 1973.98,-836.927"/>
-</g>
-<!-- Node47&#45;&gt;Node4 -->
-<g id="edge158" class="edge"><title>Node47&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M1941.79,-817.083C1941.79,-810.006 1941.79,-799.861 1941.79,-790.986"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1945.29,-790.751 1941.79,-780.751 1938.29,-790.751 1945.29,-790.751"/>
-</g>
-<!-- Node47&#45;&gt;Node6 -->
-<g id="edge159" class="edge"><title>Node47&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M1904.47,-824.012C1769.6,-816.379 1308.36,-786.258 1175.79,-725 1142.08,-709.425 1135.98,-698.77 1113.79,-669 1103.06,-654.605 1094.61,-635.906 1089.26,-622.261"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1092.42,-620.728 1085.65,-612.581 1085.87,-623.173 1092.42,-620.728"/>
-</g>
-<!-- Node47&#45;&gt;Node16 -->
-<g id="edge161" class="edge"><title>Node47&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M1978.24,-817.423C2113.53,-783.358 2587.85,-643.535 2758.79,-322 2801.74,-241.205 2732.73,-131.109 2702.67,-89.4245"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2705.34,-87.1492 2696.59,-81.1829 2699.71,-91.3068 2705.34,-87.1492"/>
-</g>
-<!-- Node47&#45;&gt;Node22 -->
-<g id="edge160" class="edge"><title>Node47&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M1904.59,-826.158C1704.24,-826.811 751.958,-827.384 461.787,-781 374.854,-767.104 346.329,-771.837 271.787,-725 186.528,-671.429 155.984,-650.961 119.787,-557 96.9391,-497.693 110.3,-476.844 119.787,-414 128.327,-357.425 122.56,-336.086 157.787,-291 192.352,-246.76 252.133,-217.477 290.008,-202.322"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="291.548,-205.479 299.603,-198.598 289.015,-198.954 291.548,-205.479"/>
+<!-- Node49&#45;&gt;Node50 -->
+<g id="edge211" class="edge"><title>Node49&#45;&gt;Node50</title>
+<path fill="none" stroke="midnightblue" d="M2340.1,-996.448C2334.34,-987.688 2325.77,-973.48 2321,-960 2301.35,-904.493 2293.82,-834.619 2291.23,-801.737"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2294.71,-801.453 2290.5,-791.733 2287.73,-801.96 2294.71,-801.453"/>
+</g>
+<!-- Node50&#45;&gt;Node4 -->
+<g id="edge212" class="edge"><title>Node50&#45;&gt;Node4</title>
+<path fill="none" stroke="midnightblue" d="M2274.58,-772.324C2259.46,-763.822 2236.18,-750.729 2218.53,-740.797"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2219.82,-737.507 2209.39,-735.655 2216.39,-743.608 2219.82,-737.507"/>
+</g>
+<!-- Node50&#45;&gt;Node33 -->
+<g id="edge213" class="edge"><title>Node50&#45;&gt;Node33</title>
+<path fill="none" stroke="midnightblue" d="M2299.65,-772.368C2320.4,-753.814 2369.49,-709.913 2395.74,-686.438"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2398.27,-688.867 2403.39,-679.591 2393.61,-683.649 2398.27,-688.867"/>
 </g>
 </g>
 </svg>
diff --git a/docs/api/doxygen/algorithm_8h_source.html b/docs/api/doxygen/algorithm_8h_source.html
index 55005c0..91b1e77 100644
--- a/docs/api/doxygen/algorithm_8h_source.html
+++ b/docs/api/doxygen/algorithm_8h_source.html
@@ -89,25 +89,26 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">algorithm.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="algorithm_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more c [...]
-<div class="ttc" id="structtvm_1_1relay_1_1ArgsortAttrs_html_a97f3acf400fafc612854c955a88673ea"><div class="ttname"><a href="structtvm_1_1relay_1_1ArgsortAttrs.html#a97f3acf400fafc612854c955a88673ea">tvm::relay::ArgsortAttrs::is_ascend</a></div><div class="ttdeci">bool is_ascend</div><div class="ttdef"><b>Definition:</b> algorithm.h:38</div></div>
+<a href="algorithm_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more c [...]
+<div class="ttc" id="structtvm_1_1relay_1_1ArgsortAttrs_html_a97f3acf400fafc612854c955a88673ea"><div class="ttname"><a href="structtvm_1_1relay_1_1ArgsortAttrs.html#a97f3acf400fafc612854c955a88673ea">tvm::relay::ArgsortAttrs::is_ascend</a></div><div class="ttdeci">bool is_ascend</div><div class="ttdef"><b>Definition:</b> algorithm.h:39</div></div>
+<div class="ttc" id="relay_2expr_8h_html"><div class="ttname"><a href="relay_2expr_8h.html">expr.h</a></div><div class="ttdoc">Relay expression language. </div></div>
 <div class="ttc" id="namespacetvm_html"><div class="ttname"><a href="namespacetvm.html">tvm</a></div><div class="ttdef"><b>Definition:</b> analyzer.h:36</div></div>
-<div class="ttc" id="structtvm_1_1relay_1_1ArgsortAttrs_html"><div class="ttname"><a href="structtvm_1_1relay_1_1ArgsortAttrs.html">tvm::relay::ArgsortAttrs</a></div><div class="ttdoc">Attributes used in argsort operators. </div><div class="ttdef"><b>Definition:</b> algorithm.h:36</div></div>
+<div class="ttc" id="structtvm_1_1relay_1_1ArgsortAttrs_html"><div class="ttname"><a href="structtvm_1_1relay_1_1ArgsortAttrs.html">tvm::relay::ArgsortAttrs</a></div><div class="ttdoc">Attributes used in argsort operators. </div><div class="ttdef"><b>Definition:</b> algorithm.h:37</div></div>
 <div class="ttc" id="ir_2attrs_8h_html"><div class="ttname"><a href="ir_2attrs_8h.html">attrs.h</a></div><div class="ttdoc">Helpers for attribute objects. </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1DataType_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></div><div class="ttdoc">Runtime primitive data type. </div><div class="ttdef"><b>Definition:</b> data_type.h:41</div></div>
-<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html_a99db259d4a1750452c2e69809e09d43c"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html#a99db259d4a1750452c2e69809e09d43c">tvm::relay::TopKAttrs::dtype</a></div><div class="ttdeci">DataType dtype</div><div class="ttdef"><b>Definition:</b> algorithm.h:59</div></div>
-<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html_a7513e738a33caefe6978de6416f57a1f"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html#a7513e738a33caefe6978de6416f57a1f">tvm::relay::TopKAttrs::axis</a></div><div class="ttdeci">int axis</div><div class="ttdef"><b>Definition:</b> algorithm.h:56</div></div>
-<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html_ae2ccec6187706f54757242e1839bb2d1"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html#ae2ccec6187706f54757242e1839bb2d1">tvm::relay::TopKAttrs::is_ascend</a></div><div class="ttdeci">bool is_ascend</div><div class="ttdef"><b>Definition:</b> algorithm.h:57</div></div>
+<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html_a99db259d4a1750452c2e69809e09d43c"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html#a99db259d4a1750452c2e69809e09d43c">tvm::relay::TopKAttrs::dtype</a></div><div class="ttdeci">DataType dtype</div><div class="ttdef"><b>Definition:</b> algorithm.h:60</div></div>
+<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html_a7513e738a33caefe6978de6416f57a1f"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html#a7513e738a33caefe6978de6416f57a1f">tvm::relay::TopKAttrs::axis</a></div><div class="ttdeci">int axis</div><div class="ttdef"><b>Definition:</b> algorithm.h:57</div></div>
+<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html_ae2ccec6187706f54757242e1839bb2d1"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html#ae2ccec6187706f54757242e1839bb2d1">tvm::relay::TopKAttrs::is_ascend</a></div><div class="ttdeci">bool is_ascend</div><div class="ttdef"><b>Definition:</b> algorithm.h:58</div></div>
 <div class="ttc" id="ir_2attrs_8h_html_a578da113eb199bad72e26c03ad24832f"><div class="ttname"><a href="ir_2attrs_8h.html#a578da113eb199bad72e26c03ad24832f">TVM_ATTR_FIELD</a></div><div class="ttdeci">#define TVM_ATTR_FIELD(FieldName)</div><div class="ttdoc">Declare an attribute field. </div><div class="ttdef"><b>Definition:</b> attrs.h:76</div></div>
 <div class="ttc" id="namespacetvm_html_a28c693333c2b15702b1a9a57dec0fbf5"><div class="ttname"><a href="namespacetvm.html#a28c693333c2b15702b1a9a57dec0fbf5">tvm::NullValue&lt; DataType &gt;</a></div><div class="ttdeci">DataType NullValue&lt; DataType &gt;()</div><div class="ttdef"><b>Definition:</b> attrs.h:90</div></div>
-<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html_a2d9b93c511148c070e7d5974d2620c6e"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html#a2d9b93c511148c070e7d5974d2620c6e">tvm::relay::TopKAttrs::TVM_DECLARE_ATTRS</a></div><div class="ttdeci">TVM_DECLARE_ATTRS(TopKAttrs,&quot;relay.attrs.TopkAttrs&quot;)</div><div class="ttdef"><b>Definition:</b> algorithm.h:61</div></div>
+<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html_a2d9b93c511148c070e7d5974d2620c6e"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html#a2d9b93c511148c070e7d5974d2620c6e">tvm::relay::TopKAttrs::TVM_DECLARE_ATTRS</a></div><div class="ttdeci">TVM_DECLARE_ATTRS(TopKAttrs,&quot;relay.attrs.TopkAttrs&quot;)</div><div class="ttdef"><b>Definition:</b> algorithm.h:62</div></div>
 <div class="ttc" id="base_8h_html"><div class="ttname"><a href="base_8h.html">base.h</a></div><div class="ttdoc">Base classes for the Relay IR. </div></div>
-<div class="ttc" id="structtvm_1_1relay_1_1ArgsortAttrs_html_a867e4a526a4b5e2512e658839d6c1a9e"><div class="ttname"><a href="structtvm_1_1relay_1_1ArgsortAttrs.html#a867e4a526a4b5e2512e658839d6c1a9e">tvm::relay::ArgsortAttrs::TVM_DECLARE_ATTRS</a></div><div class="ttdeci">TVM_DECLARE_ATTRS(ArgsortAttrs,&quot;relay.attrs.ArgsortAttrs&quot;)</div><div class="ttdef"><b>Definition:</b> algorithm.h:41</div></div>
-<div class="ttc" id="classtvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;. </div><div class="ttdef"><b>Definition:</b> attrs.h:621</div></div>
-<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html_a5717dfe7edcd2817fc35b2e84dc2305d"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html#a5717dfe7edcd2817fc35b2e84dc2305d">tvm::relay::TopKAttrs::ret_type</a></div><div class="ttdeci">std::string ret_type</div><div class="ttdef"><b>Definition:</b> algorithm.h:58</div></div>
-<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html">tvm::relay::TopKAttrs</a></div><div class="ttdef"><b>Definition:</b> algorithm.h:54</div></div>
-<div class="ttc" id="structtvm_1_1relay_1_1ArgsortAttrs_html_a533842c9351d0ec7f8e2673e94987957"><div class="ttname"><a href="structtvm_1_1relay_1_1ArgsortAttrs.html#a533842c9351d0ec7f8e2673e94987957">tvm::relay::ArgsortAttrs::dtype</a></div><div class="ttdeci">DataType dtype</div><div class="ttdef"><b>Definition:</b> algorithm.h:39</div></div>
-<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html_a8c10ab4cb2a3bf5b38b624dc1eff7b46"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html#a8c10ab4cb2a3bf5b38b624dc1eff7b46">tvm::relay::TopKAttrs::k</a></div><div class="ttdeci">int k</div><div class="ttdef"><b>Definition:</b> algorithm.h:55</div></div>
+<div class="ttc" id="structtvm_1_1relay_1_1ArgsortAttrs_html_a867e4a526a4b5e2512e658839d6c1a9e"><div class="ttname"><a href="structtvm_1_1relay_1_1ArgsortAttrs.html#a867e4a526a4b5e2512e658839d6c1a9e">tvm::relay::ArgsortAttrs::TVM_DECLARE_ATTRS</a></div><div class="ttdeci">TVM_DECLARE_ATTRS(ArgsortAttrs,&quot;relay.attrs.ArgsortAttrs&quot;)</div><div class="ttdef"><b>Definition:</b> algorithm.h:42</div></div>
+<div class="ttc" id="classtvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;. </div><div class="ttdef"><b>Definition:</b> attrs.h:634</div></div>
+<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html_a5717dfe7edcd2817fc35b2e84dc2305d"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html#a5717dfe7edcd2817fc35b2e84dc2305d">tvm::relay::TopKAttrs::ret_type</a></div><div class="ttdeci">std::string ret_type</div><div class="ttdef"><b>Definition:</b> algorithm.h:59</div></div>
+<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html_a5f602cd29db662fad78e59159c371c3e"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html#a5f602cd29db662fad78e59159c371c3e">tvm::relay::TopKAttrs::k</a></div><div class="ttdeci">Optional&lt; Integer &gt; k</div><div class="ttdef"><b>Definition:</b> algorithm.h:56</div></div>
+<div class="ttc" id="structtvm_1_1relay_1_1TopKAttrs_html"><div class="ttname"><a href="structtvm_1_1relay_1_1TopKAttrs.html">tvm::relay::TopKAttrs</a></div><div class="ttdef"><b>Definition:</b> algorithm.h:55</div></div>
+<div class="ttc" id="structtvm_1_1relay_1_1ArgsortAttrs_html_a533842c9351d0ec7f8e2673e94987957"><div class="ttname"><a href="structtvm_1_1relay_1_1ArgsortAttrs.html#a533842c9351d0ec7f8e2673e94987957">tvm::relay::ArgsortAttrs::dtype</a></div><div class="ttdeci">DataType dtype</div><div class="ttdef"><b>Definition:</b> algorithm.h:40</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/api/doxygen/analyzer_8h_source.html b/docs/api/doxygen/analyzer_8h_source.html
index 5e8ffe0..17bd1b6 100644
--- a/docs/api/doxygen/analyzer_8h_source.html
+++ b/docs/api/doxygen/analyzer_8h_source.html
@@ -89,22 +89,23 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">analyzer.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="analyzer_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more co [...]
+<a href="analyzer_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more co [...]
 <div class="ttc" id="classtvm_1_1arith_1_1ConstIntBoundNode_html_a035f9270597638a44a55dd2552f4ad20"><div class="ttname"><a href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a035f9270597638a44a55dd2552f4ad20">tvm::arith::ConstIntBoundNode::kPosInf</a></div><div class="ttdeci">static const constexpr int64_t kPosInf</div><div class="ttdoc">Number to represent +inf. </div><div class="ttdef"><b>Definition:</b> analyzer.h:76</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ConstIntBoundNode_html_a7187224ffaf688dd1aa0f6069b393f92"><div class="ttname"><a href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a7187224ffaf688dd1aa0f6069b393f92">tvm::arith::ConstIntBoundNode::max_value</a></div><div class="ttdeci">int64_t max_value</div><div class="ttdef"><b>Definition:</b> analyzer.h:64</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ModularSetNode_html_a5b5bf53e26881ec83777f2a3c41a4031"><div class="ttname"><a href="classtvm_1_1arith_1_1ModularSetNode.html#a5b5bf53e26881ec83777f2a3c41a4031">tvm::arith::ModularSetNode::VisitAttrs</a></div><div class="ttdeci">void VisitAttrs(tvm::AttrVisitor *v)</div><div class="ttdef"><b>Definition:</b> analyzer.h:180</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ConstIntBoundNode_html"><div class="ttname"><a href="classtvm_1_1arith_1_1ConstIntBoundNode.html">tvm::arith::ConstIntBoundNode</a></div><div class="ttdoc">Constant integer up and lower bound(inclusive). Useful for value bound analysis. </div><div class="ttdef"><b>Definition:</b> analyzer.h:61</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ModularSetNode_html_a0531d08d8529454c726a9a20a2002ee6"><div class="ttname"><a href="classtvm_1_1arith_1_1ModularSetNode.html#a0531d08d8529454c726a9a20a2002ee6">tvm::arith::ModularSetNode::coeff</a></div><div class="ttdeci">int64_t coeff</div><div class="ttdoc">linear co-efficient </div><div class="ttdef"><b>Definition:</b> analyzer.h:176</div></div>
+<div class="ttc" id="classtvm_1_1arith_1_1ConstIntBoundAnalyzer_html_a14736850005ba70395b09c2fb9113770"><div class="ttname"><a href="classtvm_1_1arith_1_1ConstIntBoundAnalyzer.html#a14736850005ba70395b09c2fb9113770">tvm::arith::ConstIntBoundAnalyzer::BoundMapType</a></div><div class="ttdeci">std::unordered_map&lt; PrimExpr, ConstIntBound, ObjectPtrHash, ObjectPtrEqual &gt; BoundMapType</div><div class="ttdef"><b>Definition:</b> analyzer.h:110</div></div>
 <div class="ttc" id="classtvm_1_1SEqualReducer_html"><div class="ttname"><a href="classtvm_1_1SEqualReducer.html">tvm::SEqualReducer</a></div><div class="ttdoc">A Reducer class to reduce the structural equality result of two objects. </div><div class="ttdef"><b>Definition:</b> structural_equal.h:102</div></div>
 <div class="ttc" id="namespacetvm_html_a7f0738778e1a4f1725bea3d6c801aab4"><div class="ttname"><a href="namespacetvm.html#a7f0738778e1a4f1725bea3d6c801aab4">tvm::Bind</a></div><div class="ttdeci">Type Bind(const Type &amp;type, const Map&lt; TypeVar, Type &gt; &amp;args_map)</div><div class="ttdoc">Bind free type variables in the type. </div></div>
 <div class="ttc" id="ir_2expr_8h_html"><div class="ttname"><a href="ir_2expr_8h.html">expr.h</a></div><div class="ttdoc">Base expr nodes in TVM. </div></div>
 <div class="ttc" id="namespacetvm_html"><div class="ttname"><a href="namespacetvm.html">tvm</a></div><div class="ttdef"><b>Definition:</b> analyzer.h:36</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ModularSetNode_html"><div class="ttname"><a href="classtvm_1_1arith_1_1ModularSetNode.html">tvm::arith::ModularSetNode</a></div><div class="ttdoc">Range of a linear integer function. Use to do specify the possible index values. </div><div class="ttdef"><b>Definition:</b> analyzer.h:173</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1CanonicalSimplifier_html"><div class="ttname"><a href="classtvm_1_1arith_1_1CanonicalSimplifier.html">tvm::arith::CanonicalSimplifier</a></div><div class="ttdoc">Canonical-form based simplifier. </div><div class="ttdef"><b>Definition:</b> analyzer.h:279</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1Var_html"><div class="ttname"><a href="classtvm_1_1tir_1_1Var.html">tvm::tir::Var</a></div><div class="ttdoc">a named variable in TVM </div><div class="ttdef"><b>Definition:</b> var.h:87</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1Var_html"><div class="ttname"><a href="classtvm_1_1tir_1_1Var.html">tvm::tir::Var</a></div><div class="ttdoc">a named variable in TIR </div><div class="ttdef"><b>Definition:</b> var.h:87</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ConstIntBoundNode_html_a0d39b4e097e1e0e4fffd85d3d2b22459"><div class="ttname"><a href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a0d39b4e097e1e0e4fffd85d3d2b22459">tvm::arith::ConstIntBoundNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const ConstIntBoundNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> analyzer.h:71</div></div>
 <div class="ttc" id="classtvm_1_1AttrVisitor_html"><div class="ttname"><a href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a></div><div class="ttdoc">Visitor class for to get the attributesof a AST/IR node. The content is going to be called for each f...</div><div class="ttdef"><b>Definition:</b> reflection.h:52</div></div>
-<div class="ttc" id="classtvm_1_1Range_html"><div class="ttname"><a href="classtvm_1_1Range.html">tvm::Range</a></div><div class="ttdoc">Range constainer. </div><div class="ttdef"><b>Definition:</b> expr.h:438</div></div>
+<div class="ttc" id="classtvm_1_1Range_html"><div class="ttname"><a href="classtvm_1_1Range.html">tvm::Range</a></div><div class="ttdoc">Range constainer. </div><div class="ttdef"><b>Definition:</b> expr.h:440</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ModularSet_html"><div class="ttname"><a href="classtvm_1_1arith_1_1ModularSet.html">tvm::arith::ModularSet</a></div><div class="ttdoc">reference of ModularSetNode </div><div class="ttdef"><b>Definition:</b> analyzer.h:197</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1Analyzer_html_a0d054ea2ea5b7e99f0883c00672ec831"><div class="ttname"><a href="classtvm_1_1arith_1_1Analyzer.html#a0d054ea2ea5b7e99f0883c00672ec831">tvm::arith::Analyzer::int_set</a></div><div class="ttdeci">IntSetAnalyzer int_set</div><div class="ttdoc">sub-analyzer: int set </div><div class="ttdef"><b>Definition:</b> analyzer.h:396</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ConstIntBoundAnalyzer_html"><div class="ttname"><a href="classtvm_1_1arith_1_1ConstIntBoundAnalyzer.html">tvm::arith::ConstIntBoundAnalyzer</a></div><div class="ttdoc">Analyzer to get constant integer bound over expression. </div><div class="ttdef"><b>Definition:</b> analyzer.h:108</div></div>
@@ -122,17 +123,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1arith_1_1ConstraintContext_html"><div class="ttname"><a href="classtvm_1_1arith_1_1ConstraintContext.html">tvm::arith::ConstraintContext</a></div><div class="ttdoc">Constraint context. </div><div class="ttdef"><b>Definition:</b> analyzer.h:323</div></div>
 <div class="ttc" id="namespacetvm_1_1te_html_ae0c71f84710b436cbe0b32289d0838f4"><div class="ttname"><a href="namespacetvm_1_1te.html#ae0c71f84710b436cbe0b32289d0838f4">tvm::te::var</a></div><div class="ttdeci">Var var(std::string name_hint, DataType t=DataType::Int(32))</div><div class="ttdoc">Construct a new Var expression. </div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IntSetAnalyzer_html"><div class="ttname"><a href="classtvm_1_1arith_1_1IntSetAnalyzer.html">tvm::arith::IntSetAnalyzer</a></div><div class="ttdoc">Integer set analyzer. </div><div class="ttdef"><b>Definition:</b> analyzer.h:349</div></div>
-<div class="ttc" id="classtvm_1_1arith_1_1ConstIntBoundAnalyzer_html_a453ffd907b8dcac5c9ceb0f23291fa4e"><div class="ttname"><a href="classtvm_1_1arith_1_1ConstIntBoundAnalyzer.html#a453ffd907b8dcac5c9ceb0f23291fa4e">tvm::arith::ConstIntBoundAnalyzer::BoundMapType</a></div><div class="ttdeci">std::unordered_map&lt; PrimExpr, ConstIntBound, ObjectHash, ObjectEqual &gt; BoundMapType</div><div class="ttdef"><b>Definition:</b> analyzer.h:110</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ConstIntBoundNode_html_a0761897bf16ab73b848bf360e9b195a3"><div class="ttname"><a href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a0761897bf16ab73b848bf360e9b195a3">tvm::arith::ConstIntBoundNode::min_value</a></div><div class="ttdeci">int64_t min_value</div><div class="ttdef"><b>Definition:</b> analyzer.h:63</div></div>
 <div class="ttc" id="namespacetvm_1_1tir_1_1transform_html_a817801e8c9488f712804d2d0b821acf0"><div class="ttname"><a href="namespacetvm_1_1tir_1_1transform.html#a817801e8c9488f712804d2d0b821acf0">tvm::tir::transform::Simplify</a></div><div class="ttdeci">Pass Simplify()</div><div class="ttdoc">Run arithmetic simplifications on the statements and expressions. </div></div>
 <div class="ttc" id="namespacetopi_html_ae10e1fb8c765a9ae15c12f45199375b3"><div class="ttname"><a href="namespacetopi.html#ae10e1fb8c765a9ae15c12f45199375b3">topi::equal</a></div><div class="ttdeci">tvm::PrimExpr equal(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:390</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1Analyzer_html_a435eba3ac3a839d3c53b74acfdc10146"><div class="ttname"><a href="classtvm_1_1arith_1_1Analyzer.html#a435eba3ac3a839d3c53b74acfdc10146">tvm::arith::Analyzer::const_int_bound</a></div><div class="ttdeci">ConstIntBoundAnalyzer const_int_bound</div><div class="ttdoc">sub-analyzer: const integer bound </div><div class="ttdef"><b>Definition:</b> analyzer.h:388</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ConstIntBoundNode_html_a652c9c965a3942f1ca45f7929ddd554c"><div class="ttname"><a href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a652c9c965a3942f1ca45f7929ddd554c">tvm::arith::ConstIntBoundNode::_type_key</a></div><div class="ttdeci">static constexpr const char * _type_key</div><div class="ttdef"><b>Definition:</b> analyzer.h:83</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1RewriteSimplifier_html"><div class="ttname"><a href="classtvm_1_1arith_1_1RewriteSimplifier.html">tvm::arith::RewriteSimplifier</a></div><div class="ttdoc">Rewrite-rule based simplifier. </div><div class="ttdef"><b>Definition:</b> analyzer.h:245</div></div>
-<div class="ttc" id="classtvm_1_1Map_html"><div class="ttname"><a href="classtvm_1_1Map.html">tvm::Map</a></div><div class="ttdoc">Map container of NodeRef-&gt;NodeRef in DSL graph. Map implements copy on write semantics, which means map is mutable but copy will happen when array is referenced in more than two places. </div><div class="ttdef"><b>Definition:</b> container.h:91</div></div>
+<div class="ttc" id="classtvm_1_1Map_html"><div class="ttname"><a href="classtvm_1_1Map.html">tvm::Map</a></div><div class="ttdoc">Map container of NodeRef-&gt;NodeRef in DSL graph. Map implements copy on write semantics, which means map is mutable but copy will happen when array is referenced in more than two places. </div><div class="ttdef"><b>Definition:</b> container.h:103</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1Analyzer_html_acac92a9522deabe289fea99efbd9eaec"><div class="ttname"><a href="classtvm_1_1arith_1_1Analyzer.html#acac92a9522deabe289fea99efbd9eaec">tvm::arith::Analyzer::modular_set</a></div><div class="ttdeci">ModularSetAnalyzer modular_set</div><div class="ttdoc">sub-analyzer: modular set </div><div class="ttdef"><b>Definition:</b> analyzer.h:390</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ConstIntBound_html"><div class="ttname"><a href="classtvm_1_1arith_1_1ConstIntBound.html">tvm::arith::ConstIntBound</a></div><div class="ttdoc">reference class to ConstIntBoundNode </div><div class="ttdef"><b>Definition:</b> analyzer.h:91</div></div>
-<div class="ttc" id="classtvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Reference to PrimExprNode. </div><div class="ttdef"><b>Definition:</b> expr.h:101</div></div>
+<div class="ttc" id="classtvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Reference to PrimExprNode. </div><div class="ttdef"><b>Definition:</b> expr.h:103</div></div>
 <div class="ttc" id="int__set_8h_html"><div class="ttname"><a href="int__set_8h.html">int_set.h</a></div><div class="ttdoc">Integer set. </div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1Analyzer_html"><div class="ttname"><a href="classtvm_1_1arith_1_1Analyzer.html">tvm::arith::Analyzer</a></div><div class="ttdoc">Analyzer that contains bunch of sub-analyzers. </div><div class="ttdef"><b>Definition:</b> analyzer.h:380</div></div>
 <div class="ttc" id="with_8h_html"><div class="ttname"><a href="with_8h.html">with.h</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python&amp;#39;s with syntax...</div></div>
diff --git a/docs/api/doxygen/annotated.html b/docs/api/doxygen/annotated.html
index 8a641c9..29a096e 100644
--- a/docs/api/doxygen/annotated.html
+++ b/docs/api/doxygen/annotated.html
@@ -182,159 +182,170 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <tr id="row_2_2_30_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ConcatenateAttrs.html" target="_self">ConcatenateAttrs</a></td><td class="desc">Attributes used in concatenate operators </td></tr>
 <tr id="row_2_2_31_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Constant.html" target="_self">Constant</a></td><td class="desc"></td></tr>
 <tr id="row_2_2_32_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ConstantNode.html" target="_self">ConstantNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Constant.html">Constant</a> tensor type </td></tr>
-<tr id="row_2_2_33_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ConstructorValue.html" target="_self">ConstructorValue</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_34_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ConstructorValueObj.html" target="_self">ConstructorValueObj</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_35_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv1DAttrs.html" target="_self">Conv1DAttrs</a></td><td class="desc">Attributes used in 1D convolution operators </td></tr>
-<tr id="row_2_2_36_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv1DTransposeAttrs.html" target="_self">Conv1DTransposeAttrs</a></td><td class="desc">Attributes used in 1D transposed convolution operator </td></tr>
-<tr id="row_2_2_37_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv2DAttrs.html" target="_self">Conv2DAttrs</a></td><td class="desc">Attributes used in convolution operators </td></tr>
-<tr id="row_2_2_38_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv2DTransposeAttrs.html" target="_self">Conv2DTransposeAttrs</a></td><td class="desc">Attributes used in transposed convolution operator </td></tr>
-<tr id="row_2_2_39_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv2DWinogradAttrs.html" target="_self">Conv2DWinogradAttrs</a></td><td class="desc">Attributes used in convolution operators with winograd algorithm </td></tr>
-<tr id="row_2_2_40_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv2DWinogradNNPACKWeightTransformAttrs.html" target="_self">Conv2DWinogradNNPACKWeightTransformAttrs</a></td><td class="desc">Attributes used in winograd weight transformation operators </td></tr>
-<tr id="row_2_2_41_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv3DAttrs.html" target="_self">Conv3DAttrs</a></td><td class="desc">Attributes used in convolution operators </td></tr>
-<tr id="row_2_2_42_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv3DWinogradAttrs.html" target="_self">Conv3DWinogradAttrs</a></td><td class="desc">Attributes used in 3d winograd convolution operators </td></tr>
-<tr id="row_2_2_43_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ConvWinogradWeightTransformAttrs.html" target="_self">ConvWinogradWeightTransformAttrs</a></td><td class="desc">Attributes used in winograd weight transformation operators </td></tr>
-<tr id="row_2_2_44_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1CorrelationAttrs.html" target="_self">CorrelationAttrs</a></td><td class="desc">Attributes used in correlation operators </td></tr>
-<tr id="row_2_2_45_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1CropAndResizeAttrs.html" target="_self">CropAndResizeAttrs</a></td><td class="desc">Attributes used in image crop_and_resize operator </td></tr>
-<tr id="row_2_2_46_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1DebugAttrs.html" target="_self">DebugAttrs</a></td><td class="desc">Options for the debug operators </td></tr>
-<tr id="row_2_2_47_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1DeformableConv2DAttrs.html" target="_self">DeformableConv2DAttrs</a></td><td class="desc">Attributes for DeformableConv2D operator </td></tr>
-<tr id="row_2_2_48_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1DenseAttrs.html" target="_self">DenseAttrs</a></td><td class="desc">Attributes for dense operator </td></tr>
-<tr id="row_2_2_49_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1DeviceCopyAttrs.html" target="_self">DeviceCopyAttrs</a></td><td class="desc">Options for the device copy operators </td></tr>
-<tr id="row_2_2_50_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPattern.html" target="_self">DFPattern</a></td><td class="desc">Managed reference to dataflow patterns </td></tr>
-<tr id="row_2_2_51_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternCallback.html" target="_self">DFPatternCallback</a></td><td class="desc">Managed reference to dataflow pattern callbacks </td></tr>
-<tr id="row_2_2_52_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternCallbackNode.html" target="_self">DFPatternCallbackNode</a></td><td class="desc">Base type of all dataflow pattern callbacks </td></tr>
-<tr id="row_2_2_53_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternFunctor.html" target="_self">DFPatternFunctor</a></td><td class="desc">A dynamical functor that dispatches on in the first <a class="el" href="classtvm_1_1relay_1_1DFPattern.html" title="Managed reference to dataflow patterns. ">DFPattern</a> argument </td></tr>
-<tr id="row_2_2_54_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternFunctor_3_01R_07const_01DFPattern_01_6n_00_01Args_8_8_8_08_4.html" target="_self">DFPatternFunctor&lt; R(const DFPattern &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_55_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternNode.html" target="_self">DFPatternNode</a></td><td class="desc">Base type of all dataflow patterns </td></tr>
-<tr id="row_2_2_56_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternVisitor.html" target="_self">DFPatternVisitor</a></td><td class="desc">A simple visitor wrapper around <a class="el" href="classtvm_1_1relay_1_1DFPatternFunctor.html" title="A dynamical functor that dispatches on in the first DFPattern argument. ">DFPatternFunctor</a [...]
-<tr id="row_2_2_57_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1DilateAttrs.html" target="_self">DilateAttrs</a></td><td class="desc">Attributes used in dilate operator </td></tr>
-<tr id="row_2_2_58_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Dilation2DAttrs.html" target="_self">Dilation2DAttrs</a></td><td class="desc">Attributes used in dilation operators </td></tr>
-<tr id="row_2_2_59_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DominatorPattern.html" target="_self">DominatorPattern</a></td><td class="desc">A pattern which matches a variable length dominator path </td></tr>
-<tr id="row_2_2_60_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DominatorPatternNode.html" target="_self">DominatorPatternNode</a></td><td class="desc">Dominated Graph <a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT match pattern in Relay. ">Pattern</a> <a class="el" href="classtvm_1_1rela [...]
-<tr id="row_2_2_61_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1DropoutAttrs.html" target="_self">DropoutAttrs</a></td><td class="desc">Attributes used in dropout operator </td></tr>
-<tr id="row_2_2_62_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ExpandDimsAttrs.html" target="_self">ExpandDimsAttrs</a></td><td class="desc">Attributes used in expand_dims operators </td></tr>
-<tr id="row_2_2_63_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprFunctor.html" target="_self">ExprFunctor</a></td><td class="desc">A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerful Visitor, since it allows you to define function signatures of Visit <a class="el" href="classtvm_1_1rel [...]
-<tr id="row_2_2_64_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprFunctor_3_01R_07const_01Expr_01_6n_00_01Args_8_8_8_08_4.html" target="_self">ExprFunctor&lt; R(const Expr &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_65_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprMutator.html" target="_self">ExprMutator</a></td><td class="desc">A wrapper around <a class="el" href="classtvm_1_1relay_1_1ExprFunctor.html" title="A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerfu...">ExprFunctor</a> w [...]
-<tr id="row_2_2_66_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprPattern.html" target="_self">ExprPattern</a></td><td class="desc">A pattern which matches a literal expression </td></tr>
-<tr id="row_2_2_67_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprPatternNode.html" target="_self">ExprPatternNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT match pattern in Relay. ">Pattern</a> for Relay Expression </td></tr>
-<tr id="row_2_2_68_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprRewriter.html" target="_self">ExprRewriter</a></td><td class="desc">A non-iterating Expression Rewriter </td></tr>
-<tr id="row_2_2_69_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprVisitor.html" target="_self">ExprVisitor</a></td><td class="desc">A simple visitor wrapper around <a class="el" href="classtvm_1_1relay_1_1ExprFunctor.html" title="A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerfu...">Ex [...]
-<tr id="row_2_2_70_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1FeatureSet.html" target="_self">FeatureSet</a></td><td class="desc">A finite set of Feature </td></tr>
-<tr id="row_2_2_71_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1FIFOBufferAttrs.html" target="_self">FIFOBufferAttrs</a></td><td class="desc">Attributes for FIFO buffer operator </td></tr>
-<tr id="row_2_2_72_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Function.html" target="_self">Function</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1relay_1_1FunctionNode.html" title="Relay Function container. ">FunctionNode</a> </td></tr>
-<tr id="row_2_2_73_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1FunctionNode.html" target="_self">FunctionNode</a></td><td class="desc">Relay <a class="el" href="classtvm_1_1relay_1_1Function.html" title="Managed reference to FunctionNode. ">Function</a> container </td></tr>
-<tr id="row_2_2_74_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1GetValidCountsAttrs.html" target="_self">GetValidCountsAttrs</a></td><td class="desc">Attributes used in get_valid_counts operator </td></tr>
-<tr id="row_2_2_75_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1GlobalPool2DAttrs.html" target="_self">GlobalPool2DAttrs</a></td><td class="desc">Attributes for global pool operator </td></tr>
-<tr id="row_2_2_76_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1GridSampleAttrs.html" target="_self">GridSampleAttrs</a></td><td class="desc">Attributes used in image grid_sample operator </td></tr>
-<tr id="row_2_2_77_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1GroupNormAttrs.html" target="_self">GroupNormAttrs</a></td><td class="desc">Attributes used in group_norm operator </td></tr>
-<tr id="row_2_2_78_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Id.html" target="_self">Id</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_79_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1IdNode.html" target="_self">IdNode</a></td><td class="desc">The unique identifier of variables </td></tr>
-<tr id="row_2_2_80_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1If.html" target="_self">If</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_81_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1IfNode.html" target="_self">IfNode</a></td><td class="desc">Container of <a class="el" href="classtvm_1_1relay_1_1If.html">If</a> </td></tr>
-<tr id="row_2_2_82_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1InitOpAttrs.html" target="_self">InitOpAttrs</a></td><td class="desc">Attributes that specify a tensor </td></tr>
-<tr id="row_2_2_83_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1InstanceNormAttrs.html" target="_self">InstanceNormAttrs</a></td><td class="desc">Attributes used in instance_norm operator </td></tr>
-<tr id="row_2_2_84_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1InterpreterClosure.html" target="_self">InterpreterClosure</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_85_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1InterpreterClosureObj.html" target="_self">InterpreterClosureObj</a></td><td class="desc">The container type of Closures used by the interpreter </td></tr>
-<tr id="row_2_2_86_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1L2NormalizeAttrs.html" target="_self">L2NormalizeAttrs</a></td><td class="desc">Attributes for L2Normalize operator </td></tr>
-<tr id="row_2_2_87_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1LayerNormAttrs.html" target="_self">LayerNormAttrs</a></td><td class="desc">Attributes used in layer_norm operator </td></tr>
-<tr id="row_2_2_88_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1LayoutTransformAttrs.html" target="_self">LayoutTransformAttrs</a></td><td class="desc">Attributes for LayoutTransform operator </td></tr>
-<tr id="row_2_2_89_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1LeakyReluAttrs.html" target="_self">LeakyReluAttrs</a></td><td class="desc">Attributes for leaky relu operator </td></tr>
-<tr id="row_2_2_90_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Let.html" target="_self">Let</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_91_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1LetNode.html" target="_self">LetNode</a></td><td class="desc">A binding of a sub-network </td></tr>
-<tr id="row_2_2_92_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1LRNAttrs.html" target="_self">LRNAttrs</a></td><td class="desc">Attributes for LRN operator </td></tr>
-<tr id="row_2_2_93_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Match.html" target="_self">Match</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_94_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1MatchNode.html" target="_self">MatchNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Match.html">Match</a> container node </td></tr>
-<tr id="row_2_2_95_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1MaxPool1DAttrs.html" target="_self">MaxPool1DAttrs</a></td><td class="desc">Attributes for 1D max pool operator </td></tr>
-<tr id="row_2_2_96_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1MaxPool2DAttrs.html" target="_self">MaxPool2DAttrs</a></td><td class="desc">Attributes for max pool operator </td></tr>
-<tr id="row_2_2_97_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1MaxPool3DAttrs.html" target="_self">MaxPool3DAttrs</a></td><td class="desc">Attributes for 3D max pool operator </td></tr>
-<tr id="row_2_2_98_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1MirrorPadAttrs.html" target="_self">MirrorPadAttrs</a></td><td class="desc">Attributes used for the MirrorPadding operator </td></tr>
-<tr id="row_2_2_99_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1MixedModeMutator.html" target="_self">MixedModeMutator</a></td><td class="desc">Non-recursive DFS Graph Traversal for Custom Rewriting Passes </td></tr>
-<tr id="row_2_2_100_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1MixedModeVisitor.html" target="_self">MixedModeVisitor</a></td><td class="desc">A wrapper around <a class="el" href="classtvm_1_1relay_1_1ExprVisitor.html" title="A simple visitor wrapper around ExprFunctor. Recursively visit the content. ">ExprVisitor</a> which traverses th [...]
-<tr id="row_2_2_101_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1MultiBoxPriorAttrs.html" target="_self">MultiBoxPriorAttrs</a></td><td class="desc">Attributes used in multibox_prior operators </td></tr>
-<tr id="row_2_2_102_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1MultiBoxTransformLocAttrs.html" target="_self">MultiBoxTransformLocAttrs</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_103_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1NdarraySizeAttrs.html" target="_self">NdarraySizeAttrs</a></td><td class="desc">Attributes for ndarray_size operator </td></tr>
-<tr id="row_2_2_104_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1NonMaximumSuppressionAttrs.html" target="_self">NonMaximumSuppressionAttrs</a></td><td class="desc">Attributes used in non_maximum_suppression operator </td></tr>
-<tr id="row_2_2_105_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1OnDeviceAttrs.html" target="_self">OnDeviceAttrs</a></td><td class="desc">Options for the device annotation operators </td></tr>
-<tr id="row_2_2_106_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1OneHotAttrs.html" target="_self">OneHotAttrs</a></td><td class="desc">Attributes used in one-hot operator </td></tr>
-<tr id="row_2_2_107_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpImplementation.html" target="_self">OpImplementation</a></td><td class="desc">Operator implementation class </td></tr>
-<tr id="row_2_2_108_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpImplementationNode.html" target="_self">OpImplementationNode</a></td><td class="desc">Operator implementation that includes compute and schedule function </td></tr>
-<tr id="row_2_2_109_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpSpecialization.html" target="_self">OpSpecialization</a></td><td class="desc">Operator specialization class </td></tr>
-<tr id="row_2_2_110_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpSpecializationNode.html" target="_self">OpSpecializationNode</a></td><td class="desc">Specialized implementations for operators under certain conditions </td></tr>
-<tr id="row_2_2_111_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpStrategy.html" target="_self">OpStrategy</a></td><td class="desc">Operator strategy class </td></tr>
-<tr id="row_2_2_112_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpStrategyNode.html" target="_self">OpStrategyNode</a></td><td class="desc">Operator strategy to choose implementation </td></tr>
-<tr id="row_2_2_113_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1PadAttrs.html" target="_self">PadAttrs</a></td><td class="desc">Attributes used for the padding operator </td></tr>
-<tr id="row_2_2_114_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Pattern.html" target="_self">Pattern</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT match pattern in Relay. ">Pattern</a> is the base type for an ADT match pattern in Relay </td></tr>
-<tr id="row_2_2_115_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternConstructor.html" target="_self">PatternConstructor</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_116_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternConstructorNode.html" target="_self">PatternConstructorNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1PatternVar.html">PatternVar</a> container node </td></tr>
-<tr id="row_2_2_117_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternFunctor.html" target="_self">PatternFunctor</a></td><td class="desc">A dynamical functor on ADT patterns that dispatches on its first argument. You can use this as a more powerful visitor, since it allows you to define the types of further arguments to VisitPattern </ [...]
-<tr id="row_2_2_118_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternFunctor_3_01R_07const_01Pattern_01_6n_00_01Args_8_8_8_08_4.html" target="_self">PatternFunctor&lt; R(const Pattern &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_119_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternMutator.html" target="_self">PatternMutator</a></td><td class="desc">A wrapper around <a class="el" href="classtvm_1_1relay_1_1ExprFunctor.html" title="A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerfu...">ExprFuncto [...]
-<tr id="row_2_2_120_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternNode.html" target="_self">PatternNode</a></td><td class="desc">Base type for declaring relay pattern </td></tr>
-<tr id="row_2_2_121_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternTuple.html" target="_self">PatternTuple</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_122_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternTupleNode.html" target="_self">PatternTupleNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1PatternVar.html">PatternVar</a> container node </td></tr>
-<tr id="row_2_2_123_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternVar.html" target="_self">PatternVar</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_124_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternVarNode.html" target="_self">PatternVarNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1PatternVar.html">PatternVar</a> container node </td></tr>
-<tr id="row_2_2_125_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternVisitor.html" target="_self">PatternVisitor</a></td><td class="desc">A simple visitor wrapper around <a class="el" href="classtvm_1_1relay_1_1PatternFunctor.html" title="A dynamical functor on ADT patterns that dispatches on its first argument. You can use this as a m [...]
-<tr id="row_2_2_126_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternWildcard.html" target="_self">PatternWildcard</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_127_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternWildcardNode.html" target="_self">PatternWildcardNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1PatternWildcard.html">PatternWildcard</a> container node </td></tr>
-<tr id="row_2_2_128_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1PReluAttrs.html" target="_self">PReluAttrs</a></td><td class="desc">Attributes for prelu operator </td></tr>
-<tr id="row_2_2_129_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ProposalAttrs.html" target="_self">ProposalAttrs</a></td><td class="desc">Attributes used in proposal operators </td></tr>
-<tr id="row_2_2_130_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RecClosure.html" target="_self">RecClosure</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_131_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RecClosureObj.html" target="_self">RecClosureObj</a></td><td class="desc">The container type of <a class="el" href="classtvm_1_1relay_1_1RecClosure.html">RecClosure</a> </td></tr>
-<tr id="row_2_2_132_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ReduceAttrs.html" target="_self">ReduceAttrs</a></td><td class="desc">Attributes for Reduce operators </td></tr>
-<tr id="row_2_2_133_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefCreate.html" target="_self">RefCreate</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_134_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefCreateNode.html" target="_self">RefCreateNode</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_135_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefRead.html" target="_self">RefRead</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_136_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefReadNode.html" target="_self">RefReadNode</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_137_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefValue.html" target="_self">RefValue</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_138_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1RefValueObj.html" target="_self">RefValueObj</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_139_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefWrite.html" target="_self">RefWrite</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_140_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefWriteNode.html" target="_self">RefWriteNode</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_141_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RelayNode.html" target="_self">RelayNode</a></td><td class="desc">This is the base node container of all relay structures </td></tr>
-<tr id="row_2_2_142_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1RepeatAttrs.html" target="_self">RepeatAttrs</a></td><td class="desc">Attributes used in repeat operators </td></tr>
-<tr id="row_2_2_143_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ReshapeAttrs.html" target="_self">ReshapeAttrs</a></td><td class="desc">Attributes used in reshape operators </td></tr>
-<tr id="row_2_2_144_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Resize3dAttrs.html" target="_self">Resize3dAttrs</a></td><td class="desc">Attributes used in image resize3d operator </td></tr>
-<tr id="row_2_2_145_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ResizeAttrs.html" target="_self">ResizeAttrs</a></td><td class="desc">Attributes used in image resize operator </td></tr>
-<tr id="row_2_2_146_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ReverseAttrs.html" target="_self">ReverseAttrs</a></td><td class="desc">Attributes used in reverse operators </td></tr>
-<tr id="row_2_2_147_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ROIAlignAttrs.html" target="_self">ROIAlignAttrs</a></td><td class="desc">Attributes used in roi_align operators </td></tr>
-<tr id="row_2_2_148_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ROIPoolAttrs.html" target="_self">ROIPoolAttrs</a></td><td class="desc">Attributes used in roi_pool operators </td></tr>
-<tr id="row_2_2_149_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SequenceMaskAttrs.html" target="_self">SequenceMaskAttrs</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_150_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ShapeFuncAttrs.html" target="_self">ShapeFuncAttrs</a></td><td class="desc">Options for the shape function operator </td></tr>
-<tr id="row_2_2_151_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ShapeOfAttrs.html" target="_self">ShapeOfAttrs</a></td><td class="desc">Attributes for ShapeOf operator </td></tr>
-<tr id="row_2_2_152_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SliceLikeAttrs.html" target="_self">SliceLikeAttrs</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_153_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SoftmaxAttrs.html" target="_self">SoftmaxAttrs</a></td><td class="desc">Attributes used in softmax operators </td></tr>
-<tr id="row_2_2_154_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SparseDenseAttrs.html" target="_self">SparseDenseAttrs</a></td><td class="desc">Attributes for sparse_dense operator </td></tr>
-<tr id="row_2_2_155_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SparseTransposeAttrs.html" target="_self">SparseTransposeAttrs</a></td><td class="desc">Attributes for sparse_transpose operator </td></tr>
-<tr id="row_2_2_156_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SplitAttrs.html" target="_self">SplitAttrs</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_157_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SqueezeAttrs.html" target="_self">SqueezeAttrs</a></td><td class="desc">Attributes used in squeeze operators </td></tr>
-<tr id="row_2_2_158_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1StackAttrs.html" target="_self">StackAttrs</a></td><td class="desc">Attributes used in stack operators </td></tr>
-<tr id="row_2_2_159_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1StridedSliceAttrs.html" target="_self">StridedSliceAttrs</a></td><td class="desc">Attributes for StridedSlice operator </td></tr>
-<tr id="row_2_2_160_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SubPixelAttrs.html" target="_self">SubPixelAttrs</a></td><td class="desc">Attributes used in subpixel operators </td></tr>
-<tr id="row_2_2_161_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1TakeAttrs.html" target="_self">TakeAttrs</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_162_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TempExpr.html" target="_self">TempExpr</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_163_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TempExprNode.html" target="_self">TempExprNode</a></td><td class="desc">Base class of the temporary expression </td></tr>
-<tr id="row_2_2_164_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1TileAttrs.html" target="_self">TileAttrs</a></td><td class="desc">Attributes used in tile operators </td></tr>
-<tr id="row_2_2_165_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1TopKAttrs.html" target="_self">TopKAttrs</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_166_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1TransposeAttrs.html" target="_self">TransposeAttrs</a></td><td class="desc">Attributes used in transpose operators </td></tr>
-<tr id="row_2_2_167_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Tuple.html" target="_self">Tuple</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_168_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItem.html" target="_self">TupleGetItem</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_169_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItemNode.html" target="_self">TupleGetItemNode</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_170_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItemPattern.html" target="_self">TupleGetItemPattern</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_171_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItemPatternNode.html" target="_self">TupleGetItemPatternNode</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_172_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleNode.html" target="_self">TupleNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Tuple.html">Tuple</a> container </td></tr>
-<tr id="row_2_2_173_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TuplePattern.html" target="_self">TuplePattern</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_174_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TuplePatternNode.html" target="_self">TuplePatternNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Tuple.html">Tuple</a> container </td></tr>
-<tr id="row_2_2_175_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TypePattern.html" target="_self">TypePattern</a></td><td class="desc">A pattern which matches a type in another pattern </td></tr>
-<tr id="row_2_2_176_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TypePatternNode.html" target="_self">TypePatternNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT match pattern in Relay. ">Pattern</a> for Types </td></tr>
-<tr id="row_2_2_177_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1UpSampling3DAttrs.html" target="_self">UpSampling3DAttrs</a></td><td class="desc">Attributes for upsampling3d operator </td></tr>
-<tr id="row_2_2_178_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1UpSamplingAttrs.html" target="_self">UpSamplingAttrs</a></td><td class="desc">Attributes for upsampling operator </td></tr>
-<tr id="row_2_2_179_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Var.html" target="_self">Var</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_180_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1VarNode.html" target="_self">VarNode</a></td><td class="desc">Container for <a class="el" href="classtvm_1_1relay_1_1Var.html">Var</a> </td></tr>
-<tr id="row_2_2_181_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1VarPattern.html" target="_self">VarPattern</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_182_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1VarPatternNode.html" target="_self">VarPatternNode</a></td><td class="desc">Container for <a class="el" href="classtvm_1_1relay_1_1Var.html">Var</a> </td></tr>
-<tr id="row_2_2_183_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1WildcardPattern.html" target="_self">WildcardPattern</a></td><td class="desc">A pattern which matches anything </td></tr>
-<tr id="row_2_2_184_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1WildcardPatternNode.html" target="_self">WildcardPatternNode</a></td><td class="desc">Wildcard <a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT match pattern in Relay. ">Pattern</a> </td></tr>
-<tr id="row_2_2_185_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1YoloReorgAttrs.html" target="_self">YoloReorgAttrs</a></td><td class="desc">Attributes used in yolo reorg operators </td></tr>
+<tr id="row_2_2_33_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ConstantPattern.html" target="_self">ConstantPattern</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_34_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ConstantPatternNode.html" target="_self">ConstantPatternNode</a></td><td class="desc">Container for <a class="el" href="classtvm_1_1relay_1_1Constant.html">Constant</a> </td></tr>
+<tr id="row_2_2_35_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ConstructorValue.html" target="_self">ConstructorValue</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_36_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ConstructorValueObj.html" target="_self">ConstructorValueObj</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_37_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv1DAttrs.html" target="_self">Conv1DAttrs</a></td><td class="desc">Attributes used in 1D convolution operators </td></tr>
+<tr id="row_2_2_38_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv1DTransposeAttrs.html" target="_self">Conv1DTransposeAttrs</a></td><td class="desc">Attributes used in 1D transposed convolution operator </td></tr>
+<tr id="row_2_2_39_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv2DAttrs.html" target="_self">Conv2DAttrs</a></td><td class="desc">Attributes used in convolution operators </td></tr>
+<tr id="row_2_2_40_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv2DTransposeAttrs.html" target="_self">Conv2DTransposeAttrs</a></td><td class="desc">Attributes used in transposed convolution operator </td></tr>
+<tr id="row_2_2_41_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv2DWinogradAttrs.html" target="_self">Conv2DWinogradAttrs</a></td><td class="desc">Attributes used in convolution operators with winograd algorithm </td></tr>
+<tr id="row_2_2_42_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv2DWinogradNNPACKWeightTransformAttrs.html" target="_self">Conv2DWinogradNNPACKWeightTransformAttrs</a></td><td class="desc">Attributes used in winograd weight transformation operators </td></tr>
+<tr id="row_2_2_43_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv3DAttrs.html" target="_self">Conv3DAttrs</a></td><td class="desc">Attributes used in convolution operators </td></tr>
+<tr id="row_2_2_44_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv3DTransposeAttrs.html" target="_self">Conv3DTransposeAttrs</a></td><td class="desc">Attributes used in transposed convolution operator </td></tr>
+<tr id="row_2_2_45_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Conv3DWinogradAttrs.html" target="_self">Conv3DWinogradAttrs</a></td><td class="desc">Attributes used in 3d winograd convolution operators </td></tr>
+<tr id="row_2_2_46_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ConvWinogradWeightTransformAttrs.html" target="_self">ConvWinogradWeightTransformAttrs</a></td><td class="desc">Attributes used in winograd weight transformation operators </td></tr>
+<tr id="row_2_2_47_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1CorrelationAttrs.html" target="_self">CorrelationAttrs</a></td><td class="desc">Attributes used in correlation operators </td></tr>
+<tr id="row_2_2_48_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1CropAndResizeAttrs.html" target="_self">CropAndResizeAttrs</a></td><td class="desc">Attributes used in image crop_and_resize operator </td></tr>
+<tr id="row_2_2_49_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DataTypePattern.html" target="_self">DataTypePattern</a></td><td class="desc">A pattern which matches a type in another pattern </td></tr>
+<tr id="row_2_2_50_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DataTypePatternNode.html" target="_self">DataTypePatternNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT match pattern in Relay. ">Pattern</a> for Types </td></tr>
+<tr id="row_2_2_51_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1DebugAttrs.html" target="_self">DebugAttrs</a></td><td class="desc">Options for the debug operators </td></tr>
+<tr id="row_2_2_52_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1DeformableConv2DAttrs.html" target="_self">DeformableConv2DAttrs</a></td><td class="desc">Attributes for DeformableConv2D operator </td></tr>
+<tr id="row_2_2_53_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1DenseAttrs.html" target="_self">DenseAttrs</a></td><td class="desc">Attributes for dense operator </td></tr>
+<tr id="row_2_2_54_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1DeviceCopyAttrs.html" target="_self">DeviceCopyAttrs</a></td><td class="desc">Options for the device copy operators </td></tr>
+<tr id="row_2_2_55_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPattern.html" target="_self">DFPattern</a></td><td class="desc">Managed reference to dataflow patterns </td></tr>
+<tr id="row_2_2_56_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternCallback.html" target="_self">DFPatternCallback</a></td><td class="desc">Managed reference to dataflow pattern callbacks </td></tr>
+<tr id="row_2_2_57_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternCallbackNode.html" target="_self">DFPatternCallbackNode</a></td><td class="desc">Base type of all dataflow pattern callbacks </td></tr>
+<tr id="row_2_2_58_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternFunctor.html" target="_self">DFPatternFunctor</a></td><td class="desc">A dynamical functor that dispatches on in the first <a class="el" href="classtvm_1_1relay_1_1DFPattern.html" title="Managed reference to dataflow patterns. ">DFPattern</a> argument </td></tr>
+<tr id="row_2_2_59_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternFunctor_3_01R_07const_01DFPattern_01_6n_00_01Args_8_8_8_08_4.html" target="_self">DFPatternFunctor&lt; R(const DFPattern &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_60_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternNode.html" target="_self">DFPatternNode</a></td><td class="desc">Base type of all dataflow patterns </td></tr>
+<tr id="row_2_2_61_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternVisitor.html" target="_self">DFPatternVisitor</a></td><td class="desc">A simple visitor wrapper around <a class="el" href="classtvm_1_1relay_1_1DFPatternFunctor.html" title="A dynamical functor that dispatches on in the first DFPattern argument. ">DFPatternFunctor</a [...]
+<tr id="row_2_2_62_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1DilateAttrs.html" target="_self">DilateAttrs</a></td><td class="desc">Attributes used in dilate operator </td></tr>
+<tr id="row_2_2_63_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Dilation2DAttrs.html" target="_self">Dilation2DAttrs</a></td><td class="desc">Attributes used in dilation operators </td></tr>
+<tr id="row_2_2_64_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DominatorPattern.html" target="_self">DominatorPattern</a></td><td class="desc">A pattern which matches a variable length dominator path </td></tr>
+<tr id="row_2_2_65_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DominatorPatternNode.html" target="_self">DominatorPatternNode</a></td><td class="desc">Dominated Graph <a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT match pattern in Relay. ">Pattern</a> <a class="el" href="classtvm_1_1rela [...]
+<tr id="row_2_2_66_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1DropoutAttrs.html" target="_self">DropoutAttrs</a></td><td class="desc">Attributes used in dropout operator </td></tr>
+<tr id="row_2_2_67_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ExpandDimsAttrs.html" target="_self">ExpandDimsAttrs</a></td><td class="desc">Attributes used in expand_dims operators </td></tr>
+<tr id="row_2_2_68_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprFunctor.html" target="_self">ExprFunctor</a></td><td class="desc">A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerful Visitor, since it allows you to define function signatures of Visit <a class="el" href="classtvm_1_1rel [...]
+<tr id="row_2_2_69_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprFunctor_3_01R_07const_01Expr_01_6n_00_01Args_8_8_8_08_4.html" target="_self">ExprFunctor&lt; R(const Expr &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_70_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprMutator.html" target="_self">ExprMutator</a></td><td class="desc">A wrapper around <a class="el" href="classtvm_1_1relay_1_1ExprFunctor.html" title="A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerfu...">ExprFunctor</a> w [...]
+<tr id="row_2_2_71_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprPattern.html" target="_self">ExprPattern</a></td><td class="desc">A pattern which matches a literal expression </td></tr>
+<tr id="row_2_2_72_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprPatternNode.html" target="_self">ExprPatternNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT match pattern in Relay. ">Pattern</a> for Relay Expression </td></tr>
+<tr id="row_2_2_73_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprRewriter.html" target="_self">ExprRewriter</a></td><td class="desc">A non-iterating Expression Rewriter </td></tr>
+<tr id="row_2_2_74_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprVisitor.html" target="_self">ExprVisitor</a></td><td class="desc">A simple visitor wrapper around <a class="el" href="classtvm_1_1relay_1_1ExprFunctor.html" title="A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerfu...">Ex [...]
+<tr id="row_2_2_75_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1FeatureSet.html" target="_self">FeatureSet</a></td><td class="desc">A finite set of Feature </td></tr>
+<tr id="row_2_2_76_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1FIFOBufferAttrs.html" target="_self">FIFOBufferAttrs</a></td><td class="desc">Attributes for FIFO buffer operator </td></tr>
+<tr id="row_2_2_77_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Function.html" target="_self">Function</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1relay_1_1FunctionNode.html" title="Relay Function container. ">FunctionNode</a> </td></tr>
+<tr id="row_2_2_78_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1FunctionNode.html" target="_self">FunctionNode</a></td><td class="desc">Relay <a class="el" href="classtvm_1_1relay_1_1Function.html" title="Managed reference to FunctionNode. ">Function</a> container </td></tr>
+<tr id="row_2_2_79_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1GatherAttrs.html" target="_self">GatherAttrs</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_80_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1GetValidCountsAttrs.html" target="_self">GetValidCountsAttrs</a></td><td class="desc">Attributes used in get_valid_counts operator </td></tr>
+<tr id="row_2_2_81_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1GlobalPool2DAttrs.html" target="_self">GlobalPool2DAttrs</a></td><td class="desc">Attributes for global pool operator </td></tr>
+<tr id="row_2_2_82_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1GridSampleAttrs.html" target="_self">GridSampleAttrs</a></td><td class="desc">Attributes used in image grid_sample operator </td></tr>
+<tr id="row_2_2_83_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1GroupNormAttrs.html" target="_self">GroupNormAttrs</a></td><td class="desc">Attributes used in group_norm operator </td></tr>
+<tr id="row_2_2_84_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Id.html" target="_self">Id</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_85_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1IdNode.html" target="_self">IdNode</a></td><td class="desc">The unique identifier of variables </td></tr>
+<tr id="row_2_2_86_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1If.html" target="_self">If</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_87_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1IfNode.html" target="_self">IfNode</a></td><td class="desc">Container of <a class="el" href="classtvm_1_1relay_1_1If.html">If</a> </td></tr>
+<tr id="row_2_2_88_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1InitOpAttrs.html" target="_self">InitOpAttrs</a></td><td class="desc">Attributes that specify a tensor </td></tr>
+<tr id="row_2_2_89_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1InstanceNormAttrs.html" target="_self">InstanceNormAttrs</a></td><td class="desc">Attributes used in instance_norm operator </td></tr>
+<tr id="row_2_2_90_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1InterpreterClosure.html" target="_self">InterpreterClosure</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_91_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1InterpreterClosureObj.html" target="_self">InterpreterClosureObj</a></td><td class="desc">The container type of Closures used by the interpreter </td></tr>
+<tr id="row_2_2_92_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1L2NormalizeAttrs.html" target="_self">L2NormalizeAttrs</a></td><td class="desc">Attributes for L2Normalize operator </td></tr>
+<tr id="row_2_2_93_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1LayerNormAttrs.html" target="_self">LayerNormAttrs</a></td><td class="desc">Attributes used in layer_norm operator </td></tr>
+<tr id="row_2_2_94_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1LayoutTransformAttrs.html" target="_self">LayoutTransformAttrs</a></td><td class="desc">Attributes for LayoutTransform operator </td></tr>
+<tr id="row_2_2_95_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1LeakyReluAttrs.html" target="_self">LeakyReluAttrs</a></td><td class="desc">Attributes for leaky relu operator </td></tr>
+<tr id="row_2_2_96_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Let.html" target="_self">Let</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_97_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1LetNode.html" target="_self">LetNode</a></td><td class="desc">A binding of a sub-network </td></tr>
+<tr id="row_2_2_98_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1LRNAttrs.html" target="_self">LRNAttrs</a></td><td class="desc">Attributes for LRN operator </td></tr>
+<tr id="row_2_2_99_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Match.html" target="_self">Match</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_100_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1MatchNode.html" target="_self">MatchNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Match.html">Match</a> container node </td></tr>
+<tr id="row_2_2_101_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1MaxPool1DAttrs.html" target="_self">MaxPool1DAttrs</a></td><td class="desc">Attributes for 1D max pool operator </td></tr>
+<tr id="row_2_2_102_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1MaxPool2DAttrs.html" target="_self">MaxPool2DAttrs</a></td><td class="desc">Attributes for max pool operator </td></tr>
+<tr id="row_2_2_103_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1MaxPool3DAttrs.html" target="_self">MaxPool3DAttrs</a></td><td class="desc">Attributes for 3D max pool operator </td></tr>
+<tr id="row_2_2_104_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1MirrorPadAttrs.html" target="_self">MirrorPadAttrs</a></td><td class="desc">Attributes used for the MirrorPadding operator </td></tr>
+<tr id="row_2_2_105_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1MixedModeMutator.html" target="_self">MixedModeMutator</a></td><td class="desc">Non-recursive DFS Graph Traversal for Custom Rewriting Passes </td></tr>
+<tr id="row_2_2_106_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1MixedModeVisitor.html" target="_self">MixedModeVisitor</a></td><td class="desc">A wrapper around <a class="el" href="classtvm_1_1relay_1_1ExprVisitor.html" title="A simple visitor wrapper around ExprFunctor. Recursively visit the content. ">ExprVisitor</a> which traverses th [...]
+<tr id="row_2_2_107_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1MultiBoxPriorAttrs.html" target="_self">MultiBoxPriorAttrs</a></td><td class="desc">Attributes used in multibox_prior operators </td></tr>
+<tr id="row_2_2_108_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1MultiBoxTransformLocAttrs.html" target="_self">MultiBoxTransformLocAttrs</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_109_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1NdarraySizeAttrs.html" target="_self">NdarraySizeAttrs</a></td><td class="desc">Attributes for ndarray_size operator </td></tr>
+<tr id="row_2_2_110_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1NonMaximumSuppressionAttrs.html" target="_self">NonMaximumSuppressionAttrs</a></td><td class="desc">Attributes used in non_maximum_suppression operator </td></tr>
+<tr id="row_2_2_111_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1OnDeviceAttrs.html" target="_self">OnDeviceAttrs</a></td><td class="desc">Options for the device annotation operators </td></tr>
+<tr id="row_2_2_112_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1OneHotAttrs.html" target="_self">OneHotAttrs</a></td><td class="desc">Attributes used in one-hot operator </td></tr>
+<tr id="row_2_2_113_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpImplementation.html" target="_self">OpImplementation</a></td><td class="desc">Operator implementation class </td></tr>
+<tr id="row_2_2_114_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpImplementationNode.html" target="_self">OpImplementationNode</a></td><td class="desc">Operator implementation that includes compute and schedule function </td></tr>
+<tr id="row_2_2_115_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpSpecialization.html" target="_self">OpSpecialization</a></td><td class="desc">Operator specialization class </td></tr>
+<tr id="row_2_2_116_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpSpecializationNode.html" target="_self">OpSpecializationNode</a></td><td class="desc">Specialized implementations for operators under certain conditions </td></tr>
+<tr id="row_2_2_117_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpStrategy.html" target="_self">OpStrategy</a></td><td class="desc">Operator strategy class </td></tr>
+<tr id="row_2_2_118_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpStrategyNode.html" target="_self">OpStrategyNode</a></td><td class="desc">Operator strategy to choose implementation </td></tr>
+<tr id="row_2_2_119_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1PadAttrs.html" target="_self">PadAttrs</a></td><td class="desc">Attributes used for the padding operator </td></tr>
+<tr id="row_2_2_120_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Pattern.html" target="_self">Pattern</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT match pattern in Relay. ">Pattern</a> is the base type for an ADT match pattern in Relay </td></tr>
+<tr id="row_2_2_121_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternConstructor.html" target="_self">PatternConstructor</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_122_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternConstructorNode.html" target="_self">PatternConstructorNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1PatternVar.html">PatternVar</a> container node </td></tr>
+<tr id="row_2_2_123_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternFunctor.html" target="_self">PatternFunctor</a></td><td class="desc">A dynamical functor on ADT patterns that dispatches on its first argument. You can use this as a more powerful visitor, since it allows you to define the types of further arguments to VisitPattern </ [...]
+<tr id="row_2_2_124_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternFunctor_3_01R_07const_01Pattern_01_6n_00_01Args_8_8_8_08_4.html" target="_self">PatternFunctor&lt; R(const Pattern &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_125_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternMutator.html" target="_self">PatternMutator</a></td><td class="desc">A wrapper around <a class="el" href="classtvm_1_1relay_1_1ExprFunctor.html" title="A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerfu...">ExprFuncto [...]
+<tr id="row_2_2_126_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternNode.html" target="_self">PatternNode</a></td><td class="desc">Base type for declaring relay pattern </td></tr>
+<tr id="row_2_2_127_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternTuple.html" target="_self">PatternTuple</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_128_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternTupleNode.html" target="_self">PatternTupleNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1PatternVar.html">PatternVar</a> container node </td></tr>
+<tr id="row_2_2_129_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternVar.html" target="_self">PatternVar</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_130_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternVarNode.html" target="_self">PatternVarNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1PatternVar.html">PatternVar</a> container node </td></tr>
+<tr id="row_2_2_131_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternVisitor.html" target="_self">PatternVisitor</a></td><td class="desc">A simple visitor wrapper around <a class="el" href="classtvm_1_1relay_1_1PatternFunctor.html" title="A dynamical functor on ADT patterns that dispatches on its first argument. You can use this as a m [...]
+<tr id="row_2_2_132_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternWildcard.html" target="_self">PatternWildcard</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_133_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternWildcardNode.html" target="_self">PatternWildcardNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1PatternWildcard.html">PatternWildcard</a> container node </td></tr>
+<tr id="row_2_2_134_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1PReluAttrs.html" target="_self">PReluAttrs</a></td><td class="desc">Attributes for prelu operator </td></tr>
+<tr id="row_2_2_135_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ProposalAttrs.html" target="_self">ProposalAttrs</a></td><td class="desc">Attributes used in proposal operators </td></tr>
+<tr id="row_2_2_136_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RecClosure.html" target="_self">RecClosure</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_137_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RecClosureObj.html" target="_self">RecClosureObj</a></td><td class="desc">The container type of <a class="el" href="classtvm_1_1relay_1_1RecClosure.html">RecClosure</a> </td></tr>
+<tr id="row_2_2_138_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ReduceAttrs.html" target="_self">ReduceAttrs</a></td><td class="desc">Attributes for Reduce operators </td></tr>
+<tr id="row_2_2_139_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefCreate.html" target="_self">RefCreate</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_140_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefCreateNode.html" target="_self">RefCreateNode</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_141_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefRead.html" target="_self">RefRead</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_142_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefReadNode.html" target="_self">RefReadNode</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_143_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefValue.html" target="_self">RefValue</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_144_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1RefValueObj.html" target="_self">RefValueObj</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_145_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefWrite.html" target="_self">RefWrite</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_146_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefWriteNode.html" target="_self">RefWriteNode</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_147_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RelayNode.html" target="_self">RelayNode</a></td><td class="desc">This is the base node container of all relay structures </td></tr>
+<tr id="row_2_2_148_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1RepeatAttrs.html" target="_self">RepeatAttrs</a></td><td class="desc">Attributes used in repeat operators </td></tr>
+<tr id="row_2_2_149_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ReshapeAttrs.html" target="_self">ReshapeAttrs</a></td><td class="desc">Attributes used in reshape operators </td></tr>
+<tr id="row_2_2_150_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1Resize3dAttrs.html" target="_self">Resize3dAttrs</a></td><td class="desc">Attributes used in image resize3d operator </td></tr>
+<tr id="row_2_2_151_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ResizeAttrs.html" target="_self">ResizeAttrs</a></td><td class="desc">Attributes used in image resize operator </td></tr>
+<tr id="row_2_2_152_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ReverseAttrs.html" target="_self">ReverseAttrs</a></td><td class="desc">Attributes used in reverse operators </td></tr>
+<tr id="row_2_2_153_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ReverseSequenceAttrs.html" target="_self">ReverseSequenceAttrs</a></td><td class="desc">Attributes used in reverse_sequence operators </td></tr>
+<tr id="row_2_2_154_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ROIAlignAttrs.html" target="_self">ROIAlignAttrs</a></td><td class="desc">Attributes used in roi_align operators </td></tr>
+<tr id="row_2_2_155_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ROIPoolAttrs.html" target="_self">ROIPoolAttrs</a></td><td class="desc">Attributes used in roi_pool operators </td></tr>
+<tr id="row_2_2_156_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ScatterAttrs.html" target="_self">ScatterAttrs</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_157_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SequenceMaskAttrs.html" target="_self">SequenceMaskAttrs</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_158_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ShapeFuncAttrs.html" target="_self">ShapeFuncAttrs</a></td><td class="desc">Options for the shape function operator </td></tr>
+<tr id="row_2_2_159_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1ShapeOfAttrs.html" target="_self">ShapeOfAttrs</a></td><td class="desc">Attributes for ShapeOf operator </td></tr>
+<tr id="row_2_2_160_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ShapePattern.html" target="_self">ShapePattern</a></td><td class="desc">A pattern which matches a type in another pattern </td></tr>
+<tr id="row_2_2_161_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ShapePatternNode.html" target="_self">ShapePatternNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT match pattern in Relay. ">Pattern</a> for Shapes </td></tr>
+<tr id="row_2_2_162_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SliceLikeAttrs.html" target="_self">SliceLikeAttrs</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_163_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SoftmaxAttrs.html" target="_self">SoftmaxAttrs</a></td><td class="desc">Attributes used in softmax operators </td></tr>
+<tr id="row_2_2_164_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SparseDenseAttrs.html" target="_self">SparseDenseAttrs</a></td><td class="desc">Attributes for sparse_dense operator </td></tr>
+<tr id="row_2_2_165_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SparseToDenseAttrs.html" target="_self">SparseToDenseAttrs</a></td><td class="desc">Attributes used in sparse_to_dense operator </td></tr>
+<tr id="row_2_2_166_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SparseTransposeAttrs.html" target="_self">SparseTransposeAttrs</a></td><td class="desc">Attributes for sparse_transpose operator </td></tr>
+<tr id="row_2_2_167_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SplitAttrs.html" target="_self">SplitAttrs</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_168_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SqueezeAttrs.html" target="_self">SqueezeAttrs</a></td><td class="desc">Attributes used in squeeze operators </td></tr>
+<tr id="row_2_2_169_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1StackAttrs.html" target="_self">StackAttrs</a></td><td class="desc">Attributes used in stack operators </td></tr>
+<tr id="row_2_2_170_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1StridedSliceAttrs.html" target="_self">StridedSliceAttrs</a></td><td class="desc">Attributes for StridedSlice operator </td></tr>
+<tr id="row_2_2_171_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1SubPixelAttrs.html" target="_self">SubPixelAttrs</a></td><td class="desc">Attributes used in subpixel operators </td></tr>
+<tr id="row_2_2_172_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1TakeAttrs.html" target="_self">TakeAttrs</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_173_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TempExpr.html" target="_self">TempExpr</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_174_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TempExprNode.html" target="_self">TempExprNode</a></td><td class="desc">Base class of the temporary expression </td></tr>
+<tr id="row_2_2_175_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1TileAttrs.html" target="_self">TileAttrs</a></td><td class="desc">Attributes used in tile operators </td></tr>
+<tr id="row_2_2_176_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1TopKAttrs.html" target="_self">TopKAttrs</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_177_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1TransposeAttrs.html" target="_self">TransposeAttrs</a></td><td class="desc">Attributes used in transpose operators </td></tr>
+<tr id="row_2_2_178_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Tuple.html" target="_self">Tuple</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_179_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItem.html" target="_self">TupleGetItem</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_180_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItemNode.html" target="_self">TupleGetItemNode</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_181_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItemPattern.html" target="_self">TupleGetItemPattern</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_182_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItemPatternNode.html" target="_self">TupleGetItemPatternNode</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_183_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleNode.html" target="_self">TupleNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Tuple.html">Tuple</a> container </td></tr>
+<tr id="row_2_2_184_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TuplePattern.html" target="_self">TuplePattern</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_185_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TuplePatternNode.html" target="_self">TuplePatternNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Tuple.html">Tuple</a> container </td></tr>
+<tr id="row_2_2_186_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TypePattern.html" target="_self">TypePattern</a></td><td class="desc">A pattern which matches a type in another pattern </td></tr>
+<tr id="row_2_2_187_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TypePatternNode.html" target="_self">TypePatternNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT match pattern in Relay. ">Pattern</a> for Types </td></tr>
+<tr id="row_2_2_188_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1UpSampling3DAttrs.html" target="_self">UpSampling3DAttrs</a></td><td class="desc">Attributes for upsampling3d operator </td></tr>
+<tr id="row_2_2_189_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1UpSamplingAttrs.html" target="_self">UpSamplingAttrs</a></td><td class="desc">Attributes for upsampling operator </td></tr>
+<tr id="row_2_2_190_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Var.html" target="_self">Var</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_191_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1VarNode.html" target="_self">VarNode</a></td><td class="desc">Container for <a class="el" href="classtvm_1_1relay_1_1Var.html">Var</a> </td></tr>
+<tr id="row_2_2_192_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1VarPattern.html" target="_self">VarPattern</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_193_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1VarPatternNode.html" target="_self">VarPatternNode</a></td><td class="desc">Container for <a class="el" href="classtvm_1_1relay_1_1Var.html">Var</a> </td></tr>
+<tr id="row_2_2_194_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1WildcardPattern.html" target="_self">WildcardPattern</a></td><td class="desc">A pattern which matches anything </td></tr>
+<tr id="row_2_2_195_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1WildcardPatternNode.html" target="_self">WildcardPatternNode</a></td><td class="desc">Wildcard <a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT match pattern in Relay. ">Pattern</a> </td></tr>
+<tr id="row_2_2_196_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1relay_1_1YoloReorgAttrs.html" target="_self">YoloReorgAttrs</a></td><td class="desc">Attributes used in yolo reorg operators </td></tr>
 <tr id="row_2_3_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_2_3_" class="arrow" onclick="toggleFolder('2_3_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetvm_1_1runtime.html" target="_self">runtime</a></td><td class="desc"></td></tr>
 <tr id="row_2_3_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_2_3_0_" class="arrow" onclick="toggleFolder('2_3_0_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetvm_1_1runtime_1_1threading.html" target="_self">threading</a></td><td class="desc"></td></tr>
 <tr id="row_2_3_0_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1threading_1_1ThreadGroup.html" target="_self">ThreadGroup</a></td><td class="desc">A platform-agnostic abstraction for managing a collection of thread pool threads </td></tr>
@@ -350,9 +361,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <tr id="row_2_3_1_8_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1vm_1_1VMFunction.html" target="_self">VMFunction</a></td><td class="desc">A representation of a Relay function in the VM </td></tr>
 <tr id="row_2_3_2_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ADT.html" target="_self">ADT</a></td><td class="desc">Reference to algebraic data type objects </td></tr>
 <tr id="row_2_3_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ADTObj.html" target="_self">ADTObj</a></td><td class="desc">An object representing a structure or enumeration </td></tr>
-<tr id="row_2_3_4_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_2_3_4_" class="arrow" onclick="toggleFolder('2_3_4_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Array.html" target="_self">Array</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Array.html" title="Array container of ObjectRef in DSL graph. Array implements copy-on-writ [...]
+<tr id="row_2_3_4_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_2_3_4_" class="arrow" onclick="toggleFolder('2_3_4_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Array.html" target="_self">Array</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Array.html" title="Array, container representing a contigious sequence of ObjectRefs. ">Arr [...]
 <tr id="row_2_3_4_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1Array_1_1ValueConverter.html" target="_self">ValueConverter</a></td><td class="desc"></td></tr>
-<tr id="row_2_3_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ArrayNode.html" target="_self">ArrayNode</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Array.html" title="Array container of ObjectRef in DSL graph. Array implements copy-on-write semantics, which means array is mutable but copy will happen when array i [...]
+<tr id="row_2_3_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ArrayNode.html" target="_self">ArrayNode</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Array.html" title="Array, container representing a contigious sequence of ObjectRefs. ">Array</a> node content in array </td></tr>
 <tr id="row_2_3_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1DataType.html" target="_self">DataType</a></td><td class="desc">Runtime primitive data type </td></tr>
 <tr id="row_2_3_7_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1DeviceAPI.html" target="_self">DeviceAPI</a></td><td class="desc">TVM Runtime Device API, abstracts the device specific interface for memory management </td></tr>
 <tr id="row_2_3_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1InplaceArrayBase.html" target="_self">InplaceArrayBase</a></td><td class="desc">Base template for classes with array like memory layout </td></tr>
@@ -365,9 +376,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <tr id="row_2_3_13_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1NullOptType.html" target="_self">NullOptType</a></td><td class="desc">Helper to represent nullptr for optional </td></tr>
 <tr id="row_2_3_14_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ObjAllocatorBase.html" target="_self">ObjAllocatorBase</a></td><td class="desc">Base class of object allocators that implements make. Use curiously recurring template pattern </td></tr>
 <tr id="row_2_3_15_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Object.html" target="_self">Object</a></td><td class="desc">Base class of all object containers </td></tr>
-<tr id="row_2_3_16_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1ObjectEqual.html" target="_self">ObjectEqual</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html" title="Base class of all object reference. ">ObjectRef</a> equal functor </td></tr>
-<tr id="row_2_3_17_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1ObjectHash.html" target="_self">ObjectHash</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html" title="Base class of all object reference. ">ObjectRef</a> hash functor </td></tr>
-<tr id="row_2_3_18_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_self">ObjectPtr</a></td><td class="desc">A custom smart pointer for <a class="el" href="classtvm_1_1runtime_1_1Object.html" title="base class of all object containers. ">Object</a> </td></tr>
+<tr id="row_2_3_16_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_self">ObjectPtr</a></td><td class="desc">A custom smart pointer for <a class="el" href="classtvm_1_1runtime_1_1Object.html" title="base class of all object containers. ">Object</a> </td></tr>
+<tr id="row_2_3_17_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1ObjectPtrEqual.html" target="_self">ObjectPtrEqual</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html" title="Base class of all object reference. ">ObjectRef</a> equal functor </td></tr>
+<tr id="row_2_3_18_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1ObjectPtrHash.html" target="_self">ObjectPtrHash</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html" title="Base class of all object reference. ">ObjectRef</a> hash functor </td></tr>
 <tr id="row_2_3_19_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html" target="_self">ObjectRef</a></td><td class="desc">Base class of all object reference </td></tr>
 <tr id="row_2_3_20_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1ObjectTypeChecker.html" target="_self">ObjectTypeChecker</a></td><td class="desc"><a class="el" href="classtvm_1_1Type.html" title="Managed reference to TypeNode. ">Type</a> traits for runtime type check during FFI conversion </td></tr>
 <tr id="row_2_3_21_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1ObjectTypeChecker_3_01Array_3_01T_01_4_01_4.html" target="_self">ObjectTypeChecker&lt; Array&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
@@ -397,134 +408,184 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <tr id="row_2_3_42_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1TypedPackedFunc_3_01R_07Args_8_8_8_08_4.html" target="_self">TypedPackedFunc&lt; R(Args...)&gt;</a></td><td class="desc">A <a class="el" href="classtvm_1_1runtime_1_1PackedFunc.html" title="Packed function is a type-erased function. The arguments are passed by packed format [...]
 <tr id="row_2_3_43_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1TypeIndex.html" target="_self">TypeIndex</a></td><td class="desc">Namespace for the list of type index </td></tr>
 <tr id="row_2_4_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_2_4_" class="arrow" onclick="toggleFolder('2_4_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetvm_1_1te.html" target="_self">te</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible input, or intermediate computation result. ">Tensor</a [...]
-<tr id="row_2_4_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1BaseComputeOpNode.html" target="_self">BaseComputeOpNode</a></td><td class="desc">A Compute op that compute a tensor on certain domain. This is the base class for ComputeOp (operating on a scalar at a time) and TensorComputeOp (operating on a TensorSlice at a time) </td></tr>
-<tr id="row_2_4_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ComputeOpNode.html" target="_self">ComputeOpNode</a></td><td class="desc">A Compute op that compute a tensor on certain domain </td></tr>
-<tr id="row_2_4_2_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html" target="_self">ExternOpNode</a></td><td class="desc">External computation that cannot be splitted </td></tr>
-<tr id="row_2_4_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1FuseNode.html" target="_self">FuseNode</a></td><td class="desc">Fuse two domains into one domain </td></tr>
-<tr id="row_2_4_4_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1HybridOpNode.html" target="_self">HybridOpNode</a></td><td class="desc">A computation operator that generated by hybrid script </td></tr>
-<tr id="row_2_4_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1IterVarAttr.html" target="_self">IterVarAttr</a></td><td class="desc">Additional scheduable attributes about IterVar </td></tr>
-<tr id="row_2_4_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1IterVarAttrNode.html" target="_self">IterVarAttrNode</a></td><td class="desc">Node container for IterVar attr </td></tr>
-<tr id="row_2_4_7_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1IterVarRelation.html" target="_self">IterVarRelation</a></td><td class="desc">The schedule relation between IterVars can be Split, Fuse </td></tr>
-<tr id="row_2_4_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1IterVarRelationNode.html" target="_self">IterVarRelationNode</a></td><td class="desc">Base node of iteration var </td></tr>
-<tr id="row_2_4_9_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Operation.html" target="_self">Operation</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Operation.html" title="Operation that produces tensors. ">Operation</a> that produces tensors </td></tr>
-<tr id="row_2_4_10_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1OperationNode.html" target="_self">OperationNode</a></td><td class="desc">Base class of all operation nodes </td></tr>
-<tr id="row_2_4_11_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1PlaceholderOpNode.html" target="_self">PlaceholderOpNode</a></td><td class="desc">A placeholder op represents an input placeholder </td></tr>
-<tr id="row_2_4_12_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1RebaseNode.html" target="_self">RebaseNode</a></td><td class="desc">Rebase the iteration to make min to be 0. This is useful to normalize the <a class="el" href="classtvm_1_1te_1_1Schedule.html" title="Global schedule container For operations and all the operations they depend o [...]
-<tr id="row_2_4_13_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ScanOpNode.html" target="_self">ScanOpNode</a></td><td class="desc">Symbolic scan </td></tr>
-<tr id="row_2_4_14_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Schedule.html" target="_self">Schedule</a></td><td class="desc">Global schedule container For operations and all the operations they depend on. The schedule per <a class="el" href="classtvm_1_1te_1_1Operation.html" title="Operation that produces tensors. ">Operation</a> is named [...]
-<tr id="row_2_4_15_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ScheduleNode.html" target="_self">ScheduleNode</a></td><td class="desc">Node container for schedule </td></tr>
-<tr id="row_2_4_16_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1SingletonNode.html" target="_self">SingletonNode</a></td><td class="desc">Singleton iterator [0, 1) </td></tr>
-<tr id="row_2_4_17_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1SpecializedCondition.html" target="_self">SpecializedCondition</a></td><td class="desc">Specialized condition to enable op specialization </td></tr>
-<tr id="row_2_4_18_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1SpecializedConditionNode.html" target="_self">SpecializedConditionNode</a></td><td class="desc">Container for specialization conditions </td></tr>
-<tr id="row_2_4_19_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1SplitNode.html" target="_self">SplitNode</a></td><td class="desc">Split the parent domain into product of outer and iter </td></tr>
-<tr id="row_2_4_20_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Stage.html" target="_self">Stage</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Stage.html" title="Stage, contains scheduling for a stage of computation. ">Stage</a>, contains scheduling for a stage of computation </td></tr>
-<tr id="row_2_4_21_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1StageNode.html" target="_self">StageNode</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Stage.html" title="Stage, contains scheduling for a stage of computation. ">Stage</a> </td></tr>
-<tr id="row_2_4_22_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_2_4_22_" class="arrow" onclick="toggleFolder('2_4_22_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Tensor.html" target="_self">Tensor</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible input, or intermediate computation  [...]
-<tr id="row_2_4_22_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Tensor_1_1Slice.html" target="_self">Slice</a></td><td class="desc">Data structure to represent a slice that fixes first k coordinates. This is used to enable syntax sugar of <a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible inp [...]
-<tr id="row_2_4_23_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorComputeOpNode.html" target="_self">TensorComputeOpNode</a></td><td class="desc">A TenorCompute op that compute a tensor with an tensor intrinsic </td></tr>
-<tr id="row_2_4_24_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1te_1_1TensorDom.html" target="_self">TensorDom</a></td><td class="desc">Temporary data structure to store union of bounds of each axis of <a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible input, or intermediate computation result. ">Te [...]
-<tr id="row_2_4_25_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorIntrin.html" target="_self">TensorIntrin</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible input, or intermediate computation result. ">Tensor</a> intrinsic node </td></tr>
-<tr id="row_2_4_26_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorIntrinCall.html" target="_self">TensorIntrinCall</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible input, or intermediate computation result. ">Tensor</a> intrinsic calling node </td></tr>
-<tr id="row_2_4_27_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorIntrinCallNode.html" target="_self">TensorIntrinCallNode</a></td><td class="desc"></td></tr>
-<tr id="row_2_4_28_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorIntrinNode.html" target="_self">TensorIntrinNode</a></td><td class="desc">Node to represent a <a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible input, or intermediate computation result. ">Tensor</a> intrinsic operator </td></tr>
-<tr id="row_2_4_29_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorNode.html" target="_self">TensorNode</a></td><td class="desc">Node to represent a tensor </td></tr>
+<tr id="row_2_4_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1BaseComputeOpNode.html" target="_self">BaseComputeOpNode</a></td><td class="desc">A Compute op that compute a tensor on certain domain. This is the base class for <a class="el" href="classtvm_1_1te_1_1ComputeOp.html" title="Managed reference to ComputeOpNode. ">ComputeOp</a> (ope [...]
+<tr id="row_2_4_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ComputeOp.html" target="_self">ComputeOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1ComputeOpNode.html" title="A Compute op that compute a tensor on certain domain. ">ComputeOpNode</a> </td></tr>
+<tr id="row_2_4_2_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ComputeOpNode.html" target="_self">ComputeOpNode</a></td><td class="desc">A Compute op that compute a tensor on certain domain </td></tr>
+<tr id="row_2_4_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ExternOp.html" target="_self">ExternOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1ExternOpNode.html" title="External computation that cannot be splitted. ">ExternOpNode</a> </td></tr>
+<tr id="row_2_4_4_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html" target="_self">ExternOpNode</a></td><td class="desc">External computation that cannot be splitted </td></tr>
+<tr id="row_2_4_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Fuse.html" target="_self">Fuse</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1FuseNode.html" title="Fuse two domains into one domain. ">FuseNode</a> </td></tr>
+<tr id="row_2_4_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1FuseNode.html" target="_self">FuseNode</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Fuse.html" title="Managed reference to FuseNode. ">Fuse</a> two domains into one domain </td></tr>
+<tr id="row_2_4_7_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1HybridOp.html" target="_self">HybridOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1HybridOpNode.html" title="A computation operator that generated by hybrid script. ">HybridOpNode</a> </td></tr>
+<tr id="row_2_4_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1HybridOpNode.html" target="_self">HybridOpNode</a></td><td class="desc">A computation operator that generated by hybrid script </td></tr>
+<tr id="row_2_4_9_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1IterVarAttr.html" target="_self">IterVarAttr</a></td><td class="desc">Additional scheduable attributes about IterVar </td></tr>
+<tr id="row_2_4_10_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1IterVarAttrNode.html" target="_self">IterVarAttrNode</a></td><td class="desc">Node container for IterVar attr </td></tr>
+<tr id="row_2_4_11_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1IterVarRelation.html" target="_self">IterVarRelation</a></td><td class="desc">The schedule relation between IterVars can be <a class="el" href="classtvm_1_1te_1_1Split.html" title="Managed reference to SplitNode. ">Split</a>, <a class="el" href="classtvm_1_1te_1_1Fuse.html" titl [...]
+<tr id="row_2_4_12_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1IterVarRelationNode.html" target="_self">IterVarRelationNode</a></td><td class="desc">Base node of iteration var </td></tr>
+<tr id="row_2_4_13_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Operation.html" target="_self">Operation</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Operation.html" title="Operation that produces tensors. ">Operation</a> that produces tensors </td></tr>
+<tr id="row_2_4_14_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1OperationNode.html" target="_self">OperationNode</a></td><td class="desc">Base class of all operation nodes </td></tr>
+<tr id="row_2_4_15_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1PlaceholderOp.html" target="_self">PlaceholderOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1PlaceholderOpNode.html" title="A placeholder op represents an input placeholder. ">PlaceholderOpNode</a> </td></tr>
+<tr id="row_2_4_16_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1PlaceholderOpNode.html" target="_self">PlaceholderOpNode</a></td><td class="desc">A placeholder op represents an input placeholder </td></tr>
+<tr id="row_2_4_17_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Rebase.html" target="_self">Rebase</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1RebaseNode.html" title="Rebase the iteration to make min to be 0. This is useful to normalize the Schedule to make every leaf...">RebaseNode</a> </td></tr>
+<tr id="row_2_4_18_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1RebaseNode.html" target="_self">RebaseNode</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Rebase.html" title="Managed reference to RebaseNode. ">Rebase</a> the iteration to make min to be 0. This is useful to normalize the <a class="el" href="classtvm_1_1te_1_1Sc [...]
+<tr id="row_2_4_19_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ScanOp.html" target="_self">ScanOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1ScanOpNode.html" title="Symbolic scan. ">ScanOpNode</a> </td></tr>
+<tr id="row_2_4_20_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ScanOpNode.html" target="_self">ScanOpNode</a></td><td class="desc">Symbolic scan </td></tr>
+<tr id="row_2_4_21_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Schedule.html" target="_self">Schedule</a></td><td class="desc">Global schedule container For operations and all the operations they depend on. The schedule per <a class="el" href="classtvm_1_1te_1_1Operation.html" title="Operation that produces tensors. ">Operation</a> is named [...]
+<tr id="row_2_4_22_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ScheduleNode.html" target="_self">ScheduleNode</a></td><td class="desc">Node container for schedule </td></tr>
+<tr id="row_2_4_23_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Singleton.html" target="_self">Singleton</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1SingletonNode.html" title="Singleton iterator [0, 1) ">SingletonNode</a> </td></tr>
+<tr id="row_2_4_24_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1SingletonNode.html" target="_self">SingletonNode</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Singleton.html" title="Managed reference to SingletonNode. ">Singleton</a> iterator [0, 1) </td></tr>
+<tr id="row_2_4_25_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1SpecializedCondition.html" target="_self">SpecializedCondition</a></td><td class="desc">Specialized condition to enable op specialization </td></tr>
+<tr id="row_2_4_26_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1SpecializedConditionNode.html" target="_self">SpecializedConditionNode</a></td><td class="desc">Container for specialization conditions </td></tr>
+<tr id="row_2_4_27_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Split.html" target="_self">Split</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1SplitNode.html" title="Split the parent domain into product of outer and iter. ">SplitNode</a> </td></tr>
+<tr id="row_2_4_28_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1SplitNode.html" target="_self">SplitNode</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Split.html" title="Managed reference to SplitNode. ">Split</a> the parent domain into product of outer and iter </td></tr>
+<tr id="row_2_4_29_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Stage.html" target="_self">Stage</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Stage.html" title="Stage, contains scheduling for a stage of computation. ">Stage</a>, contains scheduling for a stage of computation </td></tr>
+<tr id="row_2_4_30_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1StageNode.html" target="_self">StageNode</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Stage.html" title="Stage, contains scheduling for a stage of computation. ">Stage</a> </td></tr>
+<tr id="row_2_4_31_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_2_4_31_" class="arrow" onclick="toggleFolder('2_4_31_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Tensor.html" target="_self">Tensor</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible input, or intermediate computation  [...]
+<tr id="row_2_4_31_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Tensor_1_1Slice.html" target="_self">Slice</a></td><td class="desc">Data structure to represent a slice that fixes first k coordinates. This is used to enable syntax sugar of <a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible inp [...]
+<tr id="row_2_4_32_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorComputeOp.html" target="_self">TensorComputeOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1TensorComputeOpNode.html" title="A TenorCompute op that compute a tensor with an tensor intrinsic. ">TensorComputeOpNode</a> </td></tr>
+<tr id="row_2_4_33_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorComputeOpNode.html" target="_self">TensorComputeOpNode</a></td><td class="desc">A TenorCompute op that compute a tensor with an tensor intrinsic </td></tr>
+<tr id="row_2_4_34_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1te_1_1TensorDom.html" target="_self">TensorDom</a></td><td class="desc">Temporary data structure to store union of bounds of each axis of <a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible input, or intermediate computation result. ">Te [...]
+<tr id="row_2_4_35_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorIntrin.html" target="_self">TensorIntrin</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1TensorIntrinNode.html" title="Node to represent a Tensor intrinsic operator. ">TensorIntrinNode</a> </td></tr>
+<tr id="row_2_4_36_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorIntrinCall.html" target="_self">TensorIntrinCall</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1TensorIntrinCallNode.html">TensorIntrinCallNode</a> </td></tr>
+<tr id="row_2_4_37_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorIntrinCallNode.html" target="_self">TensorIntrinCallNode</a></td><td class="desc"></td></tr>
+<tr id="row_2_4_38_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorIntrinNode.html" target="_self">TensorIntrinNode</a></td><td class="desc">Node to represent a <a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible input, or intermediate computation result. ">Tensor</a> intrinsic operator </td></tr>
+<tr id="row_2_4_39_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorNode.html" target="_self">TensorNode</a></td><td class="desc">Node to represent a tensor </td></tr>
 <tr id="row_2_5_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_2_5_" class="arrow" onclick="toggleFolder('2_5_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetvm_1_1tir.html" target="_self">tir</a></td><td class="desc"></td></tr>
-<tr id="row_2_5_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AddNode.html" target="_self">AddNode</a></td><td class="desc"><ul>
+<tr id="row_2_5_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Add.html" target="_self">Add</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AddNode.html" title="a + b ">AddNode</a> </td></tr>
+<tr id="row_2_5_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AddNode.html" target="_self">AddNode</a></td><td class="desc"><ul>
 <li>b </li>
 </ul>
 </td></tr>
-<tr id="row_2_5_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AllocateNode.html" target="_self">AllocateNode</a></td><td class="desc">Allocate a buffer that can be used in body </td></tr>
-<tr id="row_2_5_2_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AndNode.html" target="_self">AndNode</a></td><td class="desc">&amp;&amp; b </td></tr>
-<tr id="row_2_5_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AnyNode.html" target="_self">AnyNode</a></td><td class="desc">Any shape </td></tr>
-<tr id="row_2_5_4_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AssertStmtNode.html" target="_self">AssertStmtNode</a></td><td class="desc">Assert condition, if an error occurs, return the error message </td></tr>
-<tr id="row_2_5_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AttrStmtNode.html" target="_self">AttrStmtNode</a></td><td class="desc">Define certain auxiliary attribute for the body to be a symbolic value. This provide auxiliary information for IR passes that transforms body </td></tr>
-<tr id="row_2_5_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BijectiveLayout.html" target="_self">BijectiveLayout</a></td><td class="desc">Bijective function mapping for data layout transformation. Given two <a class="el" href="classtvm_1_1tir_1_1Layout.html" title="Layout is to describe how data is organized within an N-dimention tensor. [...]
-<tr id="row_2_5_7_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BijectiveLayoutNode.html" target="_self">BijectiveLayoutNode</a></td><td class="desc"></td></tr>
-<tr id="row_2_5_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BinaryOpNode.html" target="_self">BinaryOpNode</a></td><td class="desc">Base template to implement binary ops </td></tr>
-<tr id="row_2_5_9_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BroadcastNode.html" target="_self">BroadcastNode</a></td><td class="desc">Create a vector where all the elements are value </td></tr>
-<tr id="row_2_5_10_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Buffer.html" target="_self">Buffer</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Buffer.html" title="Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types...">Buffer</a> is a symbolic n-darray structure. It is a composition o [...]
-<tr id="row_2_5_11_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferLoad.html" target="_self">BufferLoad</a></td><td class="desc"></td></tr>
-<tr id="row_2_5_12_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferLoadNode.html" target="_self">BufferLoadNode</a></td><td class="desc">Load value from the high dimension buffer </td></tr>
-<tr id="row_2_5_13_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferNode.html" target="_self">BufferNode</a></td><td class="desc">Node to represent a buffer </td></tr>
-<tr id="row_2_5_14_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferRealize.html" target="_self">BufferRealize</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html" title="Annotate the region where the buffer need to be read and write in the body. We only need to allocate ...">BufferR [...]
-<tr id="row_2_5_15_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html" target="_self">BufferRealizeNode</a></td><td class="desc">Annotate the region where the buffer need to be read and write in the body. We only need to allocate the space for the corresponding region </td></tr>
-<tr id="row_2_5_16_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferStore.html" target="_self">BufferStore</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferStoreNode.html" title="Store value to the high dimension buffer. ">BufferStoreNode</a> </td></tr>
-<tr id="row_2_5_17_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferStoreNode.html" target="_self">BufferStoreNode</a></td><td class="desc">Store value to the high dimension buffer </td></tr>
-<tr id="row_2_5_18_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1CallNode.html" target="_self">CallNode</a></td><td class="desc">Call node </td></tr>
-<tr id="row_2_5_19_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1CastNode.html" target="_self">CastNode</a></td><td class="desc">Cast value from one data type to another </td></tr>
-<tr id="row_2_5_20_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1CmpOpNode.html" target="_self">CmpOpNode</a></td><td class="desc">Base template to implement comparison ops </td></tr>
-<tr id="row_2_5_21_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1CommReducer.html" target="_self">CommReducer</a></td><td class="desc"></td></tr>
-<tr id="row_2_5_22_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1CommReducerNode.html" target="_self">CommReducerNode</a></td><td class="desc">A commutative reducer node to represent a commutative binary operator with identity element </td></tr>
-<tr id="row_2_5_23_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1DivNode.html" target="_self">DivNode</a></td><td class="desc">/ b in the C semnatics </td></tr>
-<tr id="row_2_5_24_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1EQNode.html" target="_self">EQNode</a></td><td class="desc">== b </td></tr>
-<tr id="row_2_5_25_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html" target="_self">EvaluateNode</a></td><td class="desc">Evaluates an expression. This is mostly used for putting a Call node into <a class="el" href="classtvm_1_1tir_1_1Stmt.html" title="Container of all statements. ">Stmt</a> </td></tr>
-<tr id="row_2_5_26_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tir_1_1ExprDeepEqual.html" target="_self">ExprDeepEqual</a></td><td class="desc">Compare two expressions recursively and check if they are equal to each other without var remapping </td></tr>
-<tr id="row_2_5_27_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ExprFunctor.html" target="_self">ExprFunctor</a></td><td class="desc">A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerful Visitor, since it allows you to define function signatures of Visit Function </td></tr>
-<tr id="row_2_5_28_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ExprFunctor_3_01R_07const_01PrimExpr_01_6n_00_01Args_8_8_8_08_4.html" target="_self">ExprFunctor&lt; R(const PrimExpr &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
-<tr id="row_2_5_29_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ExprMutator.html" target="_self">ExprMutator</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1ExprMutator.html" title="ExprMutator that mutates expressions. ">ExprMutator</a> that mutates expressions </td></tr>
-<tr id="row_2_5_30_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ExprVisitor.html" target="_self">ExprVisitor</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1ExprVisitor.html" title="ExprVisitor. ">ExprVisitor</a> </td></tr>
-<tr id="row_2_5_31_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FloorDivNode.html" target="_self">FloorDivNode</a></td><td class="desc">Floor division, floor(a/b) </td></tr>
-<tr id="row_2_5_32_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FloorModNode.html" target="_self">FloorModNode</a></td><td class="desc">The remainder of the floordiv </td></tr>
-<tr id="row_2_5_33_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ForNode.html" target="_self">ForNode</a></td><td class="desc">A for loop, with poissible type annotations </td></tr>
-<tr id="row_2_5_34_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FreeNode.html" target="_self">FreeNode</a></td><td class="desc">Free the resources in the buffer before the scope ends </td></tr>
-<tr id="row_2_5_35_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FunctionBaseNode.html" target="_self">FunctionBaseNode</a></td><td class="desc">Base node of internal functions </td></tr>
-<tr id="row_2_5_36_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FunctionRef.html" target="_self">FunctionRef</a></td><td class="desc">Reference to a function </td></tr>
-<tr id="row_2_5_37_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1GENode.html" target="_self">GENode</a></td><td class="desc">&gt;= b </td></tr>
-<tr id="row_2_5_38_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1GTNode.html" target="_self">GTNode</a></td><td class="desc">&gt; b </td></tr>
-<tr id="row_2_5_39_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IfThenElseNode.html" target="_self">IfThenElseNode</a></td><td class="desc">IfThenElse statment </td></tr>
-<tr id="row_2_5_40_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IterVar.html" target="_self">IterVar</a></td><td class="desc">Iteration Variable, represents an iteration over an integer interval </td></tr>
-<tr id="row_2_5_41_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IterVarNode.html" target="_self">IterVarNode</a></td><td class="desc">An iteration variable representing an iteration over a one dimensional interval </td></tr>
-<tr id="row_2_5_42_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Layout.html" target="_self">Layout</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Layout.html" title="Layout is to describe how data is organized within an N-dimention tensor. It is composed of upper cas...">Layout</a> is to describe how data is organized withi [...]
-<tr id="row_2_5_43_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LayoutAxis.html" target="_self">LayoutAxis</a></td><td class="desc"></td></tr>
-<tr id="row_2_5_44_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LayoutNode.html" target="_self">LayoutNode</a></td><td class="desc"></td></tr>
-<tr id="row_2_5_45_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tir_1_1LENode.html" target="_self">LENode</a></td><td class="desc">&lt;= b </td></tr>
-<tr id="row_2_5_46_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LetNode.html" target="_self">LetNode</a></td><td class="desc">Let binding. Bind var to value then evaluate body </td></tr>
-<tr id="row_2_5_47_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LetStmtNode.html" target="_self">LetStmtNode</a></td><td class="desc">Let binding, bind var to value, then run body </td></tr>
-<tr id="row_2_5_48_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LoadNode.html" target="_self">LoadNode</a></td><td class="desc">Load the value from buffer_var </td></tr>
-<tr id="row_2_5_49_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LTNode.html" target="_self">LTNode</a></td><td class="desc">&lt; b </td></tr>
-<tr id="row_2_5_50_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1MaxNode.html" target="_self">MaxNode</a></td><td class="desc">Max(a, b) </td></tr>
-<tr id="row_2_5_51_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1MinNode.html" target="_self">MinNode</a></td><td class="desc">Min(a, b) </td></tr>
-<tr id="row_2_5_52_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ModNode.html" target="_self">ModNode</a></td><td class="desc">% b in the C semnatics </td></tr>
-<tr id="row_2_5_53_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1MulNode.html" target="_self">MulNode</a></td><td class="desc"><ul>
+<tr id="row_2_5_2_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Allocate.html" target="_self">Allocate</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AllocateNode.html" title="Allocate a buffer that can be used in body. ">AllocateNode</a> </td></tr>
+<tr id="row_2_5_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AllocateNode.html" target="_self">AllocateNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Allocate.html" title="Managed reference to AllocateNode. ">Allocate</a> a buffer that can be used in body </td></tr>
+<tr id="row_2_5_4_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1And.html" target="_self">And</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AndNode.html" title="a &amp;&amp; b ">AndNode</a> </td></tr>
+<tr id="row_2_5_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AndNode.html" target="_self">AndNode</a></td><td class="desc">&amp;&amp; b </td></tr>
+<tr id="row_2_5_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Any.html" target="_self">Any</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AnyNode.html" title="Any shape. ">AnyNode</a> </td></tr>
+<tr id="row_2_5_7_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AnyNode.html" target="_self">AnyNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Any.html" title="Managed reference to AnyNode. ">Any</a> shape </td></tr>
+<tr id="row_2_5_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AssertStmt.html" target="_self">AssertStmt</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AssertStmtNode.html" title="Assert condition, if an error occurs, return the error message. ">AssertStmtNode</a> </td></tr>
+<tr id="row_2_5_9_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AssertStmtNode.html" target="_self">AssertStmtNode</a></td><td class="desc">Assert condition, if an error occurs, return the error message </td></tr>
+<tr id="row_2_5_10_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AttrStmt.html" target="_self">AttrStmt</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AttrStmtNode.html" title="Define certain auxiliary attribute for the body to be a symbolic value. This provide auxiliary inform...">AttrStmtNode</a> </td></tr>
+<tr id="row_2_5_11_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AttrStmtNode.html" target="_self">AttrStmtNode</a></td><td class="desc">Define certain auxiliary attribute for the body to be a symbolic value. This provide auxiliary information for IR passes that transforms body </td></tr>
+<tr id="row_2_5_12_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BijectiveLayout.html" target="_self">BijectiveLayout</a></td><td class="desc">Bijective function mapping for data layout transformation. Given two <a class="el" href="classtvm_1_1tir_1_1Layout.html" title="Managed reference to LayoutNode. ">Layout</a>, <a class="el" href="class [...]
+<tr id="row_2_5_13_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BijectiveLayoutNode.html" target="_self">BijectiveLayoutNode</a></td><td class="desc"></td></tr>
+<tr id="row_2_5_14_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BinaryOpNode.html" target="_self">BinaryOpNode</a></td><td class="desc">Base template to implement binary ops </td></tr>
+<tr id="row_2_5_15_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Broadcast.html" target="_self">Broadcast</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BroadcastNode.html" title="Create a vector where all the elements are value. ">BroadcastNode</a> </td></tr>
+<tr id="row_2_5_16_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BroadcastNode.html" target="_self">BroadcastNode</a></td><td class="desc">Create a vector where all the elements are value </td></tr>
+<tr id="row_2_5_17_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Buffer.html" target="_self">Buffer</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Buffer.html" title="Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types...">Buffer</a> is a symbolic n-darray structure. It is a composition o [...]
+<tr id="row_2_5_18_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferLoad.html" target="_self">BufferLoad</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferLoadNode.html" title="Load value from the high dimension buffer. ">BufferLoadNode</a> </td></tr>
+<tr id="row_2_5_19_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferLoadNode.html" target="_self">BufferLoadNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Load.html" title="Managed reference to LoadNode. ">Load</a> value from the high dimension buffer </td></tr>
+<tr id="row_2_5_20_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferNode.html" target="_self">BufferNode</a></td><td class="desc">Node to represent a buffer </td></tr>
+<tr id="row_2_5_21_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferRealize.html" target="_self">BufferRealize</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html" title="Annotate the region where the buffer need to be read and write in the body. We only need to allocate ...">BufferR [...]
+<tr id="row_2_5_22_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html" target="_self">BufferRealizeNode</a></td><td class="desc">Annotate the region where the buffer need to be read and write in the body. We only need to allocate the space for the corresponding region </td></tr>
+<tr id="row_2_5_23_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferStore.html" target="_self">BufferStore</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferStoreNode.html" title="Store value to the high dimension buffer. ">BufferStoreNode</a> </td></tr>
+<tr id="row_2_5_24_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferStoreNode.html" target="_self">BufferStoreNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Store.html" title="Managed reference to StoreNode. ">Store</a> value to the high dimension buffer </td></tr>
+<tr id="row_2_5_25_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Call.html" target="_self">Call</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1CallNode.html" title="Call node. ">CallNode</a> </td></tr>
+<tr id="row_2_5_26_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1CallNode.html" target="_self">CallNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Call.html" title="Managed reference to CallNode. ">Call</a> node </td></tr>
+<tr id="row_2_5_27_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Cast.html" target="_self">Cast</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1CastNode.html" title="Cast value from one data type to another. ">CastNode</a> </td></tr>
+<tr id="row_2_5_28_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1CastNode.html" target="_self">CastNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Cast.html" title="Managed reference to CastNode. ">Cast</a> value from one data type to another </td></tr>
+<tr id="row_2_5_29_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1CmpOpNode.html" target="_self">CmpOpNode</a></td><td class="desc">Base template to implement comparison ops </td></tr>
+<tr id="row_2_5_30_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1CommReducer.html" target="_self">CommReducer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1CommReducerNode.html" title="A commutative reducer node to represent a commutative binary operator with identity element...">CommReducerNode</a> </td></tr>
+<tr id="row_2_5_31_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1CommReducerNode.html" target="_self">CommReducerNode</a></td><td class="desc">A commutative reducer node to represent a commutative binary operator with identity element </td></tr>
+<tr id="row_2_5_32_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1DataProducer.html" target="_self">DataProducer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html" title="Base node for data producers. ">DataProducerNode</a> </td></tr>
+<tr id="row_2_5_33_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html" target="_self">DataProducerNode</a></td><td class="desc">Base node for data producers </td></tr>
+<tr id="row_2_5_34_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Div.html" target="_self">Div</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1DivNode.html" title="a / b in the C semnatics. ">DivNode</a> </td></tr>
+<tr id="row_2_5_35_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1DivNode.html" target="_self">DivNode</a></td><td class="desc">/ b in the C semnatics </td></tr>
+<tr id="row_2_5_36_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1EQ.html" target="_self">EQ</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1EQNode.html" title="a == b ">EQNode</a> </td></tr>
+<tr id="row_2_5_37_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1EQNode.html" target="_self">EQNode</a></td><td class="desc">== b </td></tr>
+<tr id="row_2_5_38_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Evaluate.html" target="_self">Evaluate</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html" title="Evaluates an expression. This is mostly used for putting a Call node into Stmt. ">EvaluateNode</a> </td></tr>
+<tr id="row_2_5_39_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html" target="_self">EvaluateNode</a></td><td class="desc">Evaluates an expression. This is mostly used for putting a <a class="el" href="classtvm_1_1tir_1_1Call.html" title="Managed reference to CallNode. ">Call</a> node into <a class="el" href="classtvm_1_1tir_1_ [...]
+<tr id="row_2_5_40_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tir_1_1ExprDeepEqual.html" target="_self">ExprDeepEqual</a></td><td class="desc">Compare two expressions recursively and check if they are equal to each other without var remapping </td></tr>
+<tr id="row_2_5_41_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ExprFunctor.html" target="_self">ExprFunctor</a></td><td class="desc">A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerful Visitor, since it allows you to define function signatures of Visit Function </td></tr>
+<tr id="row_2_5_42_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ExprFunctor_3_01R_07const_01PrimExpr_01_6n_00_01Args_8_8_8_08_4.html" target="_self">ExprFunctor&lt; R(const PrimExpr &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_2_5_43_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ExprMutator.html" target="_self">ExprMutator</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1ExprMutator.html" title="ExprMutator that mutates expressions. ">ExprMutator</a> that mutates expressions </td></tr>
+<tr id="row_2_5_44_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ExprVisitor.html" target="_self">ExprVisitor</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1ExprVisitor.html" title="ExprVisitor. ">ExprVisitor</a> </td></tr>
+<tr id="row_2_5_45_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FloorDiv.html" target="_self">FloorDiv</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1FloorDivNode.html" title="Floor division, floor(a/b) ">FloorDivNode</a> </td></tr>
+<tr id="row_2_5_46_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FloorDivNode.html" target="_self">FloorDivNode</a></td><td class="desc">Floor division, floor(a/b) </td></tr>
+<tr id="row_2_5_47_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FloorMod.html" target="_self">FloorMod</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1FloorModNode.html" title="The remainder of the floordiv. ">FloorModNode</a> </td></tr>
+<tr id="row_2_5_48_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FloorModNode.html" target="_self">FloorModNode</a></td><td class="desc">The remainder of the floordiv </td></tr>
+<tr id="row_2_5_49_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1For.html" target="_self">For</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ForNode.html" title="A for loop, with poissible type annotations. ">ForNode</a> </td></tr>
+<tr id="row_2_5_50_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ForNode.html" target="_self">ForNode</a></td><td class="desc">A for loop, with poissible type annotations </td></tr>
+<tr id="row_2_5_51_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Free.html" target="_self">Free</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1FreeNode.html" title="Free the resources in the buffer before the scope ends. ">FreeNode</a> </td></tr>
+<tr id="row_2_5_52_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FreeNode.html" target="_self">FreeNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Free.html" title="Managed reference to FreeNode. ">Free</a> the resources in the buffer before the scope ends </td></tr>
+<tr id="row_2_5_53_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1GE.html" target="_self">GE</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1GENode.html" title="a &gt;= b ">GENode</a> </td></tr>
+<tr id="row_2_5_54_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1GENode.html" target="_self">GENode</a></td><td class="desc">&gt;= b </td></tr>
+<tr id="row_2_5_55_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1GT.html" target="_self">GT</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1GTNode.html" title="a &gt; b ">GTNode</a> </td></tr>
+<tr id="row_2_5_56_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1GTNode.html" target="_self">GTNode</a></td><td class="desc">&gt; b </td></tr>
+<tr id="row_2_5_57_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IfThenElse.html" target="_self">IfThenElse</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1IfThenElseNode.html" title="IfThenElse statment. ">IfThenElseNode</a> </td></tr>
+<tr id="row_2_5_58_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IfThenElseNode.html" target="_self">IfThenElseNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1IfThenElse.html" title="Managed reference to IfThenElseNode. ">IfThenElse</a> statment </td></tr>
+<tr id="row_2_5_59_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IterVar.html" target="_self">IterVar</a></td><td class="desc">Iteration Variable, represents an iteration over an integer interval </td></tr>
+<tr id="row_2_5_60_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IterVarNode.html" target="_self">IterVarNode</a></td><td class="desc">An iteration variable representing an iteration over a one dimensional interval </td></tr>
+<tr id="row_2_5_61_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Layout.html" target="_self">Layout</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LayoutNode.html" title="Layout is to describe how data is organized within an N-dimention tensor. It is composed of upper cas...">LayoutNode</a> </td></tr>
+<tr id="row_2_5_62_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LayoutAxis.html" target="_self">LayoutAxis</a></td><td class="desc"></td></tr>
+<tr id="row_2_5_63_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LayoutNode.html" target="_self">LayoutNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Layout.html" title="Managed reference to LayoutNode. ">Layout</a> is to describe how data is organized within an N-dimention tensor. It is composed of upper cases, lower c [...]
+<tr id="row_2_5_64_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LE.html" target="_self">LE</a></td><td class="desc">Managed reference to <a class="el" href="structtvm_1_1tir_1_1LENode.html" title="a &lt;= b ">LENode</a> </td></tr>
+<tr id="row_2_5_65_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tir_1_1LENode.html" target="_self">LENode</a></td><td class="desc">&lt;= b </td></tr>
+<tr id="row_2_5_66_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Let.html" target="_self">Let</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LetNode.html" title="Let binding. Bind var to value then evaluate body. ">LetNode</a> </td></tr>
+<tr id="row_2_5_67_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LetNode.html" target="_self">LetNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Let.html" title="Managed reference to LetNode. ">Let</a> binding. Bind var to value then evaluate body </td></tr>
+<tr id="row_2_5_68_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LetStmt.html" target="_self">LetStmt</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LetStmtNode.html" title="Let binding, bind var to value, then run body. ">LetStmtNode</a> </td></tr>
+<tr id="row_2_5_69_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LetStmtNode.html" target="_self">LetStmtNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Let.html" title="Managed reference to LetNode. ">Let</a> binding, bind var to value, then run body </td></tr>
+<tr id="row_2_5_70_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Load.html" target="_self">Load</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LoadNode.html" title="Load the value from buffer_var. ">LoadNode</a> </td></tr>
+<tr id="row_2_5_71_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LoadNode.html" target="_self">LoadNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Load.html" title="Managed reference to LoadNode. ">Load</a> the value from buffer_var </td></tr>
+<tr id="row_2_5_72_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LT.html" target="_self">LT</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LTNode.html" title="a &lt; b ">LTNode</a> </td></tr>
+<tr id="row_2_5_73_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LTNode.html" target="_self">LTNode</a></td><td class="desc">&lt; b </td></tr>
+<tr id="row_2_5_74_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Max.html" target="_self">Max</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1MaxNode.html" title="max(a, b) ">MaxNode</a> </td></tr>
+<tr id="row_2_5_75_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1MaxNode.html" target="_self">MaxNode</a></td><td class="desc">Max(a, b) </td></tr>
+<tr id="row_2_5_76_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Min.html" target="_self">Min</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1MinNode.html" title="min(a, b) ">MinNode</a> </td></tr>
+<tr id="row_2_5_77_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1MinNode.html" target="_self">MinNode</a></td><td class="desc">Min(a, b) </td></tr>
+<tr id="row_2_5_78_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Mod.html" target="_self">Mod</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ModNode.html" title="a % b in the C semnatics. ">ModNode</a> </td></tr>
+<tr id="row_2_5_79_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ModNode.html" target="_self">ModNode</a></td><td class="desc">% b in the C semnatics </td></tr>
+<tr id="row_2_5_80_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Mul.html" target="_self">Mul</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1MulNode.html" title="a * b ">MulNode</a> </td></tr>
+<tr id="row_2_5_81_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1MulNode.html" target="_self">MulNode</a></td><td class="desc"><ul>
 <li>b </li>
 </ul>
 </td></tr>
-<tr id="row_2_5_54_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1NENode.html" target="_self">NENode</a></td><td class="desc">!= b </td></tr>
-<tr id="row_2_5_55_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1NotNode.html" target="_self">NotNode</a></td><td class="desc">!a </td></tr>
-<tr id="row_2_5_56_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1OrNode.html" target="_self">OrNode</a></td><td class="desc">|| b </td></tr>
-<tr id="row_2_5_57_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Prefetch.html" target="_self">Prefetch</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html" title="A prefetch hint for abuffer. ">PrefetchNode</a> </td></tr>
-<tr id="row_2_5_58_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html" target="_self">PrefetchNode</a></td><td class="desc">A prefetch hint for abuffer </td></tr>
-<tr id="row_2_5_59_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1PrimFunc.html" target="_self">PrimFunc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1PrimFuncNode.html" title="Primitive functions that contains TIR statements. ">PrimFuncNode</a> </td></tr>
-<tr id="row_2_5_60_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1PrimFuncNode.html" target="_self">PrimFuncNode</a></td><td class="desc">Primitive functions that contains TIR statements </td></tr>
-<tr id="row_2_5_61_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProvideNode.html" target="_self">ProvideNode</a></td><td class="desc">Store value into mult-dimensional array defined by func </td></tr>
-<tr id="row_2_5_62_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1RampNode.html" target="_self">RampNode</a></td><td class="desc">Construct a vector with lanes elements where its i-th element equals base + i * stride. This is useful to construct a index for a continuous vector load </td></tr>
-<tr id="row_2_5_63_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1RealizeNode.html" target="_self">RealizeNode</a></td><td class="desc">Annotate the bounds where func need to be written and read in body. We will need to allocate space for the corresponding regions </td></tr>
-<tr id="row_2_5_64_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ReduceNode.html" target="_self">ReduceNode</a></td><td class="desc">Reduction operator operator </td></tr>
-<tr id="row_2_5_65_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SelectNode.html" target="_self">SelectNode</a></td><td class="desc">Return true_value if condition is true, otherwise return false_value </td></tr>
-<tr id="row_2_5_66_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_2_5_66_" class="arrow" onclick="toggleFolder('2_5_66_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SeqStmt.html" target="_self">SeqStmt</a></td><td class="desc">Sequence statement </td></tr>
-<tr id="row_2_5_66_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SeqStmt_1_1Flattener.html" target="_self">Flattener</a></td><td class="desc">Helper class to flatten sequence of arguments into Array </td></tr>
-<tr id="row_2_5_67_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SeqStmtNode.html" target="_self">SeqStmtNode</a></td><td class="desc">The container of seq statement. Represent a sequence of statements </td></tr>
-<tr id="row_2_5_68_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ShuffleNode.html" target="_self">ShuffleNode</a></td><td class="desc">Shuffle instruction. vec = concat(vectors) result = (vec[indices[0]], vec[indices[1]] ...) </td></tr>
-<tr id="row_2_5_69_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SizeVar.html" target="_self">SizeVar</a></td><td class="desc">Named variable represents a tensor index size </td></tr>
-<tr id="row_2_5_70_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SizeVarNode.html" target="_self">SizeVarNode</a></td><td class="desc">A variable node represent a tensor index size, whose value must be non-negative </td></tr>
-<tr id="row_2_5_71_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Stmt.html" target="_self">Stmt</a></td><td class="desc">Container of all statements </td></tr>
-<tr id="row_2_5_72_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtExprMutator.html" target="_self">StmtExprMutator</a></td><td class="desc">Mutator that recursively mutates stmts and exprs on them </td></tr>
-<tr id="row_2_5_73_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtExprVisitor.html" target="_self">StmtExprVisitor</a></td><td class="desc">Visitor that recursively visit stmts and exprs on them </td></tr>
-<tr id="row_2_5_74_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtFunctor.html" target="_self">StmtFunctor</a></td><td class="desc">Same as <a class="el" href="classtvm_1_1tir_1_1ExprFunctor.html" title="A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerfu...">ExprFunctor</a> except it is a [...]
-<tr id="row_2_5_75_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtFunctor_3_01R_07const_01Stmt_01_6n_00_01Args_8_8_8args_08_4.html" target="_self">StmtFunctor&lt; R(const Stmt &amp;n, Args...args)&gt;</a></td><td class="desc"></td></tr>
-<tr id="row_2_5_76_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtMutator.html" target="_self">StmtMutator</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1StmtMutator.html" title="StmtMutator that mutates the statements. ">StmtMutator</a> that mutates the statements </td></tr>
-<tr id="row_2_5_77_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtNode.html" target="_self">StmtNode</a></td><td class="desc">Base node of all statements </td></tr>
-<tr id="row_2_5_78_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtVisitor.html" target="_self">StmtVisitor</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1StmtVisitor.html" title="StmtVisitor. ">StmtVisitor</a> </td></tr>
-<tr id="row_2_5_79_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StoreNode.html" target="_self">StoreNode</a></td><td class="desc">Store value to the buffer </td></tr>
-<tr id="row_2_5_80_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StringImm.html" target="_self">StringImm</a></td><td class="desc"></td></tr>
-<tr id="row_2_5_81_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StringImmNode.html" target="_self">StringImmNode</a></td><td class="desc">String constants, only used in asserts </td></tr>
-<tr id="row_2_5_82_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SubNode.html" target="_self">SubNode</a></td><td class="desc"><ul>
+<tr id="row_2_5_82_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1NE.html" target="_self">NE</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1NENode.html" title="a != b ">NENode</a> </td></tr>
+<tr id="row_2_5_83_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1NENode.html" target="_self">NENode</a></td><td class="desc">!= b </td></tr>
+<tr id="row_2_5_84_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Not.html" target="_self">Not</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1NotNode.html" title="!a ">NotNode</a> </td></tr>
+<tr id="row_2_5_85_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1NotNode.html" target="_self">NotNode</a></td><td class="desc">!a </td></tr>
+<tr id="row_2_5_86_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Or.html" target="_self">Or</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1OrNode.html" title="a || b ">OrNode</a> </td></tr>
+<tr id="row_2_5_87_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1OrNode.html" target="_self">OrNode</a></td><td class="desc">|| b </td></tr>
+<tr id="row_2_5_88_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Prefetch.html" target="_self">Prefetch</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html" title="A prefetch hint for abuffer. ">PrefetchNode</a> </td></tr>
+<tr id="row_2_5_89_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html" target="_self">PrefetchNode</a></td><td class="desc">A prefetch hint for abuffer </td></tr>
+<tr id="row_2_5_90_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1PrimFunc.html" target="_self">PrimFunc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1PrimFuncNode.html" title="Primitive functions that contains TIR statements. ">PrimFuncNode</a> </td></tr>
+<tr id="row_2_5_91_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1PrimFuncNode.html" target="_self">PrimFuncNode</a></td><td class="desc">Primitive functions that contains TIR statements </td></tr>
+<tr id="row_2_5_92_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProducerLoad.html" target="_self">ProducerLoad</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ProducerLoadNode.html" title="Load value from the result produced by the producer. ">ProducerLoadNode</a> </td></tr>
+<tr id="row_2_5_93_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProducerLoadNode.html" target="_self">ProducerLoadNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Load.html" title="Managed reference to LoadNode. ">Load</a> value from the result produced by the producer </td></tr>
+<tr id="row_2_5_94_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProducerRealize.html" target="_self">ProducerRealize</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ProducerRealizeNode.html" title="Annotate the bounds where the data produced by the producer need to be written and read in body...">Produce [...]
+<tr id="row_2_5_95_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProducerRealizeNode.html" target="_self">ProducerRealizeNode</a></td><td class="desc">Annotate the bounds where the data produced by the producer need to be written and read in body. We will need to allocate space for the corresponding regions </td></tr>
+<tr id="row_2_5_96_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProducerStore.html" target="_self">ProducerStore</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ProducerStoreNode.html" title="Store value into mult-dimensional array that will be read by the consumer of the producer. ">ProducerStoreNode</a [...]
+<tr id="row_2_5_97_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProducerStoreNode.html" target="_self">ProducerStoreNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Store.html" title="Managed reference to StoreNode. ">Store</a> value into mult-dimensional array that will be read by the consumer of the producer </td></tr>
+<tr id="row_2_5_98_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Ramp.html" target="_self">Ramp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1RampNode.html" title="Construct a vector with lanes elements where its i-th element equals base + i * stride. This is useful to construct a index for a continuous [...]
+<tr id="row_2_5_99_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1RampNode.html" target="_self">RampNode</a></td><td class="desc">Construct a vector with lanes elements where its i-th element equals base + i * stride. This is useful to construct a index for a continuous vector load </td></tr>
+<tr id="row_2_5_100_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Reduce.html" target="_self">Reduce</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ReduceNode.html" title="Reduction operator operator. ">ReduceNode</a> </td></tr>
+<tr id="row_2_5_101_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ReduceNode.html" target="_self">ReduceNode</a></td><td class="desc">Reduction operator operator </td></tr>
+<tr id="row_2_5_102_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Select.html" target="_self">Select</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1SelectNode.html" title="return true_value if condition is true, otherwise return false_value. ">SelectNode</a> </td></tr>
+<tr id="row_2_5_103_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SelectNode.html" target="_self">SelectNode</a></td><td class="desc">Return true_value if condition is true, otherwise return false_value </td></tr>
+<tr id="row_2_5_104_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_2_5_104_" class="arrow" onclick="toggleFolder('2_5_104_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SeqStmt.html" target="_self">SeqStmt</a></td><td class="desc">Sequence statement </td></tr>
+<tr id="row_2_5_104_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SeqStmt_1_1Flattener.html" target="_self">Flattener</a></td><td class="desc">Helper class to flatten sequence of arguments into Array </td></tr>
+<tr id="row_2_5_105_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SeqStmtNode.html" target="_self">SeqStmtNode</a></td><td class="desc">The container of seq statement. Represent a sequence of statements </td></tr>
+<tr id="row_2_5_106_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Shuffle.html" target="_self">Shuffle</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ShuffleNode.html" title="Shuffle instruction. vec = concat(vectors) result = (vec[indices[0]], vec[indices[1]] ...">ShuffleNode</a> </td></tr>
+<tr id="row_2_5_107_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ShuffleNode.html" target="_self">ShuffleNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Shuffle.html" title="Managed reference to ShuffleNode. ">Shuffle</a> instruction. vec = concat(vectors) result = (vec[indices[0]], vec[indices[1]] ...) </td></tr>
+<tr id="row_2_5_108_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SizeVar.html" target="_self">SizeVar</a></td><td class="desc">Named variable represents a tensor index size </td></tr>
+<tr id="row_2_5_109_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SizeVarNode.html" target="_self">SizeVarNode</a></td><td class="desc">A variable node represent a tensor index size, whose value must be non-negative </td></tr>
+<tr id="row_2_5_110_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Stmt.html" target="_self">Stmt</a></td><td class="desc">Container of all statements </td></tr>
+<tr id="row_2_5_111_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtExprMutator.html" target="_self">StmtExprMutator</a></td><td class="desc">Mutator that recursively mutates stmts and exprs on them </td></tr>
+<tr id="row_2_5_112_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtExprVisitor.html" target="_self">StmtExprVisitor</a></td><td class="desc">Visitor that recursively visit stmts and exprs on them </td></tr>
+<tr id="row_2_5_113_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtFunctor.html" target="_self">StmtFunctor</a></td><td class="desc">Same as <a class="el" href="classtvm_1_1tir_1_1ExprFunctor.html" title="A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerfu...">ExprFunctor</a> except it is  [...]
+<tr id="row_2_5_114_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtFunctor_3_01R_07const_01Stmt_01_6n_00_01Args_8_8_8args_08_4.html" target="_self">StmtFunctor&lt; R(const Stmt &amp;n, Args...args)&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_2_5_115_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtMutator.html" target="_self">StmtMutator</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1StmtMutator.html" title="StmtMutator that mutates the statements. ">StmtMutator</a> that mutates the statements </td></tr>
+<tr id="row_2_5_116_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtNode.html" target="_self">StmtNode</a></td><td class="desc">Base node of all statements </td></tr>
+<tr id="row_2_5_117_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtVisitor.html" target="_self">StmtVisitor</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1StmtVisitor.html" title="StmtVisitor. ">StmtVisitor</a> </td></tr>
+<tr id="row_2_5_118_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Store.html" target="_self">Store</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1StoreNode.html" title="Store value to the buffer. ">StoreNode</a> </td></tr>
+<tr id="row_2_5_119_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StoreNode.html" target="_self">StoreNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Store.html" title="Managed reference to StoreNode. ">Store</a> value to the buffer </td></tr>
+<tr id="row_2_5_120_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StringImm.html" target="_self">StringImm</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1StringImmNode.html" title="String constants, only used in asserts. ">StringImmNode</a> </td></tr>
+<tr id="row_2_5_121_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StringImmNode.html" target="_self">StringImmNode</a></td><td class="desc">String constants, only used in asserts </td></tr>
+<tr id="row_2_5_122_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Sub.html" target="_self">Sub</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1SubNode.html" title="a - b ">SubNode</a> </td></tr>
+<tr id="row_2_5_123_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SubNode.html" target="_self">SubNode</a></td><td class="desc"><ul>
 <li>b </li>
 </ul>
 </td></tr>
-<tr id="row_2_5_83_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tir_1_1TensorKey.html" target="_self">TensorKey</a></td><td class="desc">Auxiliary data structure used in IR Pass to indicate a tensor </td></tr>
-<tr id="row_2_5_84_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Var.html" target="_self">Var</a></td><td class="desc">Named variable in TVM </td></tr>
-<tr id="row_2_5_85_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1VarNode.html" target="_self">VarNode</a></td><td class="desc">A variable node in the IR </td></tr>
+<tr id="row_2_5_124_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Var.html" target="_self">Var</a></td><td class="desc">Named variable in TIR </td></tr>
+<tr id="row_2_5_125_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1VarNode.html" target="_self">VarNode</a></td><td class="desc">A variable node in the IR </td></tr>
 <tr id="row_2_6_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_2_6_" class="arrow" onclick="toggleFolder('2_6_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetvm_1_1transform.html" target="_self">transform</a></td><td class="desc"></td></tr>
 <tr id="row_2_6_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1transform_1_1Pass.html" target="_self">Pass</a></td><td class="desc"></td></tr>
 <tr id="row_2_6_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1transform_1_1PassContext.html" target="_self">PassContext</a></td><td class="desc"><a class="el" href="classtvm_1_1transform_1_1PassContext.html" title="PassContext that is used to configure the pass behavior. ">PassContext</a> that is used to configure the pass behavior </td></tr>
@@ -551,41 +612,41 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <tr id="row_2_22_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1BaseValueEqual.html" target="_self">BaseValueEqual</a></td><td class="desc">Equality definition of base value class </td></tr>
 <tr id="row_2_23_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1BaseValueHash.html" target="_self">BaseValueHash</a></td><td class="desc">Hash definition of base value classes </td></tr>
 <tr id="row_2_24_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Bool.html" target="_self">Bool</a></td><td class="desc">Boolean constant </td></tr>
-<tr id="row_2_25_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1BuildConfig.html" target="_self">BuildConfig</a></td><td class="desc">Build configuration for compilations </td></tr>
-<tr id="row_2_26_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1BuildConfigNode.html" target="_self">BuildConfigNode</a></td><td class="desc">Container for build configuration options </td></tr>
-<tr id="row_2_27_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Constructor.html" target="_self">Constructor</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1ConstructorNode.html" title="ADT constructor. Constructors compare by pointer equality. ">ConstructorNode</a> </td></tr>
-<tr id="row_2_28_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1ConstructorNode.html" target="_self">ConstructorNode</a></td><td class="desc">ADT constructor. Constructors compare by pointer equality </td></tr>
-<tr id="row_2_29_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DictAttrs.html" target="_self">DictAttrs</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1DictAttrsNode.html" title="Specialized attribute type that is backed by a map. The DictAttrsNode implements the Attrs behavior...">DictAttrsNode</a> </td></tr>
-<tr id="row_2_30_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DictAttrsNode.html" target="_self">DictAttrsNode</a></td><td class="desc">Specialized attribute type that is backed by a map. The <a class="el" href="classtvm_1_1DictAttrsNode.html" title="Specialized attribute type that is backed by a map. The DictAttrsNode implements the Attrs behavio [...]
-<tr id="row_2_31_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1EnvFunc.html" target="_self">EnvFunc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1EnvFuncNode.html" title="A serializable function backed by TVM&#39;s global environment. ">EnvFuncNode</a> </td></tr>
-<tr id="row_2_32_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1EnvFuncNode.html" target="_self">EnvFuncNode</a></td><td class="desc">A serializable function backed by TVM's global environment </td></tr>
-<tr id="row_2_33_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Error.html" target="_self">Error</a></td><td class="desc">Custom <a class="el" href="classtvm_1_1Error.html" title="Custom Error class to be thrown during compilation. ">Error</a> class to be thrown during compilation </td></tr>
-<tr id="row_2_34_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ErrorBuilder.html" target="_self">ErrorBuilder</a></td><td class="desc">A wrapper around std::stringstream to build error </td></tr>
-<tr id="row_2_35_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1ErrorReporter.html" target="_self">ErrorReporter</a></td><td class="desc">An abstraction around how errors are stored and reported. Designed to be opaque to users, so we can support a robust and simpler error reporting mode, as well as a more complex mode </td></tr>
-<tr id="row_2_36_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1FloatImm.html" target="_self">FloatImm</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1FloatImmNode.html" title="Constant floating point literals in the program. ">FloatImmNode</a> </td></tr>
-<tr id="row_2_37_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1FloatImmNode.html" target="_self">FloatImmNode</a></td><td class="desc">Constant floating point literals in the program </td></tr>
-<tr id="row_2_38_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1FuncType.html" target="_self">FuncType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1FuncTypeNode.html" title="Function type. ">FuncTypeNode</a> </td></tr>
-<tr id="row_2_39_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1FuncTypeNode.html" target="_self">FuncTypeNode</a></td><td class="desc">Function type </td></tr>
-<tr id="row_2_40_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GenericFunc.html" target="_self">GenericFunc</a></td><td class="desc">Generic function that can be specialized on a per-target basis </td></tr>
-<tr id="row_2_41_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GenericFuncNode.html" target="_self">GenericFuncNode</a></td><td class="desc">Represents a generic function that can be specialized on a per-target basis </td></tr>
-<tr id="row_2_42_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GlobalTypeVar.html" target="_self">GlobalTypeVar</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1GlobalTypeVarNode.html" title="A global type variable that is used for defining new types or type aliases. ">GlobalTypeVarNode</a> </td></tr>
-<tr id="row_2_43_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GlobalTypeVarNode.html" target="_self">GlobalTypeVarNode</a></td><td class="desc">A global type variable that is used for defining new types or type aliases </td></tr>
-<tr id="row_2_44_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GlobalVar.html" target="_self">GlobalVar</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1GlobalVarNode.html" title="Global variable that lives in the top-level module. ">GlobalVarNode</a> </td></tr>
-<tr id="row_2_45_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GlobalVarNode.html" target="_self">GlobalVarNode</a></td><td class="desc">Global variable that lives in the top-level module </td></tr>
-<tr id="row_2_46_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IncompleteType.html" target="_self">IncompleteType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1IncompleteTypeNode.html" title="Intermediate values that is used to indicate incomplete type during type inference. ">IncompleteTypeNode</a> </td></tr>
-<tr id="row_2_47_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IncompleteTypeNode.html" target="_self">IncompleteTypeNode</a></td><td class="desc">Intermediate values that is used to indicate incomplete type during type inference </td></tr>
-<tr id="row_2_48_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Integer.html" target="_self">Integer</a></td><td class="desc">Container of constant int that adds more constructors </td></tr>
-<tr id="row_2_49_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IntImm.html" target="_self">IntImm</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1IntImmNode.html" title="Constant integer literals in the program. ">IntImmNode</a> </td></tr>
-<tr id="row_2_50_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IntImmNode.html" target="_self">IntImmNode</a></td><td class="desc">Constant integer literals in the program </td></tr>
-<tr id="row_2_51_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IRModule.html" target="_self">IRModule</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1IRModuleNode.html" title="IRModule that holds functions and type definitions. ">IRModuleNode</a> </td></tr>
-<tr id="row_2_52_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IRModuleNode.html" target="_self">IRModuleNode</a></td><td class="desc"><a class="el" href="classtvm_1_1IRModule.html" title="Managed reference class to IRModuleNode. ">IRModule</a> that holds functions and type definitions </td></tr>
-<tr id="row_2_53_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_2_53_" class="arrow" onclick="toggleFolder('2_53_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Map.html" target="_self">Map</a></td><td class="desc"><a class="el" href="classtvm_1_1Map.html" title="Map container of NodeRef-&gt;NodeRef in DSL graph. Map implements copy on write semantics, which means  [...]
-<tr id="row_2_53_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1Map_1_1ValueConverter.html" target="_self">ValueConverter</a></td><td class="desc"></td></tr>
-<tr id="row_2_54_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1MapNode.html" target="_self">MapNode</a></td><td class="desc"><a class="el" href="classtvm_1_1Map.html" title="Map container of NodeRef-&gt;NodeRef in DSL graph. Map implements copy on write semantics, which means map is mutable but copy will happen when array is referenced in more than [...]
-<tr id="row_2_55_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1MemoryInfo.html" target="_self">MemoryInfo</a></td><td class="desc">Defines memory info </td></tr>
-<tr id="row_2_56_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1MemoryInfoNode.html" target="_self">MemoryInfoNode</a></td><td class="desc">Memory information of special memory region. Use <a class="el" href="classtvm_1_1MemoryInfo.html" title="Defines memory info. ">MemoryInfo</a> as its container type </td></tr>
-<tr id="row_2_57_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1NodeFunctor.html" target="_self">NodeFunctor</a></td><td class="desc">A dynamically dispatched functor on the type of the first argument </td></tr>
-<tr id="row_2_58_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1NodeFunctor_3_01R_07const_01ObjectRef_01_6n_00_01Args_8_8_8_08_4.html" target="_self">NodeFunctor&lt; R(const ObjectRef &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_2_25_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Constructor.html" target="_self">Constructor</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1ConstructorNode.html" title="ADT constructor. Constructors compare by pointer equality. ">ConstructorNode</a> </td></tr>
+<tr id="row_2_26_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1ConstructorNode.html" target="_self">ConstructorNode</a></td><td class="desc">ADT constructor. Constructors compare by pointer equality </td></tr>
+<tr id="row_2_27_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DictAttrs.html" target="_self">DictAttrs</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1DictAttrsNode.html" title="Specialized attribute type that is backed by a map. The DictAttrsNode implements the Attrs behavior...">DictAttrsNode</a> </td></tr>
+<tr id="row_2_28_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DictAttrsNode.html" target="_self">DictAttrsNode</a></td><td class="desc">Specialized attribute type that is backed by a map. The <a class="el" href="classtvm_1_1DictAttrsNode.html" title="Specialized attribute type that is backed by a map. The DictAttrsNode implements the Attrs behavio [...]
+<tr id="row_2_29_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1EnvFunc.html" target="_self">EnvFunc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1EnvFuncNode.html" title="A serializable function backed by TVM&#39;s global environment. ">EnvFuncNode</a> </td></tr>
+<tr id="row_2_30_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1EnvFuncNode.html" target="_self">EnvFuncNode</a></td><td class="desc">A serializable function backed by TVM's global environment </td></tr>
+<tr id="row_2_31_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Error.html" target="_self">Error</a></td><td class="desc">Custom <a class="el" href="classtvm_1_1Error.html" title="Custom Error class to be thrown during compilation. ">Error</a> class to be thrown during compilation </td></tr>
+<tr id="row_2_32_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ErrorBuilder.html" target="_self">ErrorBuilder</a></td><td class="desc">A wrapper around std::stringstream to build error </td></tr>
+<tr id="row_2_33_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1ErrorReporter.html" target="_self">ErrorReporter</a></td><td class="desc">An abstraction around how errors are stored and reported. Designed to be opaque to users, so we can support a robust and simpler error reporting mode, as well as a more complex mode </td></tr>
+<tr id="row_2_34_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1FloatImm.html" target="_self">FloatImm</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1FloatImmNode.html" title="Constant floating point literals in the program. ">FloatImmNode</a> </td></tr>
+<tr id="row_2_35_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1FloatImmNode.html" target="_self">FloatImmNode</a></td><td class="desc">Constant floating point literals in the program </td></tr>
+<tr id="row_2_36_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1FuncType.html" target="_self">FuncType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1FuncTypeNode.html" title="Function type. ">FuncTypeNode</a> </td></tr>
+<tr id="row_2_37_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1FuncTypeNode.html" target="_self">FuncTypeNode</a></td><td class="desc">Function type </td></tr>
+<tr id="row_2_38_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GenericFunc.html" target="_self">GenericFunc</a></td><td class="desc">Generic function that can be specialized on a per-target basis </td></tr>
+<tr id="row_2_39_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GenericFuncNode.html" target="_self">GenericFuncNode</a></td><td class="desc">Represents a generic function that can be specialized on a per-target basis </td></tr>
+<tr id="row_2_40_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GlobalTypeVar.html" target="_self">GlobalTypeVar</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1GlobalTypeVarNode.html" title="A global type variable that is used for defining new types or type aliases. ">GlobalTypeVarNode</a> </td></tr>
+<tr id="row_2_41_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GlobalTypeVarNode.html" target="_self">GlobalTypeVarNode</a></td><td class="desc">A global type variable that is used for defining new types or type aliases </td></tr>
+<tr id="row_2_42_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GlobalVar.html" target="_self">GlobalVar</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1GlobalVarNode.html" title="Global variable that lives in the top-level module. ">GlobalVarNode</a> </td></tr>
+<tr id="row_2_43_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GlobalVarNode.html" target="_self">GlobalVarNode</a></td><td class="desc">Global variable that lives in the top-level module </td></tr>
+<tr id="row_2_44_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IncompleteType.html" target="_self">IncompleteType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1IncompleteTypeNode.html" title="Intermediate values that is used to indicate incomplete type during type inference. ">IncompleteTypeNode</a> </td></tr>
+<tr id="row_2_45_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IncompleteTypeNode.html" target="_self">IncompleteTypeNode</a></td><td class="desc">Intermediate values that is used to indicate incomplete type during type inference </td></tr>
+<tr id="row_2_46_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Integer.html" target="_self">Integer</a></td><td class="desc">Container of constant int that adds more constructors </td></tr>
+<tr id="row_2_47_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IntImm.html" target="_self">IntImm</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1IntImmNode.html" title="Constant integer literals in the program. ">IntImmNode</a> </td></tr>
+<tr id="row_2_48_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IntImmNode.html" target="_self">IntImmNode</a></td><td class="desc">Constant integer literals in the program </td></tr>
+<tr id="row_2_49_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IRModule.html" target="_self">IRModule</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1IRModuleNode.html" title="IRModule that holds functions and type definitions. ">IRModuleNode</a> </td></tr>
+<tr id="row_2_50_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IRModuleNode.html" target="_self">IRModuleNode</a></td><td class="desc"><a class="el" href="classtvm_1_1IRModule.html" title="Managed reference class to IRModuleNode. ">IRModule</a> that holds functions and type definitions </td></tr>
+<tr id="row_2_51_" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_2_51_" class="arrow" onclick="toggleFolder('2_51_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Map.html" target="_self">Map</a></td><td class="desc"><a class="el" href="classtvm_1_1Map.html" title="Map container of NodeRef-&gt;NodeRef in DSL graph. Map implements copy on write semantics, which means  [...]
+<tr id="row_2_51_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1Map_1_1ValueConverter.html" target="_self">ValueConverter</a></td><td class="desc"></td></tr>
+<tr id="row_2_52_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1MapNode.html" target="_self">MapNode</a></td><td class="desc"><a class="el" href="classtvm_1_1Map.html" title="Map container of NodeRef-&gt;NodeRef in DSL graph. Map implements copy on write semantics, which means map is mutable but copy will happen when array is referenced in more than [...]
+<tr id="row_2_53_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1MemoryInfo.html" target="_self">MemoryInfo</a></td><td class="desc">Defines memory info </td></tr>
+<tr id="row_2_54_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1MemoryInfoNode.html" target="_self">MemoryInfoNode</a></td><td class="desc">Memory information of special memory region. Use <a class="el" href="classtvm_1_1MemoryInfo.html" title="Defines memory info. ">MemoryInfo</a> as its container type </td></tr>
+<tr id="row_2_55_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1NodeFunctor.html" target="_self">NodeFunctor</a></td><td class="desc">A dynamically dispatched functor on the type of the first argument </td></tr>
+<tr id="row_2_56_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1NodeFunctor_3_01R_07const_01ObjectRef_01_6n_00_01Args_8_8_8_08_4.html" target="_self">NodeFunctor&lt; R(const ObjectRef &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_2_57_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ObjectEqual.html" target="_self">ObjectEqual</a></td><td class="desc">String-aware ObjectRef equal functor </td></tr>
+<tr id="row_2_58_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ObjectHash.html" target="_self">ObjectHash</a></td><td class="desc">String-aware ObjectRef hash functor </td></tr>
 <tr id="row_2_59_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Op.html" target="_self">Op</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1OpNode.html" title="Primitive Op(builtin intrinsics) ">OpNode</a> </td></tr>
 <tr id="row_2_60_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1OpAttrMap.html" target="_self">OpAttrMap</a></td><td class="desc">Map&lt;Op,ValueType&gt; used to store meta-information about <a class="el" href="classtvm_1_1Op.html" title="Managed reference class to OpNode. ">Op</a> </td></tr>
 <tr id="row_2_61_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1OpNode.html" target="_self">OpNode</a></td><td class="desc">Primitive Op(builtin intrinsics) </td></tr>
@@ -613,36 +674,35 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <tr id="row_2_80_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1SourceNameNode.html" target="_self">SourceNameNode</a></td><td class="desc">The name of a source fragment </td></tr>
 <tr id="row_2_81_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Span.html" target="_self">Span</a></td><td class="desc"></td></tr>
 <tr id="row_2_82_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1SpanNode.html" target="_self">SpanNode</a></td><td class="desc">Stores locations in frontend source that generated a node </td></tr>
-<tr id="row_2_83_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1StrMapNode.html" target="_self">StrMapNode</a></td><td class="desc">Specialized map node with string as key </td></tr>
-<tr id="row_2_84_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1StructuralEqual.html" target="_self">StructuralEqual</a></td><td class="desc">Content-aware structural equality comparator for objects </td></tr>
-<tr id="row_2_85_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1StructuralHash.html" target="_self">StructuralHash</a></td><td class="desc">Content-aware structural hasing </td></tr>
-<tr id="row_2_86_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Target.html" target="_self">Target</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1TargetNode.html" title="Compilation target. ">TargetNode</a> </td></tr>
-<tr id="row_2_87_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TargetNode.html" target="_self">TargetNode</a></td><td class="desc">Compilation target </td></tr>
-<tr id="row_2_88_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TensorType.html" target="_self">TensorType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TensorTypeNode.html" title="This is the most commonly used type in relay. TensorType have a fixed dimension, data type...">TensorTypeNode</a> </td></tr>
-<tr id="row_2_89_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TensorTypeNode.html" target="_self">TensorTypeNode</a></td><td class="desc">This is the most commonly used type in relay. <a class="el" href="classtvm_1_1TensorType.html" title="Managed reference to TensorTypeNode. ">TensorType</a> have a fixed dimension, data type </td></tr>
-<tr id="row_2_90_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TupleType.html" target="_self">TupleType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TupleTypeNode.html" title="The type of tuple values. ">TupleTypeNode</a> </td></tr>
-<tr id="row_2_91_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TupleTypeNode.html" target="_self">TupleTypeNode</a></td><td class="desc">The type of tuple values </td></tr>
-<tr id="row_2_92_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Type.html" target="_self">Type</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeNode.html" title="Type is the base type of all types. ">TypeNode</a> </td></tr>
-<tr id="row_2_93_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeCall.html" target="_self">TypeCall</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeCallNode.html" title="Type function application. ">TypeCallNode</a> </td></tr>
-<tr id="row_2_94_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeCallNode.html" target="_self">TypeCallNode</a></td><td class="desc"><a class="el" href="classtvm_1_1Type.html" title="Managed reference to TypeNode. ">Type</a> function application </td></tr>
-<tr id="row_2_95_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeConstraint.html" target="_self">TypeConstraint</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeConstraintNode.html" title="Potential Constraints in a function. ">TypeConstraintNode</a> </td></tr>
-<tr id="row_2_96_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeConstraintNode.html" target="_self">TypeConstraintNode</a></td><td class="desc">Potential Constraints in a function </td></tr>
-<tr id="row_2_97_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeData.html" target="_self">TypeData</a></td><td class="desc">Stores all data for an Algebraic Data <a class="el" href="classtvm_1_1Type.html" title="Managed reference to TypeNode. ">Type</a> (ADT) </td></tr>
-<tr id="row_2_98_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeDataNode.html" target="_self">TypeDataNode</a></td><td class="desc"><a class="el" href="classtvm_1_1TypeData.html" title="Stores all data for an Algebraic Data Type (ADT). ">TypeData</a> container node </td></tr>
-<tr id="row_2_99_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypedEnvFunc.html" target="_self">TypedEnvFunc</a></td><td class="desc">Please refer to <a class="el" href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html#TypedEnvFuncAnchor">TypedEnvFunc&lt;R(Args..)&gt;</a> </td></tr>
-<tr id="row_2_100_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html" target="_self">TypedEnvFunc&lt; R(Args...)&gt;</a></td><td class="desc">A typed version of <a class="el" href="classtvm_1_1EnvFunc.html" title="Managed reference to EnvFuncNode. ">EnvFunc</a>. It is backed by a GlobalFuncNode internally </td></tr>
-<tr id="row_2_101_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeFunctor.html" target="_self">TypeFunctor</a></td><td class="desc"></td></tr>
-<tr id="row_2_102_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeFunctor_3_01R_07const_01Type_01_6n_00_01Args_8_8_8_08_4.html" target="_self">TypeFunctor&lt; R(const Type &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
-<tr id="row_2_103_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeMutator.html" target="_self">TypeMutator</a></td><td class="desc"><a class="el" href="classtvm_1_1TypeMutator.html" title="TypeMutator that mutates expressions. ">TypeMutator</a> that mutates expressions </td></tr>
-<tr id="row_2_104_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeNode.html" target="_self">TypeNode</a></td><td class="desc"><a class="el" href="classtvm_1_1Type.html" title="Managed reference to TypeNode. ">Type</a> is the base type of all types </td></tr>
-<tr id="row_2_105_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeRelation.html" target="_self">TypeRelation</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeRelationNode.html" title="User defined type relation, it is an input-output relation on types. ">TypeRelationNode</a> </td></tr>
-<tr id="row_2_106_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeRelationNode.html" target="_self">TypeRelationNode</a></td><td class="desc">User defined type relation, it is an input-output relation on types </td></tr>
-<tr id="row_2_107_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeReporter.html" target="_self">TypeReporter</a></td><td class="desc">Container class of <a class="el" href="classtvm_1_1TypeReporter.html" title="Container class of TypeReporter. ">TypeReporter</a> </td></tr>
-<tr id="row_2_108_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeReporterNode.html" target="_self">TypeReporterNode</a></td><td class="desc">Reporter that reports back to the type resolution information </td></tr>
-<tr id="row_2_109_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeVar.html" target="_self">TypeVar</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeVarNode.html" title="Type parameter in functions. ">TypeVarNode</a> </td></tr>
-<tr id="row_2_110_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeVarNode.html" target="_self">TypeVarNode</a></td><td class="desc"><a class="el" href="classtvm_1_1Type.html" title="Managed reference to TypeNode. ">Type</a> parameter in functions </td></tr>
-<tr id="row_2_111_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeVisitor.html" target="_self">TypeVisitor</a></td><td class="desc">A type visitor that recursively visit types </td></tr>
-<tr id="row_2_112_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1With.html" target="_self">With</a></td><td class="desc">RAII wrapper function to enter and exit a context object similar to python's with syntax </td></tr>
+<tr id="row_2_83_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1StructuralEqual.html" target="_self">StructuralEqual</a></td><td class="desc">Content-aware structural equality comparator for objects </td></tr>
+<tr id="row_2_84_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1StructuralHash.html" target="_self">StructuralHash</a></td><td class="desc">Content-aware structural hasing </td></tr>
+<tr id="row_2_85_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Target.html" target="_self">Target</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1TargetNode.html" title="Compilation target. ">TargetNode</a> </td></tr>
+<tr id="row_2_86_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TargetNode.html" target="_self">TargetNode</a></td><td class="desc">Compilation target </td></tr>
+<tr id="row_2_87_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TensorType.html" target="_self">TensorType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TensorTypeNode.html" title="This is the most commonly used type in relay. TensorType have a fixed dimension, data type...">TensorTypeNode</a> </td></tr>
+<tr id="row_2_88_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TensorTypeNode.html" target="_self">TensorTypeNode</a></td><td class="desc">This is the most commonly used type in relay. <a class="el" href="classtvm_1_1TensorType.html" title="Managed reference to TensorTypeNode. ">TensorType</a> have a fixed dimension, data type </td></tr>
+<tr id="row_2_89_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TupleType.html" target="_self">TupleType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TupleTypeNode.html" title="The type of tuple values. ">TupleTypeNode</a> </td></tr>
+<tr id="row_2_90_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TupleTypeNode.html" target="_self">TupleTypeNode</a></td><td class="desc">The type of tuple values </td></tr>
+<tr id="row_2_91_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Type.html" target="_self">Type</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeNode.html" title="Type is the base type of all types. ">TypeNode</a> </td></tr>
+<tr id="row_2_92_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeCall.html" target="_self">TypeCall</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeCallNode.html" title="Type function application. ">TypeCallNode</a> </td></tr>
+<tr id="row_2_93_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeCallNode.html" target="_self">TypeCallNode</a></td><td class="desc"><a class="el" href="classtvm_1_1Type.html" title="Managed reference to TypeNode. ">Type</a> function application </td></tr>
+<tr id="row_2_94_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeConstraint.html" target="_self">TypeConstraint</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeConstraintNode.html" title="Potential Constraints in a function. ">TypeConstraintNode</a> </td></tr>
+<tr id="row_2_95_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeConstraintNode.html" target="_self">TypeConstraintNode</a></td><td class="desc">Potential Constraints in a function </td></tr>
+<tr id="row_2_96_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeData.html" target="_self">TypeData</a></td><td class="desc">Stores all data for an Algebraic Data <a class="el" href="classtvm_1_1Type.html" title="Managed reference to TypeNode. ">Type</a> (ADT) </td></tr>
+<tr id="row_2_97_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeDataNode.html" target="_self">TypeDataNode</a></td><td class="desc"><a class="el" href="classtvm_1_1TypeData.html" title="Stores all data for an Algebraic Data Type (ADT). ">TypeData</a> container node </td></tr>
+<tr id="row_2_98_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypedEnvFunc.html" target="_self">TypedEnvFunc</a></td><td class="desc">Please refer to <a class="el" href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html#TypedEnvFuncAnchor">TypedEnvFunc&lt;R(Args..)&gt;</a> </td></tr>
+<tr id="row_2_99_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html" target="_self">TypedEnvFunc&lt; R(Args...)&gt;</a></td><td class="desc">A typed version of <a class="el" href="classtvm_1_1EnvFunc.html" title="Managed reference to EnvFuncNode. ">EnvFunc</a>. It is backed by a GlobalFuncNode internally </td></tr>
+<tr id="row_2_100_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeFunctor.html" target="_self">TypeFunctor</a></td><td class="desc"></td></tr>
+<tr id="row_2_101_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeFunctor_3_01R_07const_01Type_01_6n_00_01Args_8_8_8_08_4.html" target="_self">TypeFunctor&lt; R(const Type &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_2_102_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeMutator.html" target="_self">TypeMutator</a></td><td class="desc"><a class="el" href="classtvm_1_1TypeMutator.html" title="TypeMutator that mutates expressions. ">TypeMutator</a> that mutates expressions </td></tr>
+<tr id="row_2_103_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeNode.html" target="_self">TypeNode</a></td><td class="desc"><a class="el" href="classtvm_1_1Type.html" title="Managed reference to TypeNode. ">Type</a> is the base type of all types </td></tr>
+<tr id="row_2_104_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeRelation.html" target="_self">TypeRelation</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeRelationNode.html" title="User defined type relation, it is an input-output relation on types. ">TypeRelationNode</a> </td></tr>
+<tr id="row_2_105_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeRelationNode.html" target="_self">TypeRelationNode</a></td><td class="desc">User defined type relation, it is an input-output relation on types </td></tr>
+<tr id="row_2_106_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeReporter.html" target="_self">TypeReporter</a></td><td class="desc">Container class of <a class="el" href="classtvm_1_1TypeReporter.html" title="Container class of TypeReporter. ">TypeReporter</a> </td></tr>
+<tr id="row_2_107_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeReporterNode.html" target="_self">TypeReporterNode</a></td><td class="desc">Reporter that reports back to the type resolution information </td></tr>
+<tr id="row_2_108_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeVar.html" target="_self">TypeVar</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeVarNode.html" title="Type parameter in functions. ">TypeVarNode</a> </td></tr>
+<tr id="row_2_109_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeVarNode.html" target="_self">TypeVarNode</a></td><td class="desc"><a class="el" href="classtvm_1_1Type.html" title="Managed reference to TypeNode. ">Type</a> parameter in functions </td></tr>
+<tr id="row_2_110_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeVisitor.html" target="_self">TypeVisitor</a></td><td class="desc">A type visitor that recursively visit types </td></tr>
+<tr id="row_2_111_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1With.html" target="_self">With</a></td><td class="desc">RAII wrapper function to enter and exit a context object similar to python's with syntax </td></tr>
 <tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structTVMByteArray.html" target="_self">TVMByteArray</a></td><td class="desc">Byte array type used to pass in byte array When kTVMBytes is used as data type </td></tr>
 <tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structTVMParallelGroupEnv.html" target="_self">TVMParallelGroupEnv</a></td><td class="desc">Environment for TVM parallel task </td></tr>
 <tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionTVMValue.html" target="_self">TVMValue</a></td><td class="desc">Union type of values being passed through API and function calls </td></tr>
diff --git a/docs/api/doxygen/annotation_8h_source.html b/docs/api/doxygen/annotation_8h_source.html
index fd3a322..79068ac 100644
--- a/docs/api/doxygen/annotation_8h_source.html
+++ b/docs/api/doxygen/annotation_8h_source.html
@@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="structtvm_1_1relay_1_1CastHintAttrs_html"><div class="ttname"><a href="structtvm_1_1relay_1_1CastHintAttrs.html">tvm::relay::CastHintAttrs</a></div><div class="ttdoc">Annotate an expression to be cast into specific data type. </div><div class="ttdef"><b>Definition:</b> annotation.h:50</div></div>
 <div class="ttc" id="structtvm_1_1relay_1_1OnDeviceAttrs_html_a0b4ba6f91e1c2d7ce354115cc99256a9"><div class="ttname"><a href="structtvm_1_1relay_1_1OnDeviceAttrs.html#a0b4ba6f91e1c2d7ce354115cc99256a9">tvm::relay::OnDeviceAttrs::TVM_DECLARE_ATTRS</a></div><div class="ttdeci">TVM_DECLARE_ATTRS(OnDeviceAttrs,&quot;relay.attrs.OnDeviceAttrs&quot;)</div><div class="ttdef"><b>Definition:</b> annotation.h:40</div></div>
 <div class="ttc" id="structtvm_1_1relay_1_1OnDeviceAttrs_html"><div class="ttname"><a href="structtvm_1_1relay_1_1OnDeviceAttrs.html">tvm::relay::OnDeviceAttrs</a></div><div class="ttdoc">Options for the device annotation operators. </div><div class="ttdef"><b>Definition:</b> annotation.h:37</div></div>
-<div class="ttc" id="classtvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;. </div><div class="ttdef"><b>Definition:</b> attrs.h:621</div></div>
+<div class="ttc" id="classtvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;. </div><div class="ttdef"><b>Definition:</b> attrs.h:634</div></div>
 <div class="ttc" id="structtvm_1_1relay_1_1CastHintAttrs_html_afc0f564be8de59a52e639c0746edd87c"><div class="ttname"><a href="structtvm_1_1relay_1_1CastHintAttrs.html#afc0f564be8de59a52e639c0746edd87c">tvm::relay::CastHintAttrs::TVM_DECLARE_ATTRS</a></div><div class="ttdeci">TVM_DECLARE_ATTRS(CastHintAttrs,&quot;relay.attrs.CastHintAttrs&quot;)</div><div class="ttdef"><b>Definition:</b> annotation.h:53</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
diff --git a/docs/api/doxygen/array__utils_8h_source.html b/docs/api/doxygen/array__utils_8h_source.html
index 0229e7f..61a6200 100644
--- a/docs/api/doxygen/array__utils_8h_source.html
+++ b/docs/api/doxygen/array__utils_8h_source.html
@@ -90,7 +90,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 </div><!--header-->
 <div class="contents">
 <a href="array__utils_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or mor [...]
-<div class="ttc" id="namespacetvm_1_1te_html"><div class="ttname"><a href="namespacetvm_1_1te.html">tvm::te</a></div><div class="ttdoc">Tensor expression language DSL. </div><div class="ttdef"><b>Definition:</b> bound.h:36</div></div>
+<div class="ttc" id="namespacetvm_1_1te_html"><div class="ttname"><a href="namespacetvm_1_1te.html">tvm::te</a></div><div class="ttdoc">Tensor expression language DSL. </div><div class="ttdef"><b>Definition:</b> autodiff.h:35</div></div>
 <div class="ttc" id="namespacetopi_html"><div class="ttname"><a href="namespacetopi.html">topi</a></div><div class="ttdef"><b>Definition:</b> broadcast.h:34</div></div>
 <div class="ttc" id="operation_8h_html"><div class="ttname"><a href="operation_8h.html">operation.h</a></div><div class="ttdoc">Operation node can generate one or multiple Tensors. </div></div>
 </div><!-- fragment --></div><!-- contents -->
diff --git a/docs/api/doxygen/attr__registry__map_8h.html b/docs/api/doxygen/attr__registry__map_8h.html
index 0cb4b46..a7079b6 100644
--- a/docs/api/doxygen/attr__registry__map_8h.html
+++ b/docs/api/doxygen/attr__registry__map_8h.html
@@ -106,7 +106,7 @@ Include dependency graph for attr_registry_map.h:</div>
 </div><div class="textblock"><div class="dynheader">
 This graph shows which files directly or indirectly include this file:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="attr__registry__map_8h__dep__incl.svg" width="2172" height="470"><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="attr__registry__map_8h__dep__incl.svg" width="2362" height="470"><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/attr__registry__map_8h__dep__incl.svg b/docs/api/doxygen/attr__registry__map_8h__dep__incl.svg
index 5489983..d377b00 100644
--- a/docs/api/doxygen/attr__registry__map_8h__dep__incl.svg
+++ b/docs/api/doxygen/attr__registry__map_8h__dep__incl.svg
@@ -4,55 +4,55 @@
 <!-- Generated by graphviz version 2.38.0 (20140413.2041)
  -->
 <!-- Title: include/tvm/node/attr_registry_map.h Pages: 1 -->
-<svg width="1629pt" height="352pt"
- viewBox="0.00 0.00 1629.00 352.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="1771pt" height="352pt"
+ viewBox="0.00 0.00 1771.00 352.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 348)">
 <title>include/tvm/node/attr_registry_map.h</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-348 1625,-348 1625,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-348 1767,-348 1767,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node"><title>Node1</title>
-<polygon fill="#bfbfbf" stroke="black" points="532,-313.5 532,-343.5 651,-343.5 651,-313.5 532,-313.5"/>
-<text text-anchor="start" x="540" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/node/attr</text>
-<text text-anchor="middle" x="591.5" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00">_registry_map.h</text>
+<polygon fill="#bfbfbf" stroke="black" points="548,-313.5 548,-343.5 667,-343.5 667,-313.5 548,-313.5"/>
+<text text-anchor="start" x="556" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/node/attr</text>
+<text text-anchor="middle" x="607.5" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00">_registry_map.h</text>
 </g>
 <!-- Node2 -->
 <g id="node2" class="node"><title>Node2</title>
 <g id="a_node2"><a xlink:href="ir_2op_8h.html" target="_top" xlink:title="Primitive operators(builtin intrinsics) and registry for them. ">
-<polygon fill="white" stroke="black" points="539,-257.5 539,-276.5 644,-276.5 644,-257.5 539,-257.5"/>
-<text text-anchor="middle" x="591.5" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/ir/op.h</text>
+<polygon fill="white" stroke="black" points="555,-257.5 555,-276.5 660,-276.5 660,-257.5 555,-257.5"/>
+<text text-anchor="middle" x="607.5" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/ir/op.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node2 -->
 <g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M591.5,-303.289C591.5,-293.857 591.5,-283.655 591.5,-276.658"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="588,-303.399 591.5,-313.399 595,-303.399 588,-303.399"/>
+<path fill="none" stroke="midnightblue" d="M607.5,-303.289C607.5,-293.857 607.5,-283.655 607.5,-276.658"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="604,-303.399 607.5,-313.399 611,-303.399 604,-303.399"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node"><title>Node3</title>
 <g id="a_node3"><a xlink:href="relay_2expr_8h.html" target="_top" xlink:title="Relay expression language. ">
-<polygon fill="white" stroke="black" points="581,-201.5 581,-220.5 712,-220.5 712,-201.5 581,-201.5"/>
-<text text-anchor="middle" x="646.5" y="-208.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/expr.h</text>
+<polygon fill="white" stroke="black" points="590,-201.5 590,-220.5 721,-220.5 721,-201.5 590,-201.5"/>
+<text text-anchor="middle" x="655.5" y="-208.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/expr.h</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node3 -->
 <g id="edge2" class="edge"><title>Node2&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M607.794,-250.002C617.541,-240.433 629.553,-228.639 637.587,-220.751"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="605.266,-247.58 600.582,-257.083 610.17,-252.575 605.266,-247.58"/>
+<path fill="none" stroke="midnightblue" d="M622.228,-249.431C630.64,-239.967 640.849,-228.483 647.721,-220.751"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="619.454,-247.284 615.426,-257.083 624.686,-251.934 619.454,-247.284"/>
 </g>
-<!-- Node19 -->
-<g id="node19" class="node"><title>Node19</title>
-<g id="a_node19"><a xlink:href="relay_2op_8h.html" target="_top" xlink:title="Primitive operators(builtin intrinsics). ">
+<!-- Node20 -->
+<g id="node20" class="node"><title>Node20</title>
+<g id="a_node20"><a xlink:href="relay_2op_8h.html" target="_top" xlink:title="Primitive operators(builtin intrinsics). ">
 <polygon fill="white" stroke="black" points="467.5,-140 467.5,-159 589.5,-159 589.5,-140 467.5,-140"/>
 <text text-anchor="middle" x="528.5" y="-147" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/op.h</text>
 </a>
 </g>
 </g>
-<!-- Node2&#45;&gt;Node19 -->
-<g id="edge35" class="edge"><title>Node2&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M581.962,-248.513C568.294,-223.456 543.648,-178.271 533.29,-159.282"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="578.904,-250.216 586.765,-257.319 585.049,-246.864 578.904,-250.216"/>
+<!-- Node2&#45;&gt;Node20 -->
+<g id="edge36" class="edge"><title>Node2&#45;&gt;Node20</title>
+<path fill="none" stroke="midnightblue" d="M595.766,-248.844C578.675,-223.857 547.553,-178.355 534.507,-159.282"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="593.028,-251.041 601.562,-257.319 598.805,-247.089 593.028,-251.041"/>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node"><title>Node4</title>
@@ -65,8 +65,8 @@
 </g>
 <!-- Node3&#45;&gt;Node4 -->
 <g id="edge3" class="edge"><title>Node3&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M570.574,-207.64C429.647,-202.696 138.342,-189.617 99.5,-165 75.0809,-149.524 61.9609,-116.488 56.1887,-97.5722"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="570.751,-211.149 580.866,-207.996 570.993,-204.153 570.751,-211.149"/>
+<path fill="none" stroke="midnightblue" d="M579.839,-207.76C437.179,-202.972 139.133,-190.082 99.5,-165 75.0707,-149.54 61.9545,-116.498 56.1858,-97.5768"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="579.726,-211.258 589.836,-208.09 579.957,-204.261 579.726,-211.258"/>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node"><title>Node5</title>
@@ -78,8 +78,8 @@
 </g>
 <!-- Node3&#45;&gt;Node5 -->
 <g id="edge4" class="edge"><title>Node3&#45;&gt;Node5</title>
-<path fill="none" stroke="midnightblue" d="M570.518,-203.225C491.168,-195.701 363.219,-182.298 253.5,-165 242.794,-163.312 231.26,-161.147 220.628,-159.007"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="570.621,-206.751 580.905,-204.203 571.278,-199.781 570.621,-206.751"/>
+<path fill="none" stroke="midnightblue" d="M579.705,-203.504C498.691,-196.096 366.616,-182.687 253.5,-165 242.792,-163.326 231.257,-161.165 220.625,-159.025"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="579.538,-207.003 589.814,-204.421 580.171,-200.031 579.538,-207.003"/>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node"><title>Node6</title>
@@ -91,8 +91,8 @@
 </g>
 <!-- Node3&#45;&gt;Node6 -->
 <g id="edge9" class="edge"><title>Node3&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M570.59,-209.204C429.89,-206.934 140.065,-198.233 109.5,-165 83.2811,-136.492 141.616,-106.386 175.478,-92.0539"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="570.813,-212.707 580.866,-209.362 570.921,-205.708 570.813,-212.707"/>
+<path fill="none" stroke="midnightblue" d="M579.402,-209.316C436.76,-207.238 140.675,-198.85 109.5,-165 83.2616,-136.51 141.605,-106.396 175.474,-92.058"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="579.769,-212.821 589.816,-209.46 579.866,-205.822 579.769,-212.821"/>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node"><title>Node7</title>
@@ -104,9 +104,9 @@
 </g>
 </g>
 <!-- Node3&#45;&gt;Node7 -->
-<g id="edge18" class="edge"><title>Node3&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M570.665,-199.848C535.294,-193.137 493.404,-182.277 458.5,-165 438.966,-155.331 437.394,-147.771 420.5,-134 405.435,-121.72 388.305,-107.768 375.874,-97.6455"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="570.471,-203.37 580.936,-201.716 571.724,-196.483 570.471,-203.37"/>
+<g id="edge19" class="edge"><title>Node3&#45;&gt;Node7</title>
+<path fill="none" stroke="midnightblue" d="M580.044,-201.081C542.17,-194.569 496.406,-183.519 458.5,-165 438.916,-155.433 437.394,-147.771 420.5,-134 405.435,-121.72 388.305,-107.768 375.874,-97.6455"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="579.562,-204.548 589.998,-202.72 580.699,-197.641 579.562,-204.548"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node"><title>Node8</title>
@@ -118,136 +118,150 @@
 </g>
 </g>
 <!-- Node3&#45;&gt;Node8 -->
-<g id="edge33" class="edge"><title>Node3&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M638.166,-191.963C629.864,-175.423 615.868,-150.99 598.5,-134 583.052,-118.888 562.258,-106.342 545.224,-97.5345"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="635.079,-193.62 642.578,-201.104 641.383,-190.577 635.079,-193.62"/>
+<g id="edge34" class="edge"><title>Node3&#45;&gt;Node8</title>
+<path fill="none" stroke="midnightblue" d="M645.174,-192.527C634.839,-176.053 617.74,-151.368 598.5,-134 582.206,-119.292 561.004,-106.584 543.978,-97.5946"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="642.246,-194.447 650.443,-201.16 648.221,-190.8 642.246,-194.447"/>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node"><title>Node9</title>
-<g id="a_node9"><a xlink:href="relay_2attrs_2memory_8h.html" target="_top" xlink:title="Attributes for memory operators. ">
+<g id="a_node9"><a xlink:href="algorithm_8h.html" target="_top" xlink:title="include/tvm/relay/attrs\l/algorithm.h">
 <polygon fill="white" stroke="black" points="995.5,-134.5 995.5,-164.5 1119.5,-164.5 1119.5,-134.5 995.5,-134.5"/>
 <text text-anchor="start" x="1003.5" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
-<text text-anchor="middle" x="1057.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">/memory.h</text>
+<text text-anchor="middle" x="1057.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">/algorithm.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node9 -->
 <g id="edge10" class="edge"><title>Node3&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M722.328,-201.022C790.342,-192.681 892.798,-179.408 981.5,-165 986.008,-164.268 990.659,-163.474 995.336,-162.649"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="721.635,-197.58 712.133,-202.266 722.483,-204.529 721.635,-197.58"/>
+<path fill="none" stroke="midnightblue" d="M731.141,-200.677C797.32,-192.254 895.968,-179.053 981.5,-165 986.007,-164.26 990.657,-163.46 995.333,-162.63"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="730.693,-197.206 721.212,-201.936 731.573,-204.15 730.693,-197.206"/>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node"><title>Node10</title>
-<g id="a_node10"><a xlink:href="include_2tvm_2relay_2attrs_2transform_8h.html" target="_top" xlink:title="Transform operators. ">
-<polygon fill="white" stroke="black" points="683.5,-134.5 683.5,-164.5 807.5,-164.5 807.5,-134.5 683.5,-134.5"/>
-<text text-anchor="start" x="691.5" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
-<text text-anchor="middle" x="745.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">/transform.h</text>
+<g id="a_node10"><a xlink:href="relay_2attrs_2memory_8h.html" target="_top" xlink:title="Attributes for memory operators. ">
+<polygon fill="white" stroke="black" points="1137.5,-134.5 1137.5,-164.5 1261.5,-164.5 1261.5,-134.5 1137.5,-134.5"/>
+<text text-anchor="start" x="1145.5" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
+<text text-anchor="middle" x="1199.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">/memory.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node10 -->
 <g id="edge11" class="edge"><title>Node3&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M669.335,-196.276C685.178,-186.754 706.217,-174.11 722.168,-164.523"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="667.452,-193.324 660.684,-201.475 671.058,-199.324 667.452,-193.324"/>
+<path fill="none" stroke="midnightblue" d="M731.422,-205.28C825.109,-198.881 989.115,-185.803 1128.5,-165 1131.36,-164.573 1134.28,-164.105 1137.23,-163.608"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="730.929,-201.806 721.188,-205.972 731.401,-208.79 730.929,-201.806"/>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node"><title>Node11</title>
-<g id="a_node11"><a xlink:href="include_2tvm_2relay_2transform_8h.html" target="_top" xlink:title="Relay specific transformation passes. ">
-<polygon fill="white" stroke="black" points="601.5,-73 601.5,-92 759.5,-92 759.5,-73 601.5,-73"/>
-<text text-anchor="middle" x="680.5" y="-80" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/transform.h</text>
+<g id="a_node11"><a xlink:href="include_2tvm_2relay_2attrs_2transform_8h.html" target="_top" xlink:title="Transform operators. ">
+<polygon fill="white" stroke="black" points="683.5,-134.5 683.5,-164.5 807.5,-164.5 807.5,-134.5 683.5,-134.5"/>
+<text text-anchor="start" x="691.5" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
+<text text-anchor="middle" x="745.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">/transform.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node11 -->
-<g id="edge34" class="edge"><title>Node3&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M651.524,-191.306C658.978,-163.576 672.671,-112.628 678.147,-92.2557"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="648.053,-190.739 648.837,-201.305 654.813,-192.556 648.053,-190.739"/>
+<g id="edge12" class="edge"><title>Node3&#45;&gt;Node11</title>
+<path fill="none" stroke="midnightblue" d="M677.071,-195.739C691.375,-186.282 710.059,-173.93 724.289,-164.523"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="674.806,-193.041 668.395,-201.475 678.667,-198.88 674.806,-193.041"/>
 </g>
-<!-- Node13 -->
-<g id="node13" class="node"><title>Node13</title>
-<g id="a_node13"><a xlink:href="dataflow__pattern_8h.html" target="_top" xlink:title="A pattern language for matching dataflow properties. ">
-<polygon fill="white" stroke="black" points="1138,-134.5 1138,-164.5 1279,-164.5 1279,-134.5 1138,-134.5"/>
-<text text-anchor="start" x="1146" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/dataflow</text>
-<text text-anchor="middle" x="1208.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">_pattern.h</text>
+<!-- Node12 -->
+<g id="node12" class="node"><title>Node12</title>
+<g id="a_node12"><a xlink:href="include_2tvm_2relay_2transform_8h.html" target="_top" xlink:title="Relay specific transformation passes. ">
+<polygon fill="white" stroke="black" points="601.5,-73 601.5,-92 759.5,-92 759.5,-73 601.5,-73"/>
+<text text-anchor="middle" x="680.5" y="-80" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/transform.h</text>
 </a>
 </g>
 </g>
-<!-- Node3&#45;&gt;Node13 -->
-<g id="edge14" class="edge"><title>Node3&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M722.298,-204.954C817.435,-198.154 985.497,-184.598 1128.5,-165 1131.58,-164.578 1134.72,-164.122 1137.88,-163.64"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="721.921,-201.471 712.193,-205.67 722.416,-208.454 721.921,-201.471"/>
+<!-- Node3&#45;&gt;Node12 -->
+<g id="edge35" class="edge"><title>Node3&#45;&gt;Node12</title>
+<path fill="none" stroke="midnightblue" d="M659.194,-191.306C664.675,-163.576 674.744,-112.628 678.77,-92.2557"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="655.724,-190.816 657.218,-201.305 662.591,-192.173 655.724,-190.816"/>
 </g>
-<!-- Node16 -->
-<g id="node16" class="node"><title>Node16</title>
-<g id="a_node16"><a xlink:href="feature_8h.html" target="_top" xlink:title="Detect features used in Expr/Module. ">
-<polygon fill="white" stroke="black" points="1297,-140 1297,-159 1442,-159 1442,-140 1297,-140"/>
-<text text-anchor="middle" x="1369.5" y="-147" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/feature.h</text>
+<!-- Node14 -->
+<g id="node14" class="node"><title>Node14</title>
+<g id="a_node14"><a xlink:href="dataflow__pattern_8h.html" target="_top" xlink:title="A pattern language for matching dataflow properties. ">
+<polygon fill="white" stroke="black" points="1280,-134.5 1280,-164.5 1421,-164.5 1421,-134.5 1280,-134.5"/>
+<text text-anchor="start" x="1288" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/dataflow</text>
+<text text-anchor="middle" x="1350.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">_pattern.h</text>
 </a>
 </g>
 </g>
-<!-- Node3&#45;&gt;Node16 -->
-<g id="edge19" class="edge"><title>Node3&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M722.437,-207.25C842.688,-202.315 1084.16,-190.045 1287.5,-165 1300.13,-163.445 1313.76,-161.245 1326.22,-159.028"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="722.085,-203.761 712.235,-207.663 722.369,-210.756 722.085,-203.761"/>
+<!-- Node3&#45;&gt;Node14 -->
+<g id="edge15" class="edge"><title>Node3&#45;&gt;Node14</title>
+<path fill="none" stroke="midnightblue" d="M731.488,-207.04C847.894,-201.92 1077.2,-189.519 1270.5,-165 1273.58,-164.609 1276.72,-164.179 1279.89,-163.718"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="731.1,-203.554 721.261,-207.484 731.403,-210.547 731.1,-203.554"/>
 </g>
 <!-- Node17 -->
 <g id="node17" class="node"><title>Node17</title>
-<g id="a_node17"><a xlink:href="relay_2function_8h.html" target="_top" xlink:title="Relay Function. ">
-<polygon fill="white" stroke="black" points="263,-140 263,-159 412,-159 412,-140 263,-140"/>
-<text text-anchor="middle" x="337.5" y="-147" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/function.h</text>
+<g id="a_node17"><a xlink:href="feature_8h.html" target="_top" xlink:title="Detect features used in Expr/Module. ">
+<polygon fill="white" stroke="black" points="1439,-140 1439,-159 1584,-159 1584,-140 1439,-140"/>
+<text text-anchor="middle" x="1511.5" y="-147" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/feature.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node17 -->
 <g id="edge20" class="edge"><title>Node3&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M592.207,-199.546C532.343,-188.018 437.179,-169.694 381.69,-159.009"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="591.746,-203.021 602.228,-201.475 593.07,-196.147 591.746,-203.021"/>
+<path fill="none" stroke="midnightblue" d="M731.333,-208.531C870.242,-205.188 1174.68,-194.833 1429.5,-165 1442.28,-163.504 1456.08,-161.295 1468.66,-159.051"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="731.133,-205.035 721.218,-208.769 731.298,-212.033 731.133,-205.035"/>
 </g>
 <!-- Node18 -->
 <g id="node18" class="node"><title>Node18</title>
-<g id="a_node18"><a xlink:href="interpreter_8h.html" target="_top" xlink:title="An interpreter for Relay. ">
-<polygon fill="white" stroke="black" points="1460,-140 1460,-159 1621,-159 1621,-140 1460,-140"/>
-<text text-anchor="middle" x="1540.5" y="-147" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/interpreter.h</text>
+<g id="a_node18"><a xlink:href="relay_2function_8h.html" target="_top" xlink:title="Relay Function. ">
+<polygon fill="white" stroke="black" points="263,-140 263,-159 412,-159 412,-140 263,-140"/>
+<text text-anchor="middle" x="337.5" y="-147" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/function.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node18 -->
-<g id="edge24" class="edge"><title>Node3&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M722.58,-208.424C865.687,-204.867 1184.58,-194.122 1451.5,-165 1465.35,-163.489 1480.33,-161.276 1493.97,-159.032"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="722.081,-204.935 712.17,-208.678 722.252,-211.933 722.081,-204.935"/>
+<g id="edge21" class="edge"><title>Node3&#45;&gt;Node18</title>
+<path fill="none" stroke="midnightblue" d="M600.007,-199.617C538.423,-188.094 440.201,-169.716 382.977,-159.009"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="599.465,-203.076 609.938,-201.475 600.753,-196.196 599.465,-203.076"/>
+</g>
+<!-- Node19 -->
+<g id="node19" class="node"><title>Node19</title>
+<g id="a_node19"><a xlink:href="interpreter_8h.html" target="_top" xlink:title="An interpreter for Relay. ">
+<polygon fill="white" stroke="black" points="1602,-140 1602,-159 1763,-159 1763,-140 1602,-140"/>
+<text text-anchor="middle" x="1682.5" y="-147" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/interpreter.h</text>
+</a>
+</g>
 </g>
 <!-- Node3&#45;&gt;Node19 -->
 <g id="edge25" class="edge"><title>Node3&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M620.454,-196.867C597.584,-185.335 564.989,-168.899 545.375,-159.009"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="619.089,-200.098 629.593,-201.475 622.24,-193.847 619.089,-200.098"/>
+<path fill="none" stroke="midnightblue" d="M731.284,-209.278C891.092,-207.116 1274.2,-198.56 1593.5,-165 1607.51,-163.527 1622.67,-161.298 1636.44,-159.026"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="731.037,-205.781 721.083,-209.412 731.128,-212.781 731.037,-205.781"/>
 </g>
-<!-- Node20 -->
-<g id="node20" class="node"><title>Node20</title>
-<g id="a_node20"><a xlink:href="op__attr__types_8h.html" target="_top" xlink:title="The Expr and related elements in DataFlow construction. ">
+<!-- Node3&#45;&gt;Node20 -->
+<g id="edge26" class="edge"><title>Node3&#45;&gt;Node20</title>
+<path fill="none" stroke="midnightblue" d="M628.124,-197.174C603.481,-185.629 567.961,-168.987 546.662,-159.009"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="626.764,-200.402 637.304,-201.475 629.733,-194.063 626.764,-200.402"/>
+</g>
+<!-- Node21 -->
+<g id="node21" class="node"><title>Node21</title>
+<g id="a_node21"><a xlink:href="op__attr__types_8h.html" target="_top" xlink:title="The Expr and related elements in DataFlow construction. ">
 <polygon fill="white" stroke="black" points="826,-134.5 826,-164.5 939,-164.5 939,-134.5 826,-134.5"/>
 <text text-anchor="start" x="834" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/op</text>
 <text text-anchor="middle" x="882.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attr_types.h</text>
 </a>
 </g>
 </g>
-<!-- Node3&#45;&gt;Node20 -->
-<g id="edge29" class="edge"><title>Node3&#45;&gt;Node20</title>
-<path fill="none" stroke="midnightblue" d="M690.196,-198.983C728.743,-189.265 785.124,-175.05 826.879,-164.523"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="689.154,-195.637 680.313,-201.475 690.865,-202.424 689.154,-195.637"/>
+<!-- Node3&#45;&gt;Node21 -->
+<g id="edge30" class="edge"><title>Node3&#45;&gt;Node21</title>
+<path fill="none" stroke="midnightblue" d="M698.004,-198.859C735.067,-189.144 789.008,-175.006 829.001,-164.523"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="696.809,-195.554 688.024,-201.475 698.584,-202.325 696.809,-195.554"/>
 </g>
-<!-- Node21 -->
-<g id="node21" class="node"><title>Node21</title>
-<g id="a_node21"><a xlink:href="op__strategy_8h.html" target="_top" xlink:title="The Relay operator Strategy and related data structure. ">
+<!-- Node22 -->
+<g id="node22" class="node"><title>Node22</title>
+<g id="a_node22"><a xlink:href="op__strategy_8h.html" target="_top" xlink:title="The Relay operator Strategy and related data structure. ">
 <polygon fill="white" stroke="black" points="868,-67.5 868,-97.5 981,-97.5 981,-67.5 868,-67.5"/>
 <text text-anchor="start" x="876" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/op</text>
 <text text-anchor="middle" x="924.5" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00">_strategy.h</text>
 </a>
 </g>
 </g>
-<!-- Node3&#45;&gt;Node21 -->
-<g id="edge32" class="edge"><title>Node3&#45;&gt;Node21</title>
-<path fill="none" stroke="midnightblue" d="M722.649,-209.506C802.105,-207.182 919.031,-198.041 947.5,-165 964.102,-145.731 947.762,-115.286 935.421,-97.5697"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="722.089,-206.02 712.184,-209.78 722.272,-213.017 722.089,-206.02"/>
+<!-- Node3&#45;&gt;Node22 -->
+<g id="edge33" class="edge"><title>Node3&#45;&gt;Node22</title>
+<path fill="none" stroke="midnightblue" d="M731.411,-209.094C808.457,-206.374 920.175,-196.858 947.5,-165 964.059,-145.694 947.734,-115.262 935.407,-97.5579"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="731.137,-205.601 721.254,-209.421 731.362,-212.598 731.137,-205.601"/>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge5" class="edge"><title>Node5&#45;&gt;Node4</title>
@@ -269,95 +283,95 @@
 <path fill="none" stroke="midnightblue" d="M233.976,-137.884C240.548,-136.568 247.179,-135.248 253.5,-134 318.702,-121.127 393.133,-106.758 445.781,-96.6483"/>
 <polygon fill="midnightblue" stroke="midnightblue" points="232.865,-134.537 223.749,-139.936 234.242,-141.4 232.865,-134.537"/>
 </g>
-<!-- Node10&#45;&gt;Node11 -->
-<g id="edge12" class="edge"><title>Node10&#45;&gt;Node11</title>
+<!-- Node11&#45;&gt;Node12 -->
+<g id="edge13" class="edge"><title>Node11&#45;&gt;Node12</title>
 <path fill="none" stroke="midnightblue" d="M723.997,-126.997C712.132,-115.132 698.052,-101.052 689.195,-92.1945"/>
 <polygon fill="midnightblue" stroke="midnightblue" points="721.85,-129.8 731.396,-134.396 726.8,-124.85 721.85,-129.8"/>
 </g>
-<!-- Node12 -->
-<g id="node12" class="node"><title>Node12</title>
-<g id="a_node12"><a xlink:href="include_2tvm_2relay_2qnn_2transform_8h.html" target="_top" xlink:title="include/tvm/relay/qnn\l/transform.h">
+<!-- Node13 -->
+<g id="node13" class="node"><title>Node13</title>
+<g id="a_node13"><a xlink:href="include_2tvm_2relay_2qnn_2transform_8h.html" target="_top" xlink:title="include/tvm/relay/qnn\l/transform.h">
 <polygon fill="white" stroke="black" points="621,-0.5 621,-30.5 740,-30.5 740,-0.5 621,-0.5"/>
 <text text-anchor="start" x="629" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/qnn</text>
 <text text-anchor="middle" x="680.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">/transform.h</text>
 </a>
 </g>
 </g>
-<!-- Node11&#45;&gt;Node12 -->
-<g id="edge13" class="edge"><title>Node11&#45;&gt;Node12</title>
+<!-- Node12&#45;&gt;Node13 -->
+<g id="edge14" class="edge"><title>Node12&#45;&gt;Node13</title>
 <path fill="none" stroke="midnightblue" d="M680.5,-62.4107C680.5,-52.222 680.5,-39.901 680.5,-30.589"/>
 <polygon fill="midnightblue" stroke="midnightblue" points="677,-62.7338 680.5,-72.7338 684,-62.7338 677,-62.7338"/>
 </g>
-<!-- Node14 -->
-<g id="node14" class="node"><title>Node14</title>
-<g id="a_node14"><a xlink:href="dataflow__matcher_8h.html" target="_top" xlink:title="A pattern matcher for matching dataflow properties. ">
-<polygon fill="white" stroke="black" points="1137,-0.5 1137,-30.5 1278,-30.5 1278,-0.5 1137,-0.5"/>
-<text text-anchor="start" x="1145" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/dataflow</text>
-<text text-anchor="middle" x="1207.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_matcher.h</text>
+<!-- Node15 -->
+<g id="node15" class="node"><title>Node15</title>
+<g id="a_node15"><a xlink:href="dataflow__matcher_8h.html" target="_top" xlink:title="A pattern matcher for matching dataflow properties. ">
+<polygon fill="white" stroke="black" points="1279,-0.5 1279,-30.5 1420,-30.5 1420,-0.5 1279,-0.5"/>
+<text text-anchor="start" x="1287" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/dataflow</text>
+<text text-anchor="middle" x="1349.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_matcher.h</text>
 </a>
 </g>
 </g>
-<!-- Node13&#45;&gt;Node14 -->
-<g id="edge15" class="edge"><title>Node13&#45;&gt;Node14</title>
-<path fill="none" stroke="midnightblue" d="M1191.09,-126.095C1185.62,-117.747 1180.29,-107.888 1177.5,-98 1173.76,-84.7409 1173.85,-80.2859 1177.5,-67 1181.17,-53.6263 1189.41,-40.2097 1196.33,-30.5702"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1188.36,-128.299 1196.96,-134.489 1194.1,-124.288 1188.36,-128.299"/>
+<!-- Node14&#45;&gt;Node15 -->
+<g id="edge16" class="edge"><title>Node14&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M1333.09,-126.095C1327.62,-117.747 1322.29,-107.888 1319.5,-98 1315.76,-84.7409 1315.85,-80.2859 1319.5,-67 1323.17,-53.6263 1331.41,-40.2097 1338.33,-30.5702"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1330.36,-128.299 1338.96,-134.489 1336.1,-124.288 1330.36,-128.299"/>
 </g>
-<!-- Node15 -->
-<g id="node15" class="node"><title>Node15</title>
-<g id="a_node15"><a xlink:href="dataflow__pattern__functor_8h.html" target="_top" xlink:title="A set of passes for operating on pattern graphs. ">
-<polygon fill="white" stroke="black" points="1187,-67.5 1187,-97.5 1328,-97.5 1328,-67.5 1187,-67.5"/>
-<text text-anchor="start" x="1195" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/dataflow</text>
-<text text-anchor="middle" x="1257.5" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00">_pattern_functor.h</text>
+<!-- Node16 -->
+<g id="node16" class="node"><title>Node16</title>
+<g id="a_node16"><a xlink:href="dataflow__pattern__functor_8h.html" target="_top" xlink:title="A set of passes for operating on pattern graphs. ">
+<polygon fill="white" stroke="black" points="1329,-67.5 1329,-97.5 1470,-97.5 1470,-67.5 1329,-67.5"/>
+<text text-anchor="start" x="1337" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/dataflow</text>
+<text text-anchor="middle" x="1399.5" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00">_pattern_functor.h</text>
 </a>
 </g>
 </g>
-<!-- Node13&#45;&gt;Node15 -->
-<g id="edge16" class="edge"><title>Node13&#45;&gt;Node15</title>
-<path fill="none" stroke="midnightblue" d="M1225.34,-126.157C1232.49,-116.679 1240.6,-105.919 1246.89,-97.5765"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1222.36,-124.304 1219.13,-134.396 1227.95,-128.518 1222.36,-124.304"/>
+<!-- Node14&#45;&gt;Node16 -->
+<g id="edge17" class="edge"><title>Node14&#45;&gt;Node16</title>
+<path fill="none" stroke="midnightblue" d="M1367.34,-126.157C1374.49,-116.679 1382.6,-105.919 1388.89,-97.5765"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1364.36,-124.304 1361.13,-134.396 1369.95,-128.518 1364.36,-124.304"/>
 </g>
-<!-- Node15&#45;&gt;Node14 -->
-<g id="edge17" class="edge"><title>Node15&#45;&gt;Node14</title>
-<path fill="none" stroke="midnightblue" d="M1240.54,-59.4472C1233.19,-49.8986 1224.81,-39.0037 1218.33,-30.5765"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1237.78,-61.6037 1246.65,-67.396 1243.33,-57.3357 1237.78,-61.6037"/>
+<!-- Node16&#45;&gt;Node15 -->
+<g id="edge18" class="edge"><title>Node16&#45;&gt;Node15</title>
+<path fill="none" stroke="midnightblue" d="M1382.54,-59.4472C1375.19,-49.8986 1366.81,-39.0037 1360.33,-30.5765"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1379.78,-61.6037 1388.65,-67.396 1385.33,-57.3357 1379.78,-61.6037"/>
 </g>
-<!-- Node17&#45;&gt;Node6 -->
-<g id="edge21" class="edge"><title>Node17&#45;&gt;Node6</title>
+<!-- Node18&#45;&gt;Node6 -->
+<g id="edge22" class="edge"><title>Node18&#45;&gt;Node6</title>
 <path fill="none" stroke="midnightblue" d="M309.743,-135.613C282.014,-122.739 240.159,-103.306 216.168,-92.1672"/>
 <polygon fill="midnightblue" stroke="midnightblue" points="308.365,-138.832 318.909,-139.869 311.313,-132.483 308.365,-138.832"/>
 </g>
-<!-- Node17&#45;&gt;Node7 -->
-<g id="edge22" class="edge"><title>Node17&#45;&gt;Node7</title>
+<!-- Node18&#45;&gt;Node7 -->
+<g id="edge23" class="edge"><title>Node18&#45;&gt;Node7</title>
 <path fill="none" stroke="midnightblue" d="M343.456,-130.065C346.787,-119.753 350.875,-107.101 353.948,-97.589"/>
 <polygon fill="midnightblue" stroke="midnightblue" points="340.076,-129.142 340.332,-139.734 346.737,-131.294 340.076,-129.142"/>
 </g>
-<!-- Node17&#45;&gt;Node11 -->
-<g id="edge23" class="edge"><title>Node17&#45;&gt;Node11</title>
+<!-- Node18&#45;&gt;Node12 -->
+<g id="edge24" class="edge"><title>Node18&#45;&gt;Node12</title>
 <path fill="none" stroke="midnightblue" d="M392.712,-138.037C460.174,-125.253 573.021,-103.868 635.479,-92.0317"/>
 <polygon fill="midnightblue" stroke="midnightblue" points="391.867,-134.635 382.694,-139.936 393.171,-141.512 391.867,-134.635"/>
 </g>
-<!-- Node19&#45;&gt;Node7 -->
-<g id="edge26" class="edge"><title>Node19&#45;&gt;Node7</title>
+<!-- Node20&#45;&gt;Node7 -->
+<g id="edge27" class="edge"><title>Node20&#45;&gt;Node7</title>
 <path fill="none" stroke="midnightblue" d="M496.337,-136.202C467.53,-125.188 425.303,-109.042 395.189,-97.5281"/>
 <polygon fill="midnightblue" stroke="midnightblue" points="495.335,-139.566 505.925,-139.869 497.835,-133.028 495.335,-139.566"/>
 </g>
-<!-- Node19&#45;&gt;Node8 -->
-<g id="edge27" class="edge"><title>Node19&#45;&gt;Node8</title>
+<!-- Node20&#45;&gt;Node8 -->
+<g id="edge28" class="edge"><title>Node20&#45;&gt;Node8</title>
 <path fill="none" stroke="midnightblue" d="M524.459,-129.739C522.251,-119.487 519.562,-107.001 517.535,-97.589"/>
 <polygon fill="midnightblue" stroke="midnightblue" points="521.085,-130.695 526.612,-139.734 527.928,-129.221 521.085,-130.695"/>
 </g>
-<!-- Node19&#45;&gt;Node11 -->
-<g id="edge28" class="edge"><title>Node19&#45;&gt;Node11</title>
+<!-- Node20&#45;&gt;Node12 -->
+<g id="edge29" class="edge"><title>Node20&#45;&gt;Node12</title>
 <path fill="none" stroke="midnightblue" d="M558.243,-135.781C588.345,-122.909 634.071,-103.355 660.232,-92.1672"/>
 <polygon fill="midnightblue" stroke="midnightblue" points="556.503,-132.718 548.684,-139.869 559.255,-139.155 556.503,-132.718"/>
 </g>
-<!-- Node20&#45;&gt;Node11 -->
-<g id="edge31" class="edge"><title>Node20&#45;&gt;Node11</title>
+<!-- Node21&#45;&gt;Node12 -->
+<g id="edge32" class="edge"><title>Node21&#45;&gt;Node12</title>
 <path fill="none" stroke="midnightblue" d="M828.951,-131.269C789.59,-118.603 737.788,-101.934 706.937,-92.007"/>
 <polygon fill="midnightblue" stroke="midnightblue" points="828.078,-134.665 838.669,-134.396 830.222,-128.001 828.078,-134.665"/>
 </g>
-<!-- Node20&#45;&gt;Node21 -->
-<g id="edge30" class="edge"><title>Node20&#45;&gt;Node21</title>
+<!-- Node21&#45;&gt;Node22 -->
+<g id="edge31" class="edge"><title>Node21&#45;&gt;Node22</title>
 <path fill="none" stroke="midnightblue" d="M897.124,-125.867C903.203,-116.459 910.069,-105.833 915.404,-97.5765"/>
 <polygon fill="midnightblue" stroke="midnightblue" points="894.101,-124.097 891.613,-134.396 899.98,-127.896 894.101,-124.097"/>
 </g>
diff --git a/docs/api/doxygen/attr__registry__map_8h_source.html b/docs/api/doxygen/attr__registry__map_8h_source.html
index 46ecf11..6743889 100644
--- a/docs/api/doxygen/attr__registry__map_8h_source.html
+++ b/docs/api/doxygen/attr__registry__map_8h_source.html
@@ -89,13 +89,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">attr_registry_map.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="attr__registry__map_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * [...]
+<a href="attr__registry__map_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * [...]
 <div class="ttc" id="classtvm_1_1AttrRegistryMap_html_aefe7933b03f49eac54bec961e75f8650"><div class="ttname"><a href="classtvm_1_1AttrRegistryMap.html#aefe7933b03f49eac54bec961e75f8650">tvm::AttrRegistryMap::AttrRegistryMap</a></div><div class="ttdeci">AttrRegistryMap(const AttrRegistryMapContainerMap&lt; KeyType &gt; &amp;map)</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> attr_registry_map.h:105</div></div>
 <div class="ttc" id="classtvm_1_1AttrRegistryMapContainerMap_html_a43ad528c7d4ff44543447ef8f5b5bb53"><div class="ttname"><a href="classtvm_1_1AttrRegistryMapContainerMap.html#a43ad528c7d4ff44543447ef8f5b5bb53">tvm::AttrRegistryMapContainerMap::count</a></div><div class="ttdeci">int count(const KeyType &amp;key) const </div><div class="ttdoc">Check if the map has key. </div><div class="ttdef"><b>Definition:</b> attr_registry_map.h:43</div></div>
 <div class="ttc" id="namespacetvm_html"><div class="ttname"><a href="namespacetvm.html">tvm</a></div><div class="ttdef"><b>Definition:</b> analyzer.h:36</div></div>
 <div class="ttc" id="classtvm_1_1AttrRegistryMapContainerMap_html_adf643c70b64415c981d4b4dae26e4f30"><div class="ttname"><a href="classtvm_1_1AttrRegistryMapContainerMap.html#adf643c70b64415c981d4b4dae26e4f30">tvm::AttrRegistryMapContainerMap::operator[]</a></div><div class="ttdeci">const runtime::TVMRetValue &amp; operator[](const KeyType &amp;key) const </div><div class="ttdoc">get the corresponding value element at key. </div><div class="ttdef"><b>Definition:</b> attr_registry_map.h:5 [...]
 <div class="ttc" id="classtvm_1_1AttrRegistryMapContainerMap_html_abebbfdf6393012b39dfdda67edd2a26b"><div class="ttname"><a href="classtvm_1_1AttrRegistryMapContainerMap.html#abebbfdf6393012b39dfdda67edd2a26b">tvm::AttrRegistryMapContainerMap::AttrRegistry</a></div><div class="ttdeci">friend class AttrRegistry</div><div class="ttdef"><b>Definition:</b> attr_registry_map.h:89</div></div>
 <div class="ttc" id="classtvm_1_1AttrRegistryMapContainerMap_html"><div class="ttname"><a href="classtvm_1_1AttrRegistryMapContainerMap.html">tvm::AttrRegistryMapContainerMap</a></div><div class="ttdoc">Generic attribute map. </div><div class="ttdef"><b>Definition:</b> attr_registry_map.h:36</div></div>
+<div class="ttc" id="classtvm_1_1runtime_1_1String_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1String.html">tvm::runtime::String</a></div><div class="ttdoc">Reference to string objects. </div><div class="ttdef"><b>Definition:</b> container.h:1139</div></div>
 <div class="ttc" id="classtvm_1_1AttrRegistryMap_html_accc1c6f22be9fbacd5ab23c06a0c8d59"><div class="ttname"><a href="classtvm_1_1AttrRegistryMap.html#accc1c6f22be9fbacd5ab23c06a0c8d59">tvm::AttrRegistryMap::operator[]</a></div><div class="ttdeci">ValueType operator[](const KeyType &amp;key) const </div><div class="ttdoc">get the corresponding value element at key. </div><div class="ttdef"><b>Definition:</b> attr_registry_map.h:117</div></div>
 <div class="ttc" id="classtvm_1_1AttrRegistryMap_html"><div class="ttname"><a href="classtvm_1_1AttrRegistryMap.html">tvm::AttrRegistryMap</a></div><div class="ttdoc">Map&lt;Key, ValueType&gt; used to store meta-data. </div><div class="ttdef"><b>Definition:</b> attr_registry_map.h:99</div></div>
 <div class="ttc" id="classtvm_1_1OpRegEntry_html"><div class="ttname"><a href="classtvm_1_1OpRegEntry.html">tvm::OpRegEntry</a></div><div class="ttdoc">Helper structure to register operators. </div><div class="ttdef"><b>Definition:</b> op.h:214</div></div>
diff --git a/docs/api/doxygen/autodiff_8h_source.html b/docs/api/doxygen/autodiff_8h_source.html
index 3e4b86b..872864f 100644
--- a/docs/api/doxygen/autodiff_8h_source.html
+++ b/docs/api/doxygen/autodiff_8h_source.html
@@ -89,14 +89,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">autodiff.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="autodiff_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more co [...]
+<a href="autodiff_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more co [...]
 <div class="ttc" id="namespacetvm_1_1te_html_a5c207a8c51face2c69657fb93ecec9c8"><div class="ttname"><a href="namespacetvm_1_1te.html#a5c207a8c51face2c69657fb93ecec9c8">tvm::te::Derivative</a></div><div class="ttdeci">PrimExpr Derivative(const PrimExpr &amp;expr, const Var &amp;var)</div><div class="ttdoc">Take the derivative of the expression with respect to the given variable. </div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1Var_html"><div class="ttname"><a href="classtvm_1_1tir_1_1Var.html">tvm::tir::Var</a></div><div class="ttdoc">a named variable in TIR </div><div class="ttdef"><b>Definition:</b> var.h:87</div></div>
 <div class="ttc" id="tensor_8h_html"><div class="ttname"><a href="tensor_8h.html">tensor.h</a></div><div class="ttdoc">Dataflow tensor object. </div></div>
 <div class="ttc" id="tir_2expr_8h_html"><div class="ttname"><a href="tir_2expr_8h.html">expr.h</a></div><div class="ttdoc">TIR expressions. </div></div>
 <div class="ttc" id="namespacetvm_1_1te_html_a6298db2545a416ec1fd47c593b7217b7"><div class="ttname"><a href="namespacetvm_1_1te.html#a6298db2545a416ec1fd47c593b7217b7">tvm::te::Jacobian</a></div><div class="ttdeci">Tensor Jacobian(const Tensor &amp;output, const Tensor &amp;input)</div><div class="ttdoc">Get the tensor representing the Jacobian of the output with respect to the input. ...</div></div>
 <div class="ttc" id="namespacetvm_1_1te_html_ae0c71f84710b436cbe0b32289d0838f4"><div class="ttname"><a href="namespacetvm_1_1te.html#ae0c71f84710b436cbe0b32289d0838f4">tvm::te::var</a></div><div class="ttdeci">Var var(std::string name_hint, DataType t=DataType::Int(32))</div><div class="ttdoc">Construct a new Var expression. </div></div>
+<div class="ttc" id="classtvm_1_1te_1_1Tensor_html"><div class="ttname"><a href="classtvm_1_1te_1_1Tensor.html">tvm::te::Tensor</a></div><div class="ttdoc">Tensor structure representing a possible input, or intermediate computation result. </div><div class="ttdef"><b>Definition:</b> tensor.h:103</div></div>
 <div class="ttc" id="object_8h_html"><div class="ttname"><a href="object_8h.html">object.h</a></div><div class="ttdoc">A managed object in the TVM runtime. </div></div>
 <div class="ttc" id="namespacetvm_1_1te_html_a547183f5a311af53ab598faba423fd64"><div class="ttname"><a href="namespacetvm_1_1te.html#a547183f5a311af53ab598faba423fd64">tvm::te::VectorJacobianProduct</a></div><div class="ttdeci">Tensor VectorJacobianProduct(const Tensor &amp;output, const Tensor &amp;input, const Tensor &amp;head)</div><div class="ttdoc">The building block for reverse-mode AD. </div></div>
+<div class="ttc" id="classtvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Reference to PrimExprNode. </div><div class="ttdef"><b>Definition:</b> expr.h:103</div></div>
 <div class="ttc" id="namespacetvm_1_1te_html_a0de1399717049f2b3582f0344b267d56"><div class="ttname"><a href="namespacetvm_1_1te.html#a0de1399717049f2b3582f0344b267d56">tvm::te::Gradient</a></div><div class="ttdeci">Array&lt; Tensor &gt; Gradient(const Tensor &amp;output, const Array&lt; Tensor &gt; &amp;inputs, const Tensor &amp;head=Tensor())</div><div class="ttdoc">Perform reverse mode automatic differentiation. </div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
diff --git a/docs/api/doxygen/base_8h.html b/docs/api/doxygen/base_8h.html
index f3b6838..83d207c 100644
--- a/docs/api/doxygen/base_8h.html
+++ b/docs/api/doxygen/base_8h.html
@@ -111,7 +111,7 @@ Include dependency graph for base.h:</div>
 </div><div class="textblock"><div class="dynheader">
 This graph shows which files directly or indirectly include this file:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="base_8h__dep__incl.svg" width="2256" height="470"><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="base_8h__dep__incl.svg" width="2422" height="470"><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/base_8h__dep__incl.svg b/docs/api/doxygen/base_8h__dep__incl.svg
index 466e426..03a1eed 100644
--- a/docs/api/doxygen/base_8h__dep__incl.svg
+++ b/docs/api/doxygen/base_8h__dep__incl.svg
@@ -4,465 +4,470 @@
 <!-- Generated by graphviz version 2.38.0 (20140413.2041)
  -->
 <!-- Title: include/tvm/relay/base.h Pages: 1 -->
-<svg width="1692pt" height="352pt"
- viewBox="0.00 0.00 1692.00 352.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="1816pt" height="352pt"
+ viewBox="0.00 0.00 1815.50 352.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 348)">
 <title>include/tvm/relay/base.h</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-348 1688,-348 1688,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-348 1811.5,-348 1811.5,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node"><title>Node1</title>
-<polygon fill="#bfbfbf" stroke="black" points="774.5,-324.5 774.5,-343.5 908.5,-343.5 908.5,-324.5 774.5,-324.5"/>
-<text text-anchor="middle" x="841.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/base.h</text>
+<polygon fill="#bfbfbf" stroke="black" points="659,-324.5 659,-343.5 793,-343.5 793,-324.5 659,-324.5"/>
+<text text-anchor="middle" x="726" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/base.h</text>
 </g>
 <!-- Node2 -->
 <g id="node2" class="node"><title>Node2</title>
 <g id="a_node2"><a xlink:href="relay_2adt_8h.html" target="_top" xlink:title="Algebraic data types for Relay. ">
-<polygon fill="white" stroke="black" points="57.5,-140 57.5,-159 183.5,-159 183.5,-140 57.5,-140"/>
-<text text-anchor="middle" x="120.5" y="-147" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/adt.h</text>
+<polygon fill="white" stroke="black" points="218,-140 218,-159 344,-159 344,-140 218,-140"/>
+<text text-anchor="middle" x="281" y="-147" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/adt.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node2 -->
 <g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M764.233,-328.15C608.311,-317.103 262.604,-285.852 165.5,-221 142.557,-205.677 128.882,-174.265 123.356,-159.086"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="764.004,-331.643 774.224,-328.849 764.493,-324.66 764.004,-331.643"/>
+<path fill="none" stroke="midnightblue" d="M648.697,-331.557C555.314,-328.455 404.999,-318.693 359,-288 311.058,-256.011 289.284,-183.979 283.006,-159.125"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="648.846,-335.064 658.951,-331.879 649.065,-328.067 648.846,-335.064"/>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node"><title>Node7</title>
 <g id="a_node7"><a xlink:href="algorithm_8h.html" target="_top" xlink:title="include/tvm/relay/attrs\l/algorithm.h">
-<polygon fill="white" stroke="black" points="779.5,-257.5 779.5,-287.5 903.5,-287.5 903.5,-257.5 779.5,-257.5"/>
-<text text-anchor="start" x="787.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
-<text text-anchor="middle" x="841.5" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00">/algorithm.h</text>
+<polygon fill="white" stroke="black" points="0,-134.5 0,-164.5 124,-164.5 124,-134.5 0,-134.5"/>
+<text text-anchor="start" x="8" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
+<text text-anchor="middle" x="62" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">/algorithm.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node7 -->
 <g id="edge6" class="edge"><title>Node1&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M841.5,-314.235C841.5,-305.586 841.5,-295.497 841.5,-287.523"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="838,-314.475 841.5,-324.475 845,-314.475 838,-314.475"/>
+<path fill="none" stroke="midnightblue" d="M648.6,-332.709C566.564,-330.479 434.057,-321.346 325,-288 228.181,-258.396 125.041,-193.227 82.3272,-164.533"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="648.761,-336.214 658.843,-332.959 648.931,-329.216 648.761,-336.214"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node"><title>Node8</title>
 <g id="a_node8"><a xlink:href="bitserial_8h.html" target="_top" xlink:title="Auxiliary attributes for bitserial operators. ">
-<polygon fill="white" stroke="black" points="921.5,-257.5 921.5,-287.5 1045.5,-287.5 1045.5,-257.5 921.5,-257.5"/>
-<text text-anchor="start" x="929.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
-<text text-anchor="middle" x="983.5" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00">/bitserial.h</text>
+<polygon fill="white" stroke="black" points="368,-257.5 368,-287.5 492,-287.5 492,-257.5 368,-257.5"/>
+<text text-anchor="start" x="376" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
+<text text-anchor="middle" x="430" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00">/bitserial.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node8 -->
 <g id="edge7" class="edge"><title>Node1&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M871.117,-320.59C894.142,-310.942 926.085,-297.558 950.033,-287.523"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="869.716,-317.382 861.845,-324.475 872.421,-323.839 869.716,-317.382"/>
+<path fill="none" stroke="midnightblue" d="M672.898,-322.443C627.297,-313.362 559.808,-299.886 501,-288 498.164,-287.427 495.264,-286.839 492.335,-286.245"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="672.365,-325.905 682.856,-324.425 673.731,-319.04 672.365,-325.905"/>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node"><title>Node9</title>
 <g id="a_node9"><a xlink:href="image_8h.html" target="_top" xlink:title="Auxiliary attributes for image operators. ">
-<polygon fill="white" stroke="black" points="1063.5,-257.5 1063.5,-287.5 1187.5,-287.5 1187.5,-257.5 1063.5,-257.5"/>
-<text text-anchor="start" x="1071.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
-<text text-anchor="middle" x="1125.5" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00">/image.h</text>
+<polygon fill="white" stroke="black" points="510,-257.5 510,-287.5 634,-287.5 634,-257.5 510,-257.5"/>
+<text text-anchor="start" x="518" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
+<text text-anchor="middle" x="572" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00">/image.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node9 -->
 <g id="edge8" class="edge"><title>Node1&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M892.031,-322.413C939.946,-312.375 1012.05,-297.269 1063.44,-286.503"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="891.26,-318.999 882.19,-324.475 892.696,-325.85 891.26,-318.999"/>
+<path fill="none" stroke="midnightblue" d="M694.546,-320.847C669.529,-311.182 634.498,-297.647 608.295,-287.523"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="693.346,-324.136 703.936,-324.475 695.869,-317.606 693.346,-324.136"/>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node"><title>Node10</title>
 <g id="a_node10"><a xlink:href="include_2tvm_2relay_2attrs_2nn_8h.html" target="_top" xlink:title="Auxiliary attributes for nn operators. ">
-<polygon fill="white" stroke="black" points="1205.5,-263 1205.5,-282 1353.5,-282 1353.5,-263 1205.5,-263"/>
-<text text-anchor="middle" x="1279.5" y="-270" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs/nn.h</text>
+<polygon fill="white" stroke="black" points="652,-263 652,-282 800,-282 800,-263 652,-263"/>
+<text text-anchor="middle" x="726" y="-270" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs/nn.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node10 -->
 <g id="edge9" class="edge"><title>Node1&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M919.038,-324.232C991.054,-315.836 1101.21,-302.356 1196.5,-288 1208.36,-286.213 1221.14,-284.083 1233.03,-282.014"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="918.225,-320.802 908.696,-325.433 919.033,-327.756 918.225,-320.802"/>
+<path fill="none" stroke="midnightblue" d="M726,-314.317C726,-303.496 726,-290.398 726,-282.009"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="722.5,-314.475 726,-324.475 729.5,-314.475 722.5,-314.475"/>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node"><title>Node11</title>
 <g id="a_node11"><a xlink:href="include_2tvm_2relay_2attrs_2transform_8h.html" target="_top" xlink:title="Transform operators. ">
-<polygon fill="white" stroke="black" points="697.5,-134.5 697.5,-164.5 821.5,-164.5 821.5,-134.5 697.5,-134.5"/>
-<text text-anchor="start" x="705.5" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
-<text text-anchor="middle" x="759.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">/transform.h</text>
+<polygon fill="white" stroke="black" points="1475,-134.5 1475,-164.5 1599,-164.5 1599,-134.5 1475,-134.5"/>
+<text text-anchor="start" x="1483" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
+<text text-anchor="middle" x="1537" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">/transform.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node11 -->
 <g id="edge10" class="edge"><title>Node1&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M808.443,-320.132C794.337,-312.882 779.158,-302.35 770.5,-288 746.747,-248.631 752.436,-190.972 756.765,-164.603"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="806.945,-323.295 817.479,-324.43 809.952,-316.974 806.945,-323.295"/>
+<path fill="none" stroke="midnightblue" d="M803.269,-329.706C886.695,-324.96 1023.08,-313.738 1138,-288 1277.96,-256.655 1437.17,-192.851 1504.36,-164.555"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="802.904,-326.221 793.112,-330.266 803.29,-333.21 802.904,-326.221"/>
 </g>
 <!-- Node14 -->
 <g id="node14" class="node"><title>Node14</title>
 <g id="a_node14"><a xlink:href="vision_8h.html" target="_top" xlink:title="Auxiliary attributes for vision operators. ">
-<polygon fill="white" stroke="black" points="1371.5,-257.5 1371.5,-287.5 1495.5,-287.5 1495.5,-257.5 1371.5,-257.5"/>
-<text text-anchor="start" x="1379.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/relay/attrs</text>
... 192311 lines suppressed ...