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

[tvm-site] branch asf-site updated: Docs build at Sun Dec 6 09:22:58 PST 2020

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new bff4aad  Docs build at Sun Dec  6 09:22:58 PST 2020
bff4aad is described below

commit bff4aadb3147e75409859783285ad9efa941f1d7
Author: Lianmin Zheng <li...@gmail.com>
AuthorDate: Sun Dec 6 09:22:59 2020 -0800

    Docs build at Sun Dec  6 09:22:58 PST 2020
---
 docs.tgz.1                                         |  Bin 30035283 -> 0 bytes
 .../tune_network_cuda.py                           |   10 +-
 .../tune_matmul_x86.py                             |    2 +-
 .../tune_network_x86.ipynb                         |    2 +-
 .../tune_network_x86.py                            |   10 +-
 .../tune_network_cuda.ipynb                        |    2 +-
 .../tune_matmul_x86.ipynb                          |    2 +-
 .../auto_scheduler/sg_execution_times.rst.txt      |   10 +-
 .../auto_scheduler/tune_conv2d_layer_cuda.rst.txt  |    6 +-
 .../auto_scheduler/tune_matmul_x86.rst.txt         |   84 +-
 .../auto_scheduler/tune_network_cuda.rst.txt       |   12 +-
 .../auto_scheduler/tune_network_x86.rst.txt        |   12 +-
 .../tutorials/autotvm/sg_execution_times.rst.txt   |   12 +-
 .../tutorials/autotvm/tune_conv2d_cuda.rst.txt     |   44 +-
 .../tutorials/autotvm/tune_simple_template.rst.txt |   20 +-
 .../tutorials/dev/sg_execution_times.rst.txt       |    8 +-
 .../frontend/deploy_model_on_android.rst.txt       |    2 +-
 .../deploy_object_detection_pytorch.rst.txt        |    2 +-
 .../tutorials/frontend/deploy_prequantized.rst.txt |    2 +-
 .../frontend/deploy_prequantized_tflite.rst.txt    |    4 +-
 .../tutorials/frontend/deploy_ssd_gluoncv.rst.txt  |    2 +-
 docs/_sources/tutorials/frontend/from_onnx.rst.txt |    2 +-
 .../tutorials/frontend/from_pytorch.rst.txt        |    2 +-
 .../tutorials/frontend/from_tensorflow.rst.txt     |  724 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |   40 +-
 .../get_started/cross_compilation_and_rpc.rst.txt  |    2 +-
 .../get_started/relay_quick_start.rst.txt          |    2 +-
 .../get_started/sg_execution_times.rst.txt         |    8 +-
 docs/_sources/tutorials/language/reduction.rst.txt |    4 +-
 .../tutorials/language/schedule_primitives.rst.txt |   14 +-
 .../tutorials/language/sg_execution_times.rst.txt  |   16 +-
 docs/_sources/tutorials/language/tensorize.rst.txt |    8 +-
 .../tutorials/language/tuple_inputs.rst.txt        |   16 +-
 .../tutorials/micro/sg_execution_times.rst.txt     |    6 +-
 .../tutorials/optimize/opt_conv_cuda.rst.txt       |    2 +-
 .../tutorials/optimize/opt_conv_tensorcore.rst.txt |    2 +-
 docs/_sources/tutorials/optimize/opt_gemm.rst.txt  |   32 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |   10 +-
 docs/_sources/tutorials/topi/intro_topi.rst.txt    |    2 +-
 .../tutorials/topi/sg_execution_times.rst.txt      |    4 +-
 .../tutorials/autotvm/sg_execution_times.rst.txt   |    4 +-
 .../vta/tutorials/autotvm/tune_relay_vta.rst.txt   |    2 +-
 .../frontend/deploy_classification.rst.txt         |    4 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |    4 +-
 .../_sources/vta/tutorials/matrix_multiply.rst.txt |    4 +-
 .../vta/tutorials/optimize/convolution_opt.rst.txt |   12 +-
 .../tutorials/optimize/matrix_multiply_opt.rst.txt |   12 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |    6 +-
 .../vta/tutorials/sg_execution_times.rst.txt       |    6 +-
 .../_sources/vta/tutorials/vta_get_started.rst.txt |    4 +-
 docs/_static/css/tlcpack_theme.css                 |   14 +-
 docs/api/doxygen/analyzer_8h_source.html           |   10 +-
 .../api/doxygen/attr__registry__map_8h_source.html |    2 +-
 docs/api/doxygen/autodiff_8h_source.html           |    2 +-
 docs/api/doxygen/base_8h_source.html               |    4 +-
 docs/api/doxygen/bound_8h_source.html              |    2 +-
 docs/api/doxygen/broadcast_8h_source.html          |   16 +-
 docs/api/doxygen/buffer_8h_source.html             |   32 +-
 docs/api/doxygen/classtvm_1_1AttrsNode.html        |    2 +-
 docs/api/doxygen/classtvm_1_1ConstructorNode.html  |    2 +-
 .../doxygen/classtvm_1_1DiagnosticContextNode.html |    2 +-
 docs/api/doxygen/classtvm_1_1DiagnosticNode.html   |    2 +-
 docs/api/doxygen/classtvm_1_1DictAttrsNode.html    |    2 +-
 docs/api/doxygen/classtvm_1_1EnvFuncNode.html      |    2 +-
 docs/api/doxygen/classtvm_1_1FloatImmNode.html     |    2 +-
 docs/api/doxygen/classtvm_1_1FuncTypeNode.html     |    2 +-
 .../api/doxygen/classtvm_1_1GlobalTypeVarNode.html |    2 +-
 docs/api/doxygen/classtvm_1_1GlobalVarNode.html    |    2 +-
 docs/api/doxygen/classtvm_1_1IRModuleNode.html     |    2 +-
 .../doxygen/classtvm_1_1IncompleteTypeNode.html    |    2 +-
 docs/api/doxygen/classtvm_1_1IntImmNode.html       |    2 +-
 docs/api/doxygen/classtvm_1_1NodeFunctor.html      |    2 +-
 docs/api/doxygen/classtvm_1_1OpNode.html           |    2 +-
 docs/api/doxygen/classtvm_1_1PointerTypeNode.html  |    2 +-
 docs/api/doxygen/classtvm_1_1PrimTypeNode.html     |    2 +-
 docs/api/doxygen/classtvm_1_1Range-members.html    |    4 +-
 docs/api/doxygen/classtvm_1_1Range.html            |   34 +-
 .../api/doxygen/classtvm_1_1RangeNode-members.html |    7 +-
 docs/api/doxygen/classtvm_1_1RangeNode.html        |   45 +-
 .../doxygen/classtvm_1_1RangeNode__coll__graph.svg |  132 +-
 .../classtvm_1_1RangeNode__inherit__graph.svg      |   35 +-
 docs/api/doxygen/classtvm_1_1ReflectionVTable.html |    6 +-
 docs/api/doxygen/classtvm_1_1RelayRefTypeNode.html |    2 +-
 docs/api/doxygen/classtvm_1_1SourceNameNode.html   |    2 +-
 docs/api/doxygen/classtvm_1_1SpanNode.html         |    2 +-
 docs/api/doxygen/classtvm_1_1TensorTypeNode.html   |    2 +-
 docs/api/doxygen/classtvm_1_1TupleTypeNode.html    |    2 +-
 docs/api/doxygen/classtvm_1_1TypeCallNode.html     |    2 +-
 docs/api/doxygen/classtvm_1_1TypeDataNode.html     |    2 +-
 docs/api/doxygen/classtvm_1_1TypeRelationNode.html |    2 +-
 docs/api/doxygen/classtvm_1_1TypeVarNode.html      |    2 +-
 .../classtvm_1_1arith_1_1ConstIntBound.html        |    2 +-
 .../classtvm_1_1arith_1_1ConstIntBoundNode.html    |    6 +-
 .../classtvm_1_1arith_1_1IntConstraintsNode.html   |    2 +-
 ...vm_1_1arith_1_1IntConstraintsTransformNode.html |    2 +-
 .../classtvm_1_1arith_1_1IntGroupBounds.html       |    2 +-
 .../doxygen/classtvm_1_1arith_1_1IterMarkNode.html |    2 +-
 .../classtvm_1_1arith_1_1IterSplitExprNode.html    |    2 +-
 .../classtvm_1_1arith_1_1IterSumExprNode.html      |    2 +-
 .../classtvm_1_1arith_1_1ModularSetNode.html       |    2 +-
 ...1auto__scheduler_1_1HardwareParams-members.html |    2 +-
 ...sstvm_1_1auto__scheduler_1_1HardwareParams.html |   12 +-
 ...o__scheduler_1_1HardwareParamsNode-members.html |    2 +-
 ...m_1_1auto__scheduler_1_1HardwareParamsNode.html |   16 +-
 ...cheduler_1_1HardwareParamsNode__coll__graph.svg |   45 +-
 ...duler_1_1HardwareParamsNode__inherit__graph.svg |   45 +-
 .../classtvm_1_1detail_1_1AttrsSEqualVisitor.html  |    2 +-
 .../classtvm_1_1parser_1_1SourceMapNode.html       |    2 +-
 .../api/doxygen/classtvm_1_1relay_1_1CallNode.html |    2 +-
 .../doxygen/classtvm_1_1relay_1_1ClauseNode.html   |    2 +-
 .../doxygen/classtvm_1_1relay_1_1ConstantNode.html |    2 +-
 .../doxygen/classtvm_1_1relay_1_1FunctionNode.html |    2 +-
 docs/api/doxygen/classtvm_1_1relay_1_1IdNode.html  |    2 +-
 docs/api/doxygen/classtvm_1_1relay_1_1IfNode.html  |    2 +-
 docs/api/doxygen/classtvm_1_1relay_1_1LetNode.html |    2 +-
 .../doxygen/classtvm_1_1relay_1_1MatchNode.html    |    2 +-
 ...lasstvm_1_1relay_1_1PatternConstructorNode.html |    2 +-
 .../classtvm_1_1relay_1_1PatternTupleNode.html     |    2 +-
 .../classtvm_1_1relay_1_1PatternVarNode.html       |    2 +-
 .../classtvm_1_1relay_1_1PatternWildcardNode.html  |    2 +-
 .../classtvm_1_1relay_1_1RefCreateNode.html        |    2 +-
 .../doxygen/classtvm_1_1relay_1_1RefReadNode.html  |    2 +-
 .../doxygen/classtvm_1_1relay_1_1RefWriteNode.html |    2 +-
 .../classtvm_1_1relay_1_1TupleGetItemNode.html     |    2 +-
 .../doxygen/classtvm_1_1relay_1_1TupleNode.html    |    2 +-
 docs/api/doxygen/classtvm_1_1relay_1_1VarNode.html |    2 +-
 docs/api/doxygen/classtvm_1_1te_1_1TensorNode.html |    2 +-
 .../doxygen/classtvm_1_1tir_1_1AllocateNode.html   |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1AndNode.html   |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1AnyNode.html   |    2 +-
 .../doxygen/classtvm_1_1tir_1_1AssertStmtNode.html |    2 +-
 .../doxygen/classtvm_1_1tir_1_1AttrStmtNode.html   |    2 +-
 .../doxygen/classtvm_1_1tir_1_1BinaryOpNode.html   |    2 +-
 .../doxygen/classtvm_1_1tir_1_1BroadcastNode.html  |    2 +-
 .../doxygen/classtvm_1_1tir_1_1BufferLoadNode.html |    2 +-
 .../api/doxygen/classtvm_1_1tir_1_1BufferNode.html |    2 +-
 .../classtvm_1_1tir_1_1BufferRealizeNode.html      |    2 +-
 .../classtvm_1_1tir_1_1BufferStoreNode.html        |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1CallNode.html  |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1CastNode.html  |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1CmpOpNode.html |    2 +-
 .../classtvm_1_1tir_1_1CommReducerNode.html        |    2 +-
 .../classtvm_1_1tir_1_1DataProducerNode.html       |    2 +-
 .../doxygen/classtvm_1_1tir_1_1EvaluateNode.html   |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1For.html       |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1ForNode.html   |    2 +-
 .../doxygen/classtvm_1_1tir_1_1IfThenElseNode.html |    2 +-
 .../doxygen/classtvm_1_1tir_1_1IterVarNode.html    |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1LetNode.html   |    2 +-
 .../doxygen/classtvm_1_1tir_1_1LetStmtNode.html    |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1LoadNode.html  |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1NotNode.html   |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1OrNode.html    |    2 +-
 .../doxygen/classtvm_1_1tir_1_1PrefetchNode.html   |    2 +-
 .../doxygen/classtvm_1_1tir_1_1PrimFuncNode.html   |    2 +-
 .../classtvm_1_1tir_1_1ProducerLoadNode.html       |    2 +-
 .../classtvm_1_1tir_1_1ProducerRealizeNode.html    |    2 +-
 .../classtvm_1_1tir_1_1ProducerStoreNode.html      |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1RampNode.html  |    2 +-
 .../api/doxygen/classtvm_1_1tir_1_1ReduceNode.html |    2 +-
 .../api/doxygen/classtvm_1_1tir_1_1SelectNode.html |    2 +-
 .../doxygen/classtvm_1_1tir_1_1SeqStmtNode.html    |    2 +-
 .../doxygen/classtvm_1_1tir_1_1ShuffleNode.html    |    2 +-
 .../doxygen/classtvm_1_1tir_1_1SizeVarNode.html    |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1StoreNode.html |    2 +-
 .../doxygen/classtvm_1_1tir_1_1StringImmNode.html  |    2 +-
 docs/api/doxygen/classtvm_1_1tir_1_1VarNode.html   |    2 +-
 docs/api/doxygen/codegen_8h_source.html            |    2 +-
 docs/api/doxygen/constant__utils_8h_source.html    |    2 +-
 docs/api/doxygen/cublas_8h_source.html             |    2 +-
 docs/api/doxygen/cuda_2dense_8h_source.html        |    6 +-
 docs/api/doxygen/cuda_2injective_8h_source.html    |    6 +-
 .../api/doxygen/cuda_2normalization_8h_source.html |    4 +-
 docs/api/doxygen/cuda_2pooling_8h_source.html      |    6 +-
 docs/api/doxygen/cuda_2reduction_8h_source.html    |    6 +-
 docs/api/doxygen/cuda_2softmax_8h_source.html      |    4 +-
 docs/api/doxygen/data__layout_8h_source.html       |    2 +-
 docs/api/doxygen/detail_2broadcast_8h_source.html  |   10 +-
 docs/api/doxygen/detail_2extern_8h_source.html     |    8 +-
 docs/api/doxygen/device__api_8h_source.html        |    2 +-
 docs/api/doxygen/diagnostic_8h_source.html         |    4 +-
 docs/api/doxygen/dilate_8h_source.html             |   10 +-
 docs/api/doxygen/elemwise_8h_source.html           |    6 +-
 docs/api/doxygen/env__func_8h_source.html          |    6 +-
 docs/api/doxygen/flatten_8h_source.html            |    8 +-
 docs/api/doxygen/functions_f.html                  |    2 +-
 docs/api/doxygen/functions_func_f.html             |    2 +-
 docs/api/doxygen/functions_func_h.html             |    2 +-
 docs/api/doxygen/functions_func_r.html             |    2 +-
 docs/api/doxygen/functions_h.html                  |    2 +-
 docs/api/doxygen/functions_m.html                  |    6 +-
 docs/api/doxygen/functions_r.html                  |    4 +-
 docs/api/doxygen/functions_s.html                  |    9 +-
 docs/api/doxygen/functions_v.html                  |    8 +-
 docs/api/doxygen/functions_vars_m.html             |    6 +-
 docs/api/doxygen/functions_vars_s.html             |    1 +
 docs/api/doxygen/generic__func_8h_source.html      |    4 +-
 docs/api/doxygen/globals_defs.html                 |    9 +
 docs/api/doxygen/globals_t.html                    |    9 +
 docs/api/doxygen/int__set_8h_source.html           |    8 +-
 docs/api/doxygen/int__solver_8h_source.html        |    2 +-
 docs/api/doxygen/ir_2adt_8h_source.html            |    4 +-
 docs/api/doxygen/ir_2attrs_8h_source.html          |   12 +-
 docs/api/doxygen/ir_2expr_8h_source.html           |   86 +-
 docs/api/doxygen/ir_2module_8h_source.html         |    4 +-
 docs/api/doxygen/ir_2op_8h_source.html             |    6 +-
 docs/api/doxygen/ir_2type_8h_source.html           |    4 +-
 docs/api/doxygen/iter__affine__map_8h_source.html  |    4 +-
 .../doxygen/local__response__norm_8h_source.html   |   12 +-
 docs/api/doxygen/mapping_8h_source.html            |    2 +-
 docs/api/doxygen/namespacemembers.html             |   23 +-
 docs/api/doxygen/namespacemembers_b.html           |   18 +-
 docs/api/doxygen/namespacemembers_c.html           |   14 +-
 docs/api/doxygen/namespacemembers_d.html           |    4 +-
 docs/api/doxygen/namespacemembers_e.html           |   13 +-
 docs/api/doxygen/namespacemembers_f.html           |   10 +-
 docs/api/doxygen/namespacemembers_func.html        |   23 +-
 docs/api/doxygen/namespacemembers_func_b.html      |   24 +-
 docs/api/doxygen/namespacemembers_func_c.html      |   14 +-
 docs/api/doxygen/namespacemembers_func_d.html      |    4 +-
 docs/api/doxygen/namespacemembers_func_e.html      |   15 +-
 docs/api/doxygen/namespacemembers_func_f.html      |    8 +-
 docs/api/doxygen/namespacemembers_func_g.html      |    6 +-
 docs/api/doxygen/namespacemembers_func_h.html      |    2 +-
 docs/api/doxygen/namespacemembers_func_i.html      |   14 +-
 docs/api/doxygen/namespacemembers_func_l.html      |   32 +-
 docs/api/doxygen/namespacemembers_func_m.html      |   25 +-
 docs/api/doxygen/namespacemembers_func_n.html      |   10 +-
 docs/api/doxygen/namespacemembers_func_p.html      |    8 +-
 docs/api/doxygen/namespacemembers_func_q.html      |    2 +-
 docs/api/doxygen/namespacemembers_func_r.html      |    9 +-
 docs/api/doxygen/namespacemembers_func_s.html      |   15 +-
 docs/api/doxygen/namespacemembers_func_t.html      |   10 +-
 docs/api/doxygen/namespacemembers_g.html           |    6 +-
 docs/api/doxygen/namespacemembers_h.html           |    2 +-
 docs/api/doxygen/namespacemembers_i.html           |   14 +-
 docs/api/doxygen/namespacemembers_l.html           |   32 +-
 docs/api/doxygen/namespacemembers_m.html           |   25 +-
 docs/api/doxygen/namespacemembers_n.html           |   10 +-
 docs/api/doxygen/namespacemembers_p.html           |    8 +-
 docs/api/doxygen/namespacemembers_q.html           |    2 +-
 docs/api/doxygen/namespacemembers_r.html           |    9 +-
 docs/api/doxygen/namespacemembers_s.html           |   15 +-
 docs/api/doxygen/namespacemembers_t.html           |   10 +-
 docs/api/doxygen/namespacemembers_type.html        |    2 +-
 docs/api/doxygen/namespacetvm.html                 | 7420 +++++++++++++++-----
 docs/api/doxygen/namespacetvm_1_1tir.html          |  122 +-
 docs/api/doxygen/namespacetvm_1_1topi.html         |   93 +-
 docs/api/doxygen/ndarray_8h_source.html            |    4 +-
 docs/api/doxygen/nn_2bnn_8h_source.html            |   14 +-
 docs/api/doxygen/nn_2dense_8h_source.html          |   10 +-
 docs/api/doxygen/nn_2pooling_8h_source.html        |   36 +-
 docs/api/doxygen/nn_2softmax_8h_source.html        |   18 +-
 docs/api/doxygen/node_2container_8h_source.html    |    8 +-
 docs/api/doxygen/object_8h_source.html             |    6 +-
 docs/api/doxygen/operation_8h_source.html          |    6 +-
 docs/api/doxygen/packed__func_8h.html              |    4 +-
 docs/api/doxygen/packed__func_8h_source.html       |  139 +-
 docs/api/doxygen/pad__utils_8h_source.html         |    4 +-
 docs/api/doxygen/ravel__unravel_8h_source.html     |    6 +-
 docs/api/doxygen/reduction_8h.html                 |   30 +-
 docs/api/doxygen/reduction_8h_source.html          |   70 +-
 docs/api/doxygen/reflection_8h_source.html         |    4 +-
 docs/api/doxygen/relay_2adt_8h_source.html         |    4 +-
 .../doxygen/relay_2attrs_2transform_8h_source.html |    2 +-
 docs/api/doxygen/relay_2expr_8h_source.html        |    4 +-
 docs/api/doxygen/relay_2feature_8h_source.html     |    2 +-
 docs/api/doxygen/relay_2function_8h_source.html    |    4 +-
 docs/api/doxygen/relay_2type_8h_source.html        |    4 +-
 docs/api/doxygen/reorg_8h_source.html              |    8 +-
 docs/api/doxygen/rocblas_8h_source.html            |    2 +-
 docs/api/doxygen/rocm_2dense_8h_source.html        |    2 +-
 docs/api/doxygen/runtime_2container_8h_source.html |    4 +-
 docs/api/doxygen/runtime_2module_8h_source.html    |    2 +-
 docs/api/doxygen/schedule_8h_source.html           |    6 +-
 docs/api/doxygen/search/all_1.js                   |   22 +-
 docs/api/doxygen/search/all_10.js                  |    8 +-
 docs/api/doxygen/search/all_11.js                  |    2 +-
 docs/api/doxygen/search/all_12.js                  |   12 +-
 docs/api/doxygen/search/all_13.js                  |   14 +-
 docs/api/doxygen/search/all_14.js                  |   33 +-
 docs/api/doxygen/search/all_16.js                  |    2 +-
 docs/api/doxygen/search/all_2.js                   |   21 +-
 docs/api/doxygen/search/all_3.js                   |   14 +-
 docs/api/doxygen/search/all_4.js                   |    4 +-
 docs/api/doxygen/search/all_5.js                   |   10 +-
 docs/api/doxygen/search/all_6.js                   |   12 +-
 docs/api/doxygen/search/all_7.js                   |    4 +-
 docs/api/doxygen/search/all_8.js                   |    4 +-
 docs/api/doxygen/search/all_9.js                   |   14 +-
 docs/api/doxygen/search/all_c.js                   |   24 +-
 docs/api/doxygen/search/all_d.js                   |   22 +-
 docs/api/doxygen/search/all_e.js                   |    7 +-
 docs/api/doxygen/search/defines_6.js               |    3 +
 docs/api/doxygen/search/functions_1.js             |   22 +-
 docs/api/doxygen/search/functions_10.js            |    8 +-
 docs/api/doxygen/search/functions_11.js            |    2 +-
 docs/api/doxygen/search/functions_12.js            |   12 +-
 docs/api/doxygen/search/functions_13.js            |   12 +-
 docs/api/doxygen/search/functions_14.js            |   10 +-
 docs/api/doxygen/search/functions_2.js             |    7 +-
 docs/api/doxygen/search/functions_3.js             |   14 +-
 docs/api/doxygen/search/functions_4.js             |    4 +-
 docs/api/doxygen/search/functions_5.js             |   10 +-
 docs/api/doxygen/search/functions_6.js             |   10 +-
 docs/api/doxygen/search/functions_7.js             |    4 +-
 docs/api/doxygen/search/functions_8.js             |    4 +-
 docs/api/doxygen/search/functions_9.js             |   14 +-
 docs/api/doxygen/search/functions_c.js             |   24 +-
 docs/api/doxygen/search/functions_d.js             |   20 +-
 docs/api/doxygen/search/functions_e.js             |    7 +-
 docs/api/doxygen/search/typedefs_5.js              |    2 +-
 docs/api/doxygen/search/variables_11.js            |    2 +-
 docs/api/doxygen/search/variables_c.js             |    2 +-
 docs/api/doxygen/search__task_8h_source.html       |    4 +-
 docs/api/doxygen/source__map_8h_source.html        |    4 +-
 docs/api/doxygen/span_8h_source.html               |    4 +-
 docs/api/doxygen/stmt_8h_source.html               |  338 +-
 docs/api/doxygen/stmt__functor_8h_source.html      |   30 +-
 ...l_1_1ImplSEqualReduce_3_01T_00_01true_01_4.html |    2 +-
 ...educe_3_01T_00_01TraitName_00_01false_01_4.html |    2 +-
 docs/api/doxygen/target__kind_8h_source.html       |    2 +-
 docs/api/doxygen/tensor_8h_source.html             |    4 +-
 docs/api/doxygen/tensor__type_8h_source.html       |    4 +-
 docs/api/doxygen/tensor__utils_8h_source.html      |    8 +-
 docs/api/doxygen/tir_2analysis_8h_source.html      |    4 +-
 docs/api/doxygen/tir_2expr_8h_source.html          |  346 +-
 docs/api/doxygen/tir_2expr__functor_8h_source.html |   64 +-
 docs/api/doxygen/tir_2function_8h_source.html      |    4 +-
 docs/api/doxygen/tir_2op_8h.html                   |  682 +-
 docs/api/doxygen/tir_2op_8h_source.html            |  214 +-
 .../doxygen/tir_2op__attr__types_8h_source.html    |    4 +-
 docs/api/doxygen/tir_2transform_8h_source.html     |    2 +-
 docs/api/doxygen/topi_2nn_8h_source.html           |   40 +-
 docs/api/doxygen/topi_2transform_8h_source.html    |   34 +-
 docs/api/doxygen/transform__step_8h_source.html    |    4 +-
 docs/api/doxygen/type__relation_8h_source.html     |    4 +-
 docs/api/doxygen/utils_8h_source.html              |    2 +-
 docs/api/doxygen/var_8h_source.html                |   72 +-
 docs/api/doxygen/vision_8h_source.html             |    2 +-
 docs/api/doxygen/x86_2bnn_8h_source.html           |    2 +-
 docs/api/python/auto_scheduler.html                |   14 +-
 docs/api/python/ir.html                            |   10 +-
 docs/api/python/runtime.html                       |   23 +-
 docs/api/python/te.html                            |  185 +-
 docs/api/python/tir.html                           |  201 +-
 docs/api/python/topi.html                          |    8 +-
 docs/api/rust/compiler_ext/fn.tvm_export.html      |    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            |   30 +-
 docs/api/typedoc/enums/aynccallbackcode.html       |    4 +-
 docs/api/typedoc/enums/dldatatypecode.html         |    8 +-
 docs/api/typedoc/enums/rpcserverstate.html         |   12 +-
 docs/api/typedoc/enums/sizeof.html                 |   18 +-
 docs/api/typedoc/index.html                        |  114 +-
 docs/api/typedoc/interfaces/disposable.html        |    2 +-
 docs/api/typedoc/interfaces/functioninfo.html      |    6 +-
 docs/api/typedoc/interfaces/libraryprovider.html   |    4 +-
 docs/searchindex.js                                |    2 +-
 .../auto_scheduler/sg_execution_times.html         |   10 +-
 .../auto_scheduler/tune_conv2d_layer_cuda.html     |    6 +-
 docs/tutorials/auto_scheduler/tune_matmul_x86.html |   84 +-
 .../auto_scheduler/tune_network_cuda.html          |   10 +-
 .../tutorials/auto_scheduler/tune_network_x86.html |   10 +-
 docs/tutorials/autotvm/sg_execution_times.html     |   12 +-
 docs/tutorials/autotvm/tune_conv2d_cuda.html       |   44 +-
 docs/tutorials/autotvm/tune_simple_template.html   |   20 +-
 docs/tutorials/dev/sg_execution_times.html         |    8 +-
 .../frontend/deploy_model_on_android.html          |    2 +-
 .../frontend/deploy_object_detection_pytorch.html  |    2 +-
 docs/tutorials/frontend/deploy_prequantized.html   |    2 +-
 .../frontend/deploy_prequantized_tflite.html       |    4 +-
 docs/tutorials/frontend/deploy_ssd_gluoncv.html    |    2 +-
 docs/tutorials/frontend/from_onnx.html             |    2 +-
 docs/tutorials/frontend/from_pytorch.html          |    6 +-
 docs/tutorials/frontend/from_tensorflow.html       |  724 +-
 docs/tutorials/frontend/sg_execution_times.html    |   40 +-
 .../get_started/cross_compilation_and_rpc.html     |    2 +-
 docs/tutorials/get_started/relay_quick_start.html  |  120 +-
 docs/tutorials/get_started/sg_execution_times.html |    8 +-
 docs/tutorials/language/reduction.html             |    4 +-
 docs/tutorials/language/schedule_primitives.html   |   14 +-
 docs/tutorials/language/sg_execution_times.html    |   16 +-
 docs/tutorials/language/tensorize.html             |    8 +-
 docs/tutorials/language/tuple_inputs.html          |   16 +-
 docs/tutorials/micro/sg_execution_times.html       |    6 +-
 docs/tutorials/optimize/opt_conv_cuda.html         |    2 +-
 docs/tutorials/optimize/opt_conv_tensorcore.html   |    2 +-
 docs/tutorials/optimize/opt_gemm.html              |   32 +-
 docs/tutorials/optimize/sg_execution_times.html    |   10 +-
 docs/tutorials/topi/intro_topi.html                |    2 +-
 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     |  186 +-
 .../tutorials/frontend/deploy_classification.html  |   18 +-
 .../vta/tutorials/frontend/sg_execution_times.html |    4 +-
 docs/vta/tutorials/matrix_multiply.html            |    4 +-
 docs/vta/tutorials/optimize/convolution_opt.html   |    8 +-
 .../tutorials/optimize/matrix_multiply_opt.html    |    8 +-
 .../vta/tutorials/optimize/sg_execution_times.html |    6 +-
 docs/vta/tutorials/sg_execution_times.html         |    6 +-
 docs/vta/tutorials/vta_get_started.html            |    4 +-
 416 files changed, 9814 insertions(+), 5520 deletions(-)

diff --git a/docs.tgz.1 b/docs.tgz.1
deleted file mode 100644
index 3df5e1b..0000000
Binary files a/docs.tgz.1 and /dev/null differ
diff --git a/docs/_downloads/2771a7fc8bf8eeb7788823ff349aacc0/tune_network_cuda.py b/docs/_downloads/2771a7fc8bf8eeb7788823ff349aacc0/tune_network_cuda.py
index 03be05a..3da9f3f 100644
--- a/docs/_downloads/2771a7fc8bf8eeb7788823ff349aacc0/tune_network_cuda.py
+++ b/docs/_downloads/2771a7fc8bf8eeb7788823ff349aacc0/tune_network_cuda.py
@@ -299,10 +299,14 @@ print("Mean inference time (std dev): %.2f ms (%.2f ms)" % (np.mean(prof_res), n
 # 1. During the tuning, the auto-scheduler needs to compile many programs and
 #    extract feature from them. This part is CPU-intensive,
 #    so a high-performance CPU with many cores is recommended for faster search.
-# 2. If you have multiple target GPUs, you can use all of them for measurements to
+# 2. You can use :code:`python3 -m tvm.auto_scheduler.measure_record --mode distill --i log.json`
+#    to distill the large log file and only save the best useful records.
+# 3. You can resume a search from the previous log file. You just need to
+#    add a new argument :code:`load_log_file` when creating the task scheduler
+#    in function :code:`run_tuning`. Say,
+#    :code:`tuner = auto_scheduler.TaskScheduler(tasks, task_weights, load_log_file=log_file)`
+# 4. If you have multiple target GPUs, you can use all of them for measurements to
 #    parallelize the measurements. Check this :ref:`section <tutorials-autotvm-rpc-tracker>`
 #    to learn how to use the RPC Tracker and RPC Server.
 #    To use the RPC Tracker in auto-scheduler, replace the runner in :code:`TuningOptions`
 #    with :any:`auto_scheduler.RPCRunner`.
-# 3. You can use :code:`python3 -m tvm.auto_scheduler.measure_record --mode distill --i log.json`
-#    to distill the large log file and only save the best useful records.
diff --git a/docs/_downloads/91b0339c8f3cc2594cee580dc450149a/tune_matmul_x86.py b/docs/_downloads/91b0339c8f3cc2594cee580dc450149a/tune_matmul_x86.py
index bdd14be..9bc15ae 100644
--- a/docs/_downloads/91b0339c8f3cc2594cee580dc450149a/tune_matmul_x86.py
+++ b/docs/_downloads/91b0339c8f3cc2594cee580dc450149a/tune_matmul_x86.py
@@ -118,7 +118,7 @@ sch, args = task.apply_best(log_file)
 ######################################################################
 # We can lower the schedule to see the IR after auto-scheduling.
 # The auto-scheduler correctly performs optimizations including multi-level tiling,
-# parallelization, vectorization, unrolling and operator fusion.
+# layout transformation, parallelization, vectorization, unrolling, and operator fusion.
 
 print("Lowered TIR:")
 print(tvm.lower(sch, args, simple_mode=True))
diff --git a/docs/_downloads/afa7f0ecb19178546f310a1dfa66281f/tune_network_x86.ipynb b/docs/_downloads/afa7f0ecb19178546f310a1dfa66281f/tune_network_x86.ipynb
index 2b2eb88..e03fb03 100644
--- a/docs/_downloads/afa7f0ecb19178546f310a1dfa66281f/tune_network_x86.ipynb
+++ b/docs/_downloads/afa7f0ecb19178546f310a1dfa66281f/tune_network_x86.ipynb
@@ -119,7 +119,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Other Tips\n----------\n1. During the tuning, the auto-scheduler needs to compile many programs and\n   extract feature from them. This part is CPU-intensive,\n   so a high-performance CPU with many cores is recommended for faster search.\n2. If you have multiple target CPUs, you can use all of them for measurements to\n   parallelize the measurements. Check this `section <tutorials-autotvm-rpc-tracker>`\n   to learn how to use the RPC Tracker and RPC Server.\n   To use the RPC  [...]
+        "Other Tips\n----------\n1. During the tuning, the auto-scheduler needs to compile many programs and\n   extract feature from them. This part is CPU-intensive,\n   so a high-performance CPU with many cores is recommended for faster search.\n2. You can use :code:`python3 -m tvm.auto_scheduler.measure_record --mode distill --i log.json`\n   to distill the large log file and only save the best useful records.\n3. You can resume a search from the previous log file. You just need to\n [...]
       ]
     }
   ],
diff --git a/docs/_downloads/b3eb5454a38ef6a663c9e4a7a3e61896/tune_network_x86.py b/docs/_downloads/b3eb5454a38ef6a663c9e4a7a3e61896/tune_network_x86.py
index aba75b2..a491759 100644
--- a/docs/_downloads/b3eb5454a38ef6a663c9e4a7a3e61896/tune_network_x86.py
+++ b/docs/_downloads/b3eb5454a38ef6a663c9e4a7a3e61896/tune_network_x86.py
@@ -298,10 +298,14 @@ print("Mean inference time (std dev): %.2f ms (%.2f ms)" % (np.mean(prof_res), n
 # 1. During the tuning, the auto-scheduler needs to compile many programs and
 #    extract feature from them. This part is CPU-intensive,
 #    so a high-performance CPU with many cores is recommended for faster search.
-# 2. If you have multiple target CPUs, you can use all of them for measurements to
+# 2. You can use :code:`python3 -m tvm.auto_scheduler.measure_record --mode distill --i log.json`
+#    to distill the large log file and only save the best useful records.
+# 3. You can resume a search from the previous log file. You just need to
+#    add a new argument :code:`load_log_file` when creating the task scheduler
+#    in function :code:`run_tuning`. Say,
+#    :code:`tuner = auto_scheduler.TaskScheduler(tasks, task_weights, load_log_file=log_file)`
+# 4. If you have multiple target CPUs, you can use all of them for measurements to
 #    parallelize the measurements. Check this :ref:`section <tutorials-autotvm-rpc-tracker>`
 #    to learn how to use the RPC Tracker and RPC Server.
 #    To use the RPC Tracker in auto-scheduler, replace the runner in :code:`TuningOptions`
 #    with :any:`auto_scheduler.RPCRunner`.
-# 3. You can use :code:`python3 -m tvm.auto_scheduler.measure_record --mode distill --i log.json`
-#    to distill the large log file and only save the best useful records.
diff --git a/docs/_downloads/dad91669fd0ea707f1374fe331b0dffe/tune_network_cuda.ipynb b/docs/_downloads/dad91669fd0ea707f1374fe331b0dffe/tune_network_cuda.ipynb
index d6c13d7..ab57869 100644
--- a/docs/_downloads/dad91669fd0ea707f1374fe331b0dffe/tune_network_cuda.ipynb
+++ b/docs/_downloads/dad91669fd0ea707f1374fe331b0dffe/tune_network_cuda.ipynb
@@ -119,7 +119,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Other Tips\n----------\n1. During the tuning, the auto-scheduler needs to compile many programs and\n   extract feature from them. This part is CPU-intensive,\n   so a high-performance CPU with many cores is recommended for faster search.\n2. If you have multiple target GPUs, you can use all of them for measurements to\n   parallelize the measurements. Check this `section <tutorials-autotvm-rpc-tracker>`\n   to learn how to use the RPC Tracker and RPC Server.\n   To use the RPC  [...]
+        "Other Tips\n----------\n1. During the tuning, the auto-scheduler needs to compile many programs and\n   extract feature from them. This part is CPU-intensive,\n   so a high-performance CPU with many cores is recommended for faster search.\n2. You can use :code:`python3 -m tvm.auto_scheduler.measure_record --mode distill --i log.json`\n   to distill the large log file and only save the best useful records.\n3. You can resume a search from the previous log file. You just need to\n [...]
       ]
     }
   ],
diff --git a/docs/_downloads/f1a09967bab66114252357e4a9babb45/tune_matmul_x86.ipynb b/docs/_downloads/f1a09967bab66114252357e4a9babb45/tune_matmul_x86.ipynb
index 0e1f354..2640a03 100644
--- a/docs/_downloads/f1a09967bab66114252357e4a9babb45/tune_matmul_x86.ipynb
+++ b/docs/_downloads/f1a09967bab66114252357e4a9babb45/tune_matmul_x86.ipynb
@@ -105,7 +105,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "We can lower the schedule to see the IR after auto-scheduling.\nThe auto-scheduler correctly performs optimizations including multi-level tiling,\nparallelization, vectorization, unrolling and operator fusion.\n\n"
+        "We can lower the schedule to see the IR after auto-scheduling.\nThe auto-scheduler correctly performs optimizations including multi-level tiling,\nlayout transformation, parallelization, vectorization, unrolling, and operator fusion.\n\n"
       ]
     },
     {
diff --git a/docs/_sources/tutorials/auto_scheduler/sg_execution_times.rst.txt b/docs/_sources/tutorials/auto_scheduler/sg_execution_times.rst.txt
index d22c77f..cb40e53 100644
--- a/docs/_sources/tutorials/auto_scheduler/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/sg_execution_times.rst.txt
@@ -5,9 +5,9 @@
 
 Computation times
 =================
-**04:14.484** total execution time for **tutorials_auto_scheduler** files:
+**04:05.271** total execution time for **tutorials_auto_scheduler** files:
 
-- **01:58.918**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_matmul_x86.py` (``tune_matmul_x86.py``)
-- **01:36.275**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``)
-- **00:23.556**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_network_cuda.py` (``tune_network_cuda.py``)
-- **00:15.735**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_network_x86.py` (``tune_network_x86.py``)
+- **01:50.410**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_matmul_x86.py` (``tune_matmul_x86.py``)
+- **01:34.433**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``)
+- **00:23.367**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_network_cuda.py` (``tune_network_cuda.py``)
+- **00:17.061**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_network_x86.py` (``tune_network_x86.py``)
diff --git a/docs/_sources/tutorials/auto_scheduler/tune_conv2d_layer_cuda.rst.txt b/docs/_sources/tutorials/auto_scheduler/tune_conv2d_layer_cuda.rst.txt
index fae8f8a..ea80d89 100644
--- a/docs/_sources/tutorials/auto_scheduler/tune_conv2d_layer_cuda.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/tune_conv2d_layer_cuda.rst.txt
@@ -216,8 +216,8 @@ cooperative fetching, unrolling and operator fusion.
     primfn(data_1: handle, kernel_1: handle, bias_1: handle, compute_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
       buffers = {compute: Buffer(compute_2: Pointer(float32), float32, [1, 512, 7, 7], []),
-                 kernel: Buffer(kernel_2: Pointer(float32), float32, [512, 512, 3, 3], []),
                  bias: Buffer(bias_2: Pointer(float32), float32, [1, 512, 1, 1], []),
+                 kernel: Buffer(kernel_2: Pointer(float32), float32, [512, 512, 3, 3], []),
                  data: Buffer(data_2: Pointer(float32), float32, [1, 512, 7, 7], [])}
       buffer_map = {data_1: data, kernel_1: kernel, bias_1: bias, compute_1: compute} {
       attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 28;
@@ -748,7 +748,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 0.416 ms
+    Execution time of this operator: 0.417 ms
 
 
 
@@ -1325,7 +1325,7 @@ In the example below we resume the status and do more 5 trials.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  36.275 seconds)
+   **Total running time of the script:** ( 1 minutes  34.433 seconds)
 
 
 .. _sphx_glr_download_tutorials_auto_scheduler_tune_conv2d_layer_cuda.py:
diff --git a/docs/_sources/tutorials/auto_scheduler/tune_matmul_x86.rst.txt b/docs/_sources/tutorials/auto_scheduler/tune_matmul_x86.rst.txt
index a18b70f..814fe56 100644
--- a/docs/_sources/tutorials/auto_scheduler/tune_matmul_x86.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/tune_matmul_x86.rst.txt
@@ -175,7 +175,7 @@ file and apply it.
 
 We can lower the schedule to see the IR after auto-scheduling.
 The auto-scheduler correctly performs optimizations including multi-level tiling,
-parallelization, vectorization, unrolling and operator fusion.
+layout transformation, parallelization, vectorization, unrolling, and operator fusion.
 
 
 .. code-block:: default
@@ -198,44 +198,38 @@ parallelization, vectorization, unrolling and operator fusion.
     primfn(A_1: handle, B_1: handle, C_1: handle, out_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
       buffers = {out: Buffer(out_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
                  C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
                  A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C, out_1: out} {
-      attr [auto_schedule_layout_transpose: Pointer(float32)] "storage_scope" = "global";
-      allocate(auto_schedule_layout_transpose, float32, [1048576]);
-      attr [matmul: Pointer(float32)] "storage_scope" = "global";
-      allocate(matmul, float32, [1048576]) {
-        for (ax0.ax1.fused.ax2.fused.ax3.fused.ax4.fused: int32, 0, 65536) "parallel" {
-          for (ax5: int32, 0, 16) {
-            auto_schedule_layout_transpose[((ax0.ax1.fused.ax2.fused.ax3.fused.ax4.fused*16) + ax5)] = (float32*)B_2[(((((floordiv(floormod(ax0.ax1.fused.ax2.fused.ax3.fused.ax4.fused, 4096), 32)*8192) + (floormod(ax0.ax1.fused.ax2.fused.ax3.fused.ax4.fused, 8)*1024)) + (floordiv(ax0.ax1.fused.ax2.fused.ax3.fused.ax4.fused, 4096)*64)) + (floordiv(floormod(ax0.ax1.fused.ax2.fused.ax3.fused.ax4.fused, 32), 8)*16)) + ax5)]
+      attr [auto_scheduler_layout_transform: Pointer(float32)] "storage_scope" = "global";
+      allocate(auto_scheduler_layout_transform, float32, [1048576]) {
+        for (ax0.ax1.fused.ax2.fused.ax3.fused.ax4.fused.ax5.fused.ax6.fused: int32, 0, 131072) "parallel" {
+          for (ax7: int32, 0, 8) {
+            auto_scheduler_layout_transform[((ax0.ax1.fused.ax2.fused.ax3.fused.ax4.fused.ax5.fused.ax6.fused*8) + ax7)] = (float32*)B_2[(((floormod(ax0.ax1.fused.ax2.fused.ax3.fused.ax4.fused.ax5.fused.ax6.fused, 1024)*1024) + (floordiv(ax0.ax1.fused.ax2.fused.ax3.fused.ax4.fused.ax5.fused.ax6.fused, 1024)*8)) + ax7)]
           }
         }
-        for (i.outer.outer.outer.j.outer.outer.outer.fused.i.outer.outer.inner.fused.j.outer.outer.inner.fused: int32, 0, 256) "parallel" {
-          for (i.outer.inner.init: int32, 0, 4) {
-            for (j.outer.inner.init: int32, 0, 4) {
-              for (i.inner.init: int32, 0, 16) {
-                matmul[ramp((((((floordiv(i.outer.outer.outer.j.outer.outer.outer.fused.i.outer.outer.inner.fused.j.outer.outer.inner.fused, 16)*65536) + (i.outer.inner.init*16384)) + (i.inner.init*1024)) + (floormod(i.outer.outer.outer.j.outer.outer.outer.fused.i.outer.outer.inner.fused.j.outer.outer.inner.fused, 16)*64)) + (j.outer.inner.init*16)), 1, 16)] = broadcast(0f32, 16)
+        for (i.outer.outer.j.outer.outer.fused: int32, 0, 16384) "parallel" {
+          attr [matmul: Pointer(float32)] "storage_scope" = "global";
+          allocate(matmul, float32x8, [4]);
+          for (i.outer.inner: int32, 0, 2) {
+            matmul[ramp(0, 1, 8)] = broadcast(0f32, 8)
+            matmul[ramp(8, 1, 8)] = broadcast(0f32, 8)
+            matmul[ramp(16, 1, 8)] = broadcast(0f32, 8)
+            matmul[ramp(24, 1, 8)] = broadcast(0f32, 8)
+            for (k.outer: int32, 0, 256) {
+              for (k.inner: int32, 0, 4) {
+                matmul[ramp(0, 1, 8)] = ((float32x8*)matmul[ramp(0, 1, 8)] + (broadcast((float32*)A_2[((((floordiv(i.outer.outer.j.outer.outer.fused, 128)*8192) + (i.outer.inner*4096)) + (k.outer*4)) + k.inner)], 8)*(float32x8*)auto_scheduler_layout_transform[ramp((((floormod(i.outer.outer.j.outer.outer.fused, 128)*8192) + (k.outer*32)) + (k.inner*8)), 1, 8)]))
+                matmul[ramp(8, 1, 8)] = ((float32x8*)matmul[ramp(8, 1, 8)] + (broadcast((float32*)A_2[(((((floordiv(i.outer.outer.j.outer.outer.fused, 128)*8192) + (i.outer.inner*4096)) + (k.outer*4)) + k.inner) + 1024)], 8)*(float32x8*)auto_scheduler_layout_transform[ramp((((floormod(i.outer.outer.j.outer.outer.fused, 128)*8192) + (k.outer*32)) + (k.inner*8)), 1, 8)]))
+                matmul[ramp(16, 1, 8)] = ((float32x8*)matmul[ramp(16, 1, 8)] + (broadcast((float32*)A_2[(((((floordiv(i.outer.outer.j.outer.outer.fused, 128)*8192) + (i.outer.inner*4096)) + (k.outer*4)) + k.inner) + 2048)], 8)*(float32x8*)auto_scheduler_layout_transform[ramp((((floormod(i.outer.outer.j.outer.outer.fused, 128)*8192) + (k.outer*32)) + (k.inner*8)), 1, 8)]))
+                matmul[ramp(24, 1, 8)] = ((float32x8*)matmul[ramp(24, 1, 8)] + (broadcast((float32*)A_2[(((((floordiv(i.outer.outer.j.outer.outer.fused, 128)*8192) + (i.outer.inner*4096)) + (k.outer*4)) + k.inner) + 3072)], 8)*(float32x8*)auto_scheduler_layout_transform[ramp((((floormod(i.outer.outer.j.outer.outer.fused, 128)*8192) + (k.outer*32)) + (k.inner*8)), 1, 8)]))
               }
             }
-          }
-          for (k.outer: int32, 0, 128) {
-            for (i.outer.inner: int32, 0, 4) {
-              for (j.outer.inner: int32, 0, 4) {
-                for (k.inner: int32, 0, 8) {
-                  for (i.inner: int32, 0, 16) {
-                    matmul[ramp((((((floordiv(i.outer.outer.outer.j.outer.outer.outer.fused.i.outer.outer.inner.fused.j.outer.outer.inner.fused, 16)*65536) + (i.outer.inner*16384)) + (i.inner*1024)) + (floormod(i.outer.outer.outer.j.outer.outer.outer.fused.i.outer.outer.inner.fused.j.outer.outer.inner.fused, 16)*64)) + (j.outer.inner*16)), 1, 16)] = ((float32x16*)matmul[ramp((((((floordiv(i.outer.outer.outer.j.outer.outer.outer.fused.i.outer.outer.inner.fused.j.outer.outer.inner.fused, 1 [...]
-                  }
-                }
-              }
+            for (i.inner: int32, 0, 4) {
+              out_2[ramp(((((floordiv(i.outer.outer.j.outer.outer.fused, 128)*8192) + (i.outer.inner*4096)) + (i.inner*1024)) + (floormod(i.outer.outer.j.outer.outer.fused, 128)*8)), 1, 8)] = ((float32x8*)matmul[ramp((i.inner*8), 1, 8)] + (float32x8*)C_2[ramp(((((floordiv(i.outer.outer.j.outer.outer.fused, 128)*8192) + (i.outer.inner*4096)) + (i.inner*1024)) + (floormod(i.outer.outer.j.outer.outer.fused, 128)*8)), 1, 8)])
             }
           }
         }
-        for (i: int32, 0, 1024) "parallel" {
-          for (j: int32, 0, 1024) {
-            out_2[((i*1024) + j)] = ((float32*)matmul[((i*1024) + j)] + (float32*)C_2[((i*1024) + j)])
-          }
-        }
       }
     }
 
@@ -285,7 +279,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 115.616 ms
+    Execution time of this operator: 22.426 ms
 
 
 
@@ -319,20 +313,26 @@ debugging and learning the behavior of the auto-scheduler.
     Equivalent python schedule:
     matmul_i, matmul_j, matmul_k = tuple(matmul.op.axis) + tuple(matmul.op.reduce_axis)
     out_i, out_j = tuple(out.op.axis) + tuple(out.op.reduce_axis)
-    matmul_i_o_i, matmul_i_i = s[matmul].split(matmul_i, factor=16)
-    matmul_i_o_o_i, matmul_i_o_i = s[matmul].split(matmul_i_o_i, factor=4)
+    matmul_i_o_i, matmul_i_i = s[matmul].split(matmul_i, factor=4)
+    matmul_i_o_o_i, matmul_i_o_i = s[matmul].split(matmul_i_o_i, factor=1)
     matmul_i_o_o_o, matmul_i_o_o_i = s[matmul].split(matmul_i_o_o_i, factor=2)
-    matmul_j_o_i, matmul_j_i = s[matmul].split(matmul_j, factor=16)
-    matmul_j_o_o_i, matmul_j_o_i = s[matmul].split(matmul_j_o_i, factor=4)
-    matmul_j_o_o_o, matmul_j_o_o_i = s[matmul].split(matmul_j_o_o_i, factor=16)
-    matmul_k_o, matmul_k_i = s[matmul].split(matmul_k, factor=8)
+    matmul_j_o_i, matmul_j_i = s[matmul].split(matmul_j, factor=8)
+    matmul_j_o_o_i, matmul_j_o_i = s[matmul].split(matmul_j_o_i, factor=1)
+    matmul_j_o_o_o, matmul_j_o_o_i = s[matmul].split(matmul_j_o_o_i, factor=1)
+    matmul_k_o, matmul_k_i = s[matmul].split(matmul_k, factor=4)
     s[matmul].reorder(matmul_i_o_o_o, matmul_j_o_o_o, matmul_i_o_o_i, matmul_j_o_o_i, matmul_k_o, matmul_i_o_i, matmul_j_o_i, matmul_k_i, matmul_i_i, matmul_j_i)
-    matmul_i_o_o_o_j_o_o_o_fused_i_o_o_i_fused_j_o_o_i_fused = s[matmul].fuse(matmul_i_o_o_o, matmul_j_o_o_o, matmul_i_o_o_i, matmul_j_o_o_i)
-    s[matmul].parallel(matmul_i_o_o_o_j_o_o_o_fused_i_o_o_i_fused_j_o_o_i_fused)
-    s[out].parallel(out_i)
-    s[matmul].pragma(matmul_i_o_o_o_j_o_o_o_fused_i_o_o_i_fused_j_o_o_i_fused, "auto_unroll_max_step", 0)
-    s[matmul].pragma(matmul_i_o_o_o_j_o_o_o_fused_i_o_o_i_fused_j_o_o_i_fused, "unroll_explicit", True)
+    out_i_o_i, out_i_i = s[out].split(out_i, factor=4)
+    out_i_o_o, out_i_o_i = s[out].split(out_i_o_i, factor=2)
+    out_j_o_i, out_j_i = s[out].split(out_j, factor=8)
+    out_j_o_o, out_j_o_i = s[out].split(out_j_o_i, factor=1)
+    s[out].reorder(out_i_o_o, out_j_o_o, out_i_o_i, out_j_o_i, out_i_i, out_j_i)
+    s[matmul].compute_at(s[out], out_j_o_i)
+    out_i_o_o_j_o_o_fused = s[out].fuse(out_i_o_o, out_j_o_o)
+    s[out].parallel(out_i_o_o_j_o_o_fused)
+    s[matmul].pragma(matmul_i_o_o_o, "auto_unroll_max_step", 8)
+    s[matmul].pragma(matmul_i_o_o_o, "unroll_explicit", True)
     s[matmul].vectorize(matmul_j_i)
+    s[out].vectorize(out_j_i)
 
 
 
@@ -389,7 +389,7 @@ In the example below we resume the status and do more 5 trials.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  58.918 seconds)
+   **Total running time of the script:** ( 1 minutes  50.410 seconds)
 
 
 .. _sphx_glr_download_tutorials_auto_scheduler_tune_matmul_x86.py:
diff --git a/docs/_sources/tutorials/auto_scheduler/tune_network_cuda.rst.txt b/docs/_sources/tutorials/auto_scheduler/tune_network_cuda.rst.txt
index c73b312..2110410 100644
--- a/docs/_sources/tutorials/auto_scheduler/tune_network_cuda.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/tune_network_cuda.rst.txt
@@ -614,7 +614,7 @@ so we can read the log file and load the best schedules.
 
     Compile...
     Evaluate inference time cost...
-    Mean inference time (std dev): 3.29 ms (0.01 ms)
+    Mean inference time (std dev): 3.28 ms (0.01 ms)
 
 
 
@@ -623,13 +623,17 @@ Other Tips
 1. During the tuning, the auto-scheduler needs to compile many programs and
    extract feature from them. This part is CPU-intensive,
    so a high-performance CPU with many cores is recommended for faster search.
-2. If you have multiple target GPUs, you can use all of them for measurements to
+2. You can use :code:`python3 -m tvm.auto_scheduler.measure_record --mode distill --i log.json`
+   to distill the large log file and only save the best useful records.
+3. You can resume a search from the previous log file. You just need to
+   add a new argument :code:`load_log_file` when creating the task scheduler
+   in function :code:`run_tuning`. Say,
+   :code:`tuner = auto_scheduler.TaskScheduler(tasks, task_weights, load_log_file=log_file)`
+4. If you have multiple target GPUs, you can use all of them for measurements to
    parallelize the measurements. Check this :ref:`section <tutorials-autotvm-rpc-tracker>`
    to learn how to use the RPC Tracker and RPC Server.
    To use the RPC Tracker in auto-scheduler, replace the runner in :code:`TuningOptions`
    with :any:`auto_scheduler.RPCRunner`.
-3. You can use :code:`python3 -m tvm.auto_scheduler.measure_record --mode distill --i log.json`
-   to distill the large log file and only save the best useful records.
 
 
 .. _sphx_glr_download_tutorials_auto_scheduler_tune_network_cuda.py:
diff --git a/docs/_sources/tutorials/auto_scheduler/tune_network_x86.rst.txt b/docs/_sources/tutorials/auto_scheduler/tune_network_x86.rst.txt
index b4cad4e..9965acf 100644
--- a/docs/_sources/tutorials/auto_scheduler/tune_network_x86.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/tune_network_x86.rst.txt
@@ -587,7 +587,7 @@ so we can read the log file and load the best schedules.
 
     Compile...
     Evaluate inference time cost...
-    Mean inference time (std dev): 33.05 ms (0.07 ms)
+    Mean inference time (std dev): 30.72 ms (0.09 ms)
 
 
 
@@ -596,13 +596,17 @@ Other Tips
 1. During the tuning, the auto-scheduler needs to compile many programs and
    extract feature from them. This part is CPU-intensive,
    so a high-performance CPU with many cores is recommended for faster search.
-2. If you have multiple target CPUs, you can use all of them for measurements to
+2. You can use :code:`python3 -m tvm.auto_scheduler.measure_record --mode distill --i log.json`
+   to distill the large log file and only save the best useful records.
+3. You can resume a search from the previous log file. You just need to
+   add a new argument :code:`load_log_file` when creating the task scheduler
+   in function :code:`run_tuning`. Say,
+   :code:`tuner = auto_scheduler.TaskScheduler(tasks, task_weights, load_log_file=log_file)`
+4. If you have multiple target CPUs, you can use all of them for measurements to
    parallelize the measurements. Check this :ref:`section <tutorials-autotvm-rpc-tracker>`
    to learn how to use the RPC Tracker and RPC Server.
    To use the RPC Tracker in auto-scheduler, replace the runner in :code:`TuningOptions`
    with :any:`auto_scheduler.RPCRunner`.
-3. You can use :code:`python3 -m tvm.auto_scheduler.measure_record --mode distill --i log.json`
-   to distill the large log file and only save the best useful records.
 
 
 .. _sphx_glr_download_tutorials_auto_scheduler_tune_network_x86.py:
diff --git a/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt b/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt
index 12d5a8c..e02f798 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:59.289** total execution time for **tutorials_autotvm** files:
+**00:59.256** total execution time for **tutorials_autotvm** files:
 
-- **00:30.031**: :ref:`sphx_glr_tutorials_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)
-- **00:28.562**: :ref:`sphx_glr_tutorials_autotvm_tune_simple_template.py` (``tune_simple_template.py``)
+- **00:30.101**: :ref:`sphx_glr_tutorials_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)
+- **00:28.464**: :ref:`sphx_glr_tutorials_autotvm_tune_simple_template.py` (``tune_simple_template.py``)
 - **00:00.203**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)
-- **00:00.172**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)
-- **00:00.161**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_mobile_gpu.py` (``tune_relay_mobile_gpu.py``)
-- **00:00.160**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)
+- **00:00.173**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)
+- **00:00.158**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)
+- **00:00.157**: :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 b3f5f02..a2ea4e0 100644
--- a/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt
+++ b/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt
@@ -241,26 +241,26 @@ for this template
        7 unroll_explicit: OtherOption([0, 1]) len=2
     )
     Get devices for measurement successfully!
-    No: 1   GFLOPS: 355.82/355.82   result: MeasureResult(costs=(0.0006506215949367088,), error_no=0, all_cost=1.5325016975402832, timestamp=1607099807.570982)     [('tile_f', [-1, 2, 64, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 2, 2]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4881186
-    No: 2   GFLOPS: 0.00/355.82     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc653f5aae1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6e7b97) [0x7fc653365b97]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc65336251d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 3   GFLOPS: 179.24/355.82   result: MeasureResult(costs=(0.0012915827258064515,), error_no=0, all_cost=1.6103031635284424, timestamp=1607099809.0071898)    [('tile_f', [-1, 4, 32, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 1, 16]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,3605182
-    No: 4   GFLOPS: 0.00/355.82     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc653f5aae1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6e7b97) [0x7fc653365b97]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc65336251d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 5   GFLOPS: 0.00/355.82     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc653f5aae1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6e7b97) [0x7fc653365b97]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc65336251d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 6   GFLOPS: 0.00/355.82     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc653f5aae1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6e7b97) [0x7fc653365b97]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc65336251d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 7   GFLOPS: 0.00/355.82     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc653f5aae1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6e7b97) [0x7fc653365b97]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc65336251d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 8   GFLOPS: 1.75/355.82     result: MeasureResult(costs=(0.13202367275,), error_no=0, all_cost=3.3075530529022217, timestamp=1607099812.3451154)    [('tile_f', [-1, 2, 4, 64]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 2, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,2716108
-    No: 9   GFLOPS: 15.09/355.82    result: MeasureResult(costs=(0.015336644222222223,), error_no=0, all_cost=1.779998540878296, timestamp=1607099815.354749)       [('tile_f', [-1, 1, 4, 2]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 2, 8]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,1263092
-    No: 10  GFLOPS: 228.36/355.82   result: MeasureResult(costs=(0.0010137524646464647,), error_no=0, all_cost=1.4278664588928223, timestamp=1607099816.2404447)    [('tile_f', [-1, 1, 32, 4]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 16, 1]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,8921130
-    No: 11  GFLOPS: 0.00/355.82     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc653f5aae1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6e7b97) [0x7fc653365b97]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc65336251d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 12  GFLOPS: 120.00/355.82   result: MeasureResult(costs=(0.0019292467692307693,), error_no=0, all_cost=1.320230484008789, timestamp=1607099817.3805447)     [('tile_f', [-1, 2, 32, 4]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 1, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,5036371
-    No: 13  GFLOPS: 0.00/355.82     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc653f5aae1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6e7b97) [0x7fc653365b97]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc65336251d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 14  GFLOPS: 0.00/355.82     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc653f5aae1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6e7b97) [0x7fc653365b97]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc65336251d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 15  GFLOPS: 82.08/355.82    result: MeasureResult(costs=(0.0028204788157894737,), error_no=0, all_cost=1.4719583988189697, timestamp=1607099818.8043692)    [('tile_f', [-1, 1, 1, 4]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 1, 8]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,3582580
-    No: 16  GFLOPS: 0.00/355.82     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc653f5aae1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6e7b97) [0x7fc653365b97]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc65336251d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 17  GFLOPS: 0.00/355.82     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc653f5aae1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6e7b97) [0x7fc653365b97]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc65336251d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 18  GFLOPS: 0.00/355.82     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc653f5aae1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6e7b97) [0x7fc653365b97]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc65336251d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 19  GFLOPS: 8.98/355.82     result: MeasureResult(costs=(0.025774776,), error_no=0, all_cost=1.498640537261963, timestamp=1607099821.93356) [('tile_f', [-1, 8, 64, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 2, 2]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4107668
-    No: 20  GFLOPS: 0.00/355.82     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc653f5aae1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6e7b97) [0x7fc653365b97]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc65336251d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 1   GFLOPS: 202.22/202.22   result: MeasureResult(costs=(0.0011447773775510204,), error_no=0, all_cost=1.6461100578308105, timestamp=1607225801.8082893)    [('tile_f', [-1, 2, 64, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 2, 2]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4881186
+    No: 2   GFLOPS: 0.00/202.22     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc35dba3f31]\n  [bt] (3) /workspace/build/libtvm.so(+0x6b1c67) [0x7fc35cf6ac67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc35cf6768d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 3   GFLOPS: 180.05/202.22   result: MeasureResult(costs=(0.0012857949919354839,), error_no=0, all_cost=1.6061229705810547, timestamp=1607225803.2143183)    [('tile_f', [-1, 4, 32, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 1, 16]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,3605182
+    No: 4   GFLOPS: 0.00/202.22     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc35dba3f31]\n  [bt] (3) /workspace/build/libtvm.so(+0x6b1c67) [0x7fc35cf6ac67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc35cf6768d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 5   GFLOPS: 0.00/202.22     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc35dba3f31]\n  [bt] (3) /workspace/build/libtvm.so(+0x6b1c67) [0x7fc35cf6ac67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc35cf6768d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 6   GFLOPS: 0.00/202.22     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc35dba3f31]\n  [bt] (3) /workspace/build/libtvm.so(+0x6b1c67) [0x7fc35cf6ac67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc35cf6768d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 7   GFLOPS: 0.00/202.22     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc35dba3f31]\n  [bt] (3) /workspace/build/libtvm.so(+0x6b1c67) [0x7fc35cf6ac67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc35cf6768d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 8   GFLOPS: 1.76/202.22     result: MeasureResult(costs=(0.13166369325,), error_no=0, all_cost=3.334230899810791, timestamp=1607225806.5215275)     [('tile_f', [-1, 2, 4, 64]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 2, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,2716108
+    No: 9   GFLOPS: 15.17/202.22    result: MeasureResult(costs=(0.015256713555555555,), error_no=0, all_cost=1.7692039012908936, timestamp=1607225809.5385563)     [('tile_f', [-1, 1, 4, 2]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 2, 8]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,1263092
+    No: 10  GFLOPS: 228.21/228.21   result: MeasureResult(costs=(0.001014435909090909,), error_no=0, all_cost=1.5810611248016357, timestamp=1607225810.5847104)     [('tile_f', [-1, 1, 32, 4]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 16, 1]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,8921130
+    No: 11  GFLOPS: 0.00/228.21     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc35dba3f31]\n  [bt] (3) /workspace/build/libtvm.so(+0x6b1c67) [0x7fc35cf6ac67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc35cf6768d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 12  GFLOPS: 120.55/228.21   result: MeasureResult(costs=(0.0019204238301886794,), error_no=0, all_cost=1.3215758800506592, timestamp=1607225811.7186823)    [('tile_f', [-1, 2, 32, 4]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 1, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,5036371
+    No: 13  GFLOPS: 0.00/228.21     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc35dba3f31]\n  [bt] (3) /workspace/build/libtvm.so(+0x6b1c67) [0x7fc35cf6ac67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc35cf6768d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 14  GFLOPS: 0.00/228.21     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc35dba3f31]\n  [bt] (3) /workspace/build/libtvm.so(+0x6b1c67) [0x7fc35cf6ac67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc35cf6768d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 15  GFLOPS: 82.94/228.21    result: MeasureResult(costs=(0.0027913426315789476,), error_no=0, all_cost=1.4726567268371582, timestamp=1607225813.1304166)    [('tile_f', [-1, 1, 1, 4]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 1, 8]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,3582580
+    No: 16  GFLOPS: 0.00/228.21     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc35dba3f31]\n  [bt] (3) /workspace/build/libtvm.so(+0x6b1c67) [0x7fc35cf6ac67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc35cf6768d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 17  GFLOPS: 0.00/228.21     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc35dba3f31]\n  [bt] (3) /workspace/build/libtvm.so(+0x6b1c67) [0x7fc35cf6ac67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc35cf6768d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 18  GFLOPS: 0.00/228.21     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc35dba3f31]\n  [bt] (3) /workspace/build/libtvm.so(+0x6b1c67) [0x7fc35cf6ac67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc35cf6768d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 19  GFLOPS: 17.48/228.21    result: MeasureResult(costs=(0.013246279555555554,), error_no=0, all_cost=1.6513993740081787, timestamp=1607225816.3279276)     [('tile_f', [-1, 8, 64, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 2, 2]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4107668
+    No: 20  GFLOPS: 0.00/228.21     result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7fc35dba3f31]\n  [bt] (3) /workspace/build/libtvm.so(+0x6b1c67) [0x7fc35cf6ac67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3ed) [0x7fc35cf6768d]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
 
 
 
@@ -312,8 +312,8 @@ and measure running time.
 
 
     Best config:
-    [('tile_f', [-1, 2, 64, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 2, 2]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4881186
-    Time cost of this operator: 0.001027
+    [('tile_f', [-1, 1, 32, 4]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 16, 1]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,8921130
+    Time cost of this operator: 0.001354
 
 
 
diff --git a/docs/_sources/tutorials/autotvm/tune_simple_template.rst.txt b/docs/_sources/tutorials/autotvm/tune_simple_template.rst.txt
index 4c8cbd5..5294a0a 100644
--- a/docs/_sources/tutorials/autotvm/tune_simple_template.rst.txt
+++ b/docs/_sources/tutorials/autotvm/tune_simple_template.rst.txt
@@ -369,16 +369,16 @@ used to get the best config later.
  .. code-block:: none
 
     Get devices for measurement successfully!
-    No: 1   GFLOPS: 0.52/0.52       result: MeasureResult(costs=(0.517996,), error_no=0, all_cost=8.670245885848999, timestamp=1607099784.618586)   [('tile_y', [-1, 64]), ('tile_x', [-1, 1])],None,6
-    No: 2   GFLOPS: 2.07/2.07       result: MeasureResult(costs=(0.1294099436,), error_no=0, all_cost=2.4478724002838135, timestamp=1607099787.1742113)     [('tile_y', [-1, 512]), ('tile_x', [-1, 8])],None,39
-    No: 3   GFLOPS: 2.58/2.58       result: MeasureResult(costs=(0.1038832354,), error_no=0, all_cost=2.095904588699341, timestamp=1607099789.316399)       [('tile_y', [-1, 2]), ('tile_x', [-1, 8])],None,31
-    No: 4   GFLOPS: 7.19/7.19       result: MeasureResult(costs=(0.037318296200000003,), error_no=0, all_cost=1.035353422164917, timestamp=1607099790.391151)       [('tile_y', [-1, 1]), ('tile_x', [-1, 32])],None,50
-    No: 5   GFLOPS: 13.47/13.47     result: MeasureResult(costs=(0.0199226998,), error_no=0, all_cost=0.8094985485076904, timestamp=1607099791.188954)      [('tile_y', [-1, 256]), ('tile_x', [-1, 64])],None,68
-    No: 6   GFLOPS: 12.07/13.47     result: MeasureResult(costs=(0.022235522599999998,), error_no=0, all_cost=0.7545876502990723, timestamp=1607099792.0274673)     [('tile_y', [-1, 256]), ('tile_x', [-1, 512])],None,98
-    No: 7   GFLOPS: 0.92/13.47      result: MeasureResult(costs=(0.2913826102,), error_no=0, all_cost=5.0809924602508545, timestamp=1607099797.1691034)     [('tile_y', [-1, 128]), ('tile_x', [-1, 2])],None,17
-    No: 8   GFLOPS: 2.47/13.47      result: MeasureResult(costs=(0.10848501079999999,), error_no=0, all_cost=2.1404190063476562, timestamp=1607099799.3825517)      [('tile_y', [-1, 8]), ('tile_x', [-1, 4])],None,23
-    No: 9   GFLOPS: 11.44/13.47     result: MeasureResult(costs=(0.023456517399999998,), error_no=0, all_cost=0.7327640056610107, timestamp=1607099800.9339461)     [('tile_y', [-1, 256]), ('tile_x', [-1, 32])],None,58
-    No: 10  GFLOPS: 13.56/13.56     result: MeasureResult(costs=(0.0198019198,), error_no=0, all_cost=0.7811250686645508, timestamp=1607099801.7365162)     [('tile_y', [-1, 64]), ('tile_x', [-1, 128])],None,76
+    No: 1   GFLOPS: 0.52/0.52       result: MeasureResult(costs=(0.5179643672,), error_no=0, all_cost=8.699557542800903, timestamp=1607225778.9184623)      [('tile_y', [-1, 64]), ('tile_x', [-1, 1])],None,6
+    No: 2   GFLOPS: 2.05/2.05       result: MeasureResult(costs=(0.1307110214,), error_no=0, all_cost=2.452157735824585, timestamp=1607225781.4836178)      [('tile_y', [-1, 512]), ('tile_x', [-1, 8])],None,39
+    No: 3   GFLOPS: 2.77/2.77       result: MeasureResult(costs=(0.0968108324,), error_no=0, all_cost=2.015434741973877, timestamp=1607225783.5040994)      [('tile_y', [-1, 2]), ('tile_x', [-1, 8])],None,31
+    No: 4   GFLOPS: 7.71/7.71       result: MeasureResult(costs=(0.0348177938,), error_no=0, all_cost=0.9887301921844482, timestamp=1607225784.5313203)     [('tile_y', [-1, 1]), ('tile_x', [-1, 32])],None,50
+    No: 5   GFLOPS: 13.46/13.46     result: MeasureResult(costs=(0.0199451586,), error_no=0, all_cost=0.7833263874053955, timestamp=1607225785.3334467)     [('tile_y', [-1, 256]), ('tile_x', [-1, 64])],None,68
+    No: 6   GFLOPS: 11.91/13.46     result: MeasureResult(costs=(0.0225446656,), error_no=0, all_cost=0.7622959613800049, timestamp=1607225786.1802726)     [('tile_y', [-1, 256]), ('tile_x', [-1, 512])],None,98
+    No: 7   GFLOPS: 0.92/13.46      result: MeasureResult(costs=(0.2913359364,), error_no=0, all_cost=5.074311971664429, timestamp=1607225791.3119547)      [('tile_y', [-1, 128]), ('tile_x', [-1, 2])],None,17
+    No: 8   GFLOPS: 2.37/13.46      result: MeasureResult(costs=(0.1133100596,), error_no=0, all_cost=2.2167930603027344, timestamp=1607225793.595454)      [('tile_y', [-1, 8]), ('tile_x', [-1, 4])],None,23
+    No: 9   GFLOPS: 11.52/13.46     result: MeasureResult(costs=(0.0233022846,), error_no=0, all_cost=0.7279143333435059, timestamp=1607225795.1428313)     [('tile_y', [-1, 256]), ('tile_x', [-1, 32])],None,58
+    No: 10  GFLOPS: 14.67/14.67     result: MeasureResult(costs=(0.0182990712,), error_no=0, all_cost=0.7626948356628418, timestamp=1607225795.9127738)     [('tile_y', [-1, 64]), ('tile_x', [-1, 128])],None,76
 
 
 
diff --git a/docs/_sources/tutorials/dev/sg_execution_times.rst.txt b/docs/_sources/tutorials/dev/sg_execution_times.rst.txt
index c2efa13..423392c 100644
--- a/docs/_sources/tutorials/dev/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/dev/sg_execution_times.rst.txt
@@ -5,8 +5,8 @@
 
 Computation times
 =================
-**00:32.281** total execution time for **tutorials_dev** files:
+**00:32.270** total execution time for **tutorials_dev** files:
 
-- **00:31.682**: :ref:`sphx_glr_tutorials_dev_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``)
-- **00:00.398**: :ref:`sphx_glr_tutorials_dev_use_pass_infra.py` (``use_pass_infra.py``)
-- **00:00.201**: :ref:`sphx_glr_tutorials_dev_low_level_custom_pass.py` (``low_level_custom_pass.py``)
+- **00:31.677**: :ref:`sphx_glr_tutorials_dev_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``)
+- **00:00.396**: :ref:`sphx_glr_tutorials_dev_use_pass_infra.py` (``use_pass_infra.py``)
+- **00:00.198**: :ref:`sphx_glr_tutorials_dev_low_level_custom_pass.py` (``low_level_custom_pass.py``)
diff --git a/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt b/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt
index 2efe60c..754de4a 100644
--- a/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt
@@ -421,7 +421,7 @@ Execute on TVM
 
     TVM prediction top-1: tiger cat
     Evaluate inference time cost...
-    Mean inference time (std dev): 5.89 ms (0.07 ms)
+    Mean inference time (std dev): 5.42 ms (0.16 ms)
 
 
 
diff --git a/docs/_sources/tutorials/frontend/deploy_object_detection_pytorch.rst.txt b/docs/_sources/tutorials/frontend/deploy_object_detection_pytorch.rst.txt
index e73c999..d140675 100644
--- a/docs/_sources/tutorials/frontend/deploy_object_detection_pytorch.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_object_detection_pytorch.rst.txt
@@ -247,7 +247,7 @@ Get boxes with score larger than 0.9
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 2 minutes  8.409 seconds)
+   **Total running time of the script:** ( 2 minutes  6.630 seconds)
 
 
 .. _sphx_glr_download_tutorials_frontend_deploy_object_detection_pytorch.py:
diff --git a/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt b/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt
index 8d44c41..94b4250 100644
--- a/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt
@@ -350,7 +350,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
  .. code-block:: none
 
-    Elapsed average ms: 20.03431133
+    Elapsed average ms: 19.295305520000003
 
 
 
diff --git a/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt b/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt
index fb2db0f..a05a4f0 100644
--- a/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt
@@ -368,7 +368,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
  .. code-block:: none
 
-    Elapsed average ms: 36.5868912
+    Elapsed average ms: 36.25781896
 
 
 
@@ -401,7 +401,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 2 minutes  38.647 seconds)
+   **Total running time of the script:** ( 2 minutes  35.942 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 ab5642f..0c9638a 100644
--- a/docs/_sources/tutorials/frontend/deploy_ssd_gluoncv.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_ssd_gluoncv.rst.txt
@@ -195,7 +195,7 @@ Display result
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  56.857 seconds)
+   **Total running time of the script:** ( 1 minutes  54.470 seconds)
 
 
 .. _sphx_glr_download_tutorials_frontend_deploy_ssd_gluoncv.py:
diff --git a/docs/_sources/tutorials/frontend/from_onnx.rst.txt b/docs/_sources/tutorials/frontend/from_onnx.rst.txt
index d30adb4..9a20476 100644
--- a/docs/_sources/tutorials/frontend/from_onnx.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_onnx.rst.txt
@@ -130,7 +130,7 @@ Compile the model with relay
 
  .. code-block:: none
 
-    /workspace/docs/../python/tvm/relay/frontend/onnx.py:2736: UserWarning: Mismatched attribute type in ' : kernel_shape'
+    /workspace/docs/../python/tvm/relay/frontend/onnx.py:2737: UserWarning: Mismatched attribute type in ' : kernel_shape'
 
     ==> Context: Bad node spec: input: "1" input: "2" output: "11" op_type: "Conv" attribute { name: "kernel_shape" ints: 5 ints: 5 } attribute { name: "strides" ints: 1 ints: 1 } attribute { name: "pads" ints: 2 ints: 2 ints: 2 ints: 2 } attribute { name: "dilations" ints: 1 ints: 1 } attribute { name: "group" i: 1 }
       warnings.warn(str(e))
diff --git a/docs/_sources/tutorials/frontend/from_pytorch.rst.txt b/docs/_sources/tutorials/frontend/from_pytorch.rst.txt
index 366e63d..cad1d0a 100644
--- a/docs/_sources/tutorials/frontend/from_pytorch.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_pytorch.rst.txt
@@ -155,7 +155,7 @@ Compile the graph to llvm target with given input specification.
 
  .. code-block:: none
 
-
    ...47%, 0.01 MB, 71 KB/s, 0 seconds passed
    ...94%, 0.02 MB, 141 KB/s, 0 seconds passed
    ...100%, 0.02 MB, 212 KB/s, 0 seconds passed
+
    ...47%, 0.01 MB, 39 KB/s, 0 seconds passed
    ...94%, 0.02 MB, 78 KB/s, 0 seconds passed
    ...100%, 0.02 MB, 117 KB/s, 0 seconds passed
     Cannot find config for target=llvm -keys=cpu -link-params=0, workload=('dense_nopack.x86', ('TENSOR', (1, 512), 'float32'), ('TENSOR', (1000, 512), 'float32'), None, 'float32'). A fallback configuration is used, which may bring great performance regression.
 
 
diff --git a/docs/_sources/tutorials/frontend/from_tensorflow.rst.txt b/docs/_sources/tutorials/frontend/from_tensorflow.rst.txt
index 91f8eda..fac03e1 100644
--- a/docs/_sources/tutorials/frontend/from_tensorflow.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_tensorflow.rst.txt
@@ -205,70 +205,70 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.expand_dims
     WARNING:root:Attribute _target_layout is ignored in relay.sym.expand_dims
     WARNING:root:Attribute half_pixel_centers is ignored in relay.sym.resize
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.resize
     WARNING:root:Attribute T is ignored in relay.sym.resize
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.resize
     WARNING:root:Attribute _node_name is ignored in relay.sym.resize
     WARNING:root:Attribute _target_layout is ignored in relay.sym.resize
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.max_pool2d
@@ -276,28 +276,28 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.max_pool2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
@@ -306,8 +306,8 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
@@ -319,62 +319,62 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.max_pool2d
+    WARNING:root:Attribute T is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute ksize is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.max_pool2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
@@ -382,9 +382,9 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
@@ -392,12 +392,12 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
@@ -406,12 +406,12 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
@@ -419,18 +419,18 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
@@ -439,12 +439,12 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
-    WARNING:root:Attribute T is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
+    WARNING:root:Attribute T is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.avg_pool2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
@@ -453,24 +453,24 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute N is ignored in relay.sym.concatenate
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.concatenate
+    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute _node_name is ignored in relay.sym.concatenate
     WARNING:root:Attribute _target_layout is ignored in relay.sym.concatenate
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
@@ -487,27 +487,27 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
@@ -515,8 +515,8 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
@@ -524,10 +524,10 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
@@ -535,18 +535,18 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
@@ -558,61 +558,61 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute T is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.avg_pool2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute N is ignored in relay.sym.concatenate
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.concatenate
-    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute _node_name is ignored in relay.sym.concatenate
     WARNING:root:Attribute _target_layout is ignored in relay.sym.concatenate
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
@@ -620,76 +620,76 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
@@ -705,14 +705,14 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
@@ -720,66 +720,66 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute T is ignored in relay.sym.avg_pool2d
+    WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.avg_pool2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.concatenate
     WARNING:root:Attribute N is ignored in relay.sym.concatenate
-    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute _node_name is ignored in relay.sym.concatenate
     WARNING:root:Attribute _target_layout is ignored in relay.sym.concatenate
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.copy
@@ -787,37 +787,37 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.copy
@@ -825,38 +825,38 @@ Results:
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.max_pool2d
-    WARNING:root:Attribute T is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute ksize is ignored in relay.sym.max_pool2d
+    WARNING:root:Attribute T is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.max_pool2d
-    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.concatenate
+    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute N is ignored in relay.sym.concatenate
     WARNING:root:Attribute _node_name is ignored in relay.sym.concatenate
     WARNING:root:Attribute _target_layout is ignored in relay.sym.concatenate
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
@@ -864,55 +864,55 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
@@ -921,8 +921,8 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
@@ -931,75 +931,75 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
@@ -1007,31 +1007,31 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute T is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.avg_pool2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
@@ -1039,14 +1039,14 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute N is ignored in relay.sym.concatenate
     WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.concatenate
+    WARNING:root:Attribute N is ignored in relay.sym.concatenate
     WARNING:root:Attribute _node_name is ignored in relay.sym.concatenate
     WARNING:root:Attribute _target_layout is ignored in relay.sym.concatenate
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
@@ -1054,18 +1054,18 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
@@ -1074,79 +1074,79 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
@@ -1154,176 +1154,176 @@ Results:
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute T is ignored in relay.sym.avg_pool2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
+    WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.avg_pool2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.concatenate
-    WARNING:root:Attribute N is ignored in relay.sym.concatenate
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.concatenate
+    WARNING:root:Attribute N is ignored in relay.sym.concatenate
+    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute _node_name is ignored in relay.sym.concatenate
     WARNING:root:Attribute _target_layout is ignored in relay.sym.concatenate
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
@@ -1335,13 +1335,13 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
@@ -1354,23 +1354,23 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
@@ -1379,49 +1379,49 @@ Results:
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute T is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
+    WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.avg_pool2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
@@ -1431,12 +1431,12 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.concatenate
@@ -1446,16 +1446,16 @@ Results:
     WARNING:root:Attribute _target_layout is ignored in relay.sym.concatenate
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
@@ -1463,10 +1463,10 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
@@ -1478,23 +1478,23 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
@@ -1502,18 +1502,18 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
@@ -1522,31 +1522,31 @@ Results:
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.copy
@@ -1554,13 +1554,13 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
@@ -1577,76 +1577,76 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute T is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.avg_pool2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.concatenate
-    WARNING:root:Attribute N is ignored in relay.sym.concatenate
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.concatenate
+    WARNING:root:Attribute N is ignored in relay.sym.concatenate
     WARNING:root:Attribute _node_name is ignored in relay.sym.concatenate
     WARNING:root:Attribute _target_layout is ignored in relay.sym.concatenate
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
@@ -1655,41 +1655,41 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.copy
@@ -1697,32 +1697,32 @@ Results:
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
@@ -1730,27 +1730,27 @@ Results:
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
@@ -1758,14 +1758,14 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute T is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute ksize is ignored in relay.sym.max_pool2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.concatenate
@@ -1773,38 +1773,38 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute _node_name is ignored in relay.sym.concatenate
     WARNING:root:Attribute _target_layout is ignored in relay.sym.concatenate
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
@@ -1812,47 +1812,47 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
@@ -1860,22 +1860,22 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute message is ignored in relay.sym.copy
@@ -1887,53 +1887,53 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute T is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
+    WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.avg_pool2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
@@ -1941,31 +1941,31 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute message is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.concatenate
+    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute N is ignored in relay.sym.concatenate
     WARNING:root:Attribute _node_name is ignored in relay.sym.concatenate
     WARNING:root:Attribute _target_layout is ignored in relay.sym.concatenate
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
@@ -1973,37 +1973,37 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
@@ -2011,10 +2011,10 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
@@ -2022,17 +2022,17 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute T is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
@@ -2041,18 +2041,18 @@ Results:
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
@@ -2068,29 +2068,29 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
-    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
+    WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute T is ignored in relay.sym.copy
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
+    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
-    WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
@@ -2102,58 +2102,58 @@ Results:
     WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute T is ignored in relay.sym.relu
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.copy
-    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute message is ignored in relay.sym.copy
+    WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
+    WARNING:root:Attribute T is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.max_pool2d
-    WARNING:root:Attribute ksize is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.max_pool2d
+    WARNING:root:Attribute ksize is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.max_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.max_pool2d
-    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute explicit_paddings is ignored in relay.sym.conv2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.conv2d
     WARNING:root:Attribute use_cudnn_on_gpu is ignored in relay.sym.conv2d
+    WARNING:root:Attribute T is ignored in relay.sym.conv2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.conv2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.conv2d
     WARNING:root:Attribute T is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _node_name is ignored in relay.sym.batch_norm
     WARNING:root:Attribute _target_layout is ignored in relay.sym.batch_norm
-    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.copy
     WARNING:root:Attribute T is ignored in relay.sym.copy
+    WARNING:root:Attribute message is ignored in relay.sym.copy
     WARNING:root:Attribute _node_name is ignored in relay.sym.copy
     WARNING:root:Attribute _target_layout is ignored in relay.sym.copy
-    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.relu
+    WARNING:root:Attribute T is ignored in relay.sym.relu
     WARNING:root:Attribute _node_name is ignored in relay.sym.relu
     WARNING:root:Attribute _target_layout is ignored in relay.sym.relu
-    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute N is ignored in relay.sym.concatenate
+    WARNING:root:Attribute T is ignored in relay.sym.concatenate
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.concatenate
     WARNING:root:Attribute _node_name is ignored in relay.sym.concatenate
     WARNING:root:Attribute _target_layout is ignored in relay.sym.concatenate
-    WARNING:root:Attribute T is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute ksize is ignored in relay.sym.avg_pool2d
+    WARNING:root:Attribute T is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _node_name is ignored in relay.sym.avg_pool2d
     WARNING:root:Attribute _target_layout is ignored in relay.sym.avg_pool2d
-    WARNING:root:Attribute T is ignored in relay.sym.reshape
-    WARNING:root:Attribute Tshape is ignored in relay.sym.reshape
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.reshape
+    WARNING:root:Attribute Tshape is ignored in relay.sym.reshape
+    WARNING:root:Attribute T is ignored in relay.sym.reshape
     WARNING:root:Attribute _node_name is ignored in relay.sym.reshape
     WARNING:root:Attribute _target_layout is ignored in relay.sym.reshape
+    WARNING:root:Attribute transpose_a is ignored in relay.sym.dense
     WARNING:root:Attribute transpose_b is ignored in relay.sym.dense
-    WARNING:root:Attribute T is ignored in relay.sym.dense
     WARNING:root:Attribute _output_shapes is ignored in relay.sym.dense
-    WARNING:root:Attribute transpose_a is ignored in relay.sym.dense
+    WARNING:root:Attribute T is ignored in relay.sym.dense
     WARNING:root:Attribute _node_name is ignored in relay.sym.dense
     WARNING:root:Attribute _target_layout is ignored in relay.sym.dense
     WARNING:root:Attribute T is ignored in relay.sym.softmax
diff --git a/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt b/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt
index 9770c83..8eae4e6 100644
--- a/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,24 +5,24 @@
 
 Computation times
 =================
-**10:43.604** total execution time for **tutorials_frontend** files:
+**10:34.564** total execution time for **tutorials_frontend** files:
 
-- **02:38.647**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)
-- **02:08.409**: :ref:`sphx_glr_tutorials_frontend_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``)
-- **01:56.857**: :ref:`sphx_glr_tutorials_frontend_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)
-- **00:38.964**: :ref:`sphx_glr_tutorials_frontend_from_tensorflow.py` (``from_tensorflow.py``)
-- **00:30.939**: :ref:`sphx_glr_tutorials_frontend_deploy_quantized.py` (``deploy_quantized.py``)
-- **00:29.031**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized.py` (``deploy_prequantized.py``)
-- **00:25.893**: :ref:`sphx_glr_tutorials_frontend_from_tflite.py` (``from_tflite.py``)
-- **00:23.332**: :ref:`sphx_glr_tutorials_frontend_from_darknet.py` (``from_darknet.py``)
-- **00:17.089**: :ref:`sphx_glr_tutorials_frontend_from_caffe2.py` (``from_caffe2.py``)
-- **00:14.982**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)
-- **00:12.794**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_android.py` (``deploy_model_on_android.py``)
-- **00:12.275**: :ref:`sphx_glr_tutorials_frontend_from_pytorch.py` (``from_pytorch.py``)
-- **00:09.789**: :ref:`sphx_glr_tutorials_frontend_from_mxnet.py` (``from_mxnet.py``)
-- **00:09.087**: :ref:`sphx_glr_tutorials_frontend_from_coreml.py` (``from_coreml.py``)
-- **00:09.041**: :ref:`sphx_glr_tutorials_frontend_from_keras.py` (``from_keras.py``)
-- **00:03.422**: :ref:`sphx_glr_tutorials_frontend_using_external_lib.py` (``using_external_lib.py``)
-- **00:01.694**: :ref:`sphx_glr_tutorials_frontend_from_onnx.py` (``from_onnx.py``)
-- **00:01.160**: :ref:`sphx_glr_tutorials_frontend_build_gcn.py` (``build_gcn.py``)
-- **00:00.197**: :ref:`sphx_glr_tutorials_frontend_deploy_sparse.py` (``deploy_sparse.py``)
+- **02:35.942**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)
+- **02:06.630**: :ref:`sphx_glr_tutorials_frontend_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``)
+- **01:54.470**: :ref:`sphx_glr_tutorials_frontend_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)
+- **00:38.674**: :ref:`sphx_glr_tutorials_frontend_from_tensorflow.py` (``from_tensorflow.py``)
+- **00:30.038**: :ref:`sphx_glr_tutorials_frontend_deploy_quantized.py` (``deploy_quantized.py``)
+- **00:28.994**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized.py` (``deploy_prequantized.py``)
+- **00:24.732**: :ref:`sphx_glr_tutorials_frontend_from_tflite.py` (``from_tflite.py``)
+- **00:24.094**: :ref:`sphx_glr_tutorials_frontend_from_darknet.py` (``from_darknet.py``)
+- **00:16.564**: :ref:`sphx_glr_tutorials_frontend_from_caffe2.py` (``from_caffe2.py``)
+- **00:14.846**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)
+- **00:12.948**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_android.py` (``deploy_model_on_android.py``)
+- **00:12.326**: :ref:`sphx_glr_tutorials_frontend_from_pytorch.py` (``from_pytorch.py``)
+- **00:09.828**: :ref:`sphx_glr_tutorials_frontend_from_mxnet.py` (``from_mxnet.py``)
+- **00:09.102**: :ref:`sphx_glr_tutorials_frontend_from_coreml.py` (``from_coreml.py``)
+- **00:08.859**: :ref:`sphx_glr_tutorials_frontend_from_keras.py` (``from_keras.py``)
+- **00:03.407**: :ref:`sphx_glr_tutorials_frontend_using_external_lib.py` (``using_external_lib.py``)
+- **00:01.689**: :ref:`sphx_glr_tutorials_frontend_from_onnx.py` (``from_onnx.py``)
+- **00:01.228**: :ref:`sphx_glr_tutorials_frontend_build_gcn.py` (``build_gcn.py``)
+- **00:00.194**: :ref:`sphx_glr_tutorials_frontend_deploy_sparse.py` (``deploy_sparse.py``)
diff --git a/docs/_sources/tutorials/get_started/cross_compilation_and_rpc.rst.txt b/docs/_sources/tutorials/get_started/cross_compilation_and_rpc.rst.txt
index 00c1f0e..f4add43 100644
--- a/docs/_sources/tutorials/get_started/cross_compilation_and_rpc.rst.txt
+++ b/docs/_sources/tutorials/get_started/cross_compilation_and_rpc.rst.txt
@@ -235,7 +235,7 @@ device and returns the measured cost. Network overhead is excluded.
 
  .. code-block:: none
 
-    1.263e-07 secs/op
+    1.182e-07 secs/op
 
 
 
diff --git a/docs/_sources/tutorials/get_started/relay_quick_start.rst.txt b/docs/_sources/tutorials/get_started/relay_quick_start.rst.txt
index c099ef9..2965b65 100644
--- a/docs/_sources/tutorials/get_started/relay_quick_start.rst.txt
+++ b/docs/_sources/tutorials/get_started/relay_quick_start.rst.txt
@@ -224,7 +224,7 @@ in this example. Then the machine code will be generated as the module library.
 
  .. code-block:: none
 
-
    ...1%, 0.01 MB, 38 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 77 KB/s, 0 seconds passed
    ...5%, 0.02 MB, 116 KB/s, 0 seconds passed
    ...6%, 0.03 MB, 154 KB/s, 0 seconds passed
    ...8%, 0.04 MB, 187 KB/s, 0 seconds passed
    ...10%, 0.05 MB, 224 KB/s, 0 seconds passed
    ...11%, 0.05 MB, 260 KB/s, 0 seconds passed
    ...13%, 0.06 MB, 297 KB/s, 0 seconds passed
    ...15%, 0.07 MB, 334 KB/s, 0 seconds passed
    ...16%, 0.08 MB, 369 KB/s, 0 seconds passed
    ...18%, 0.09 MB, 406 KB/s, 0 seconds passed
    ...20%, 0.09 MB, 441 KB/s, 0 seconds passed
    ...21%, 0.10 MB, 478 KB/s, 0 seconds passed
    ...23%, 0.11 MB, 512 KB/s, 0 seconds passed
    ...25%, 0.12 MB, 539 KB/s, 0 seconds passed
    ...26%, 0.12 MB, 574 KB/s, 0 seconds passed
    ...28%, 0.13 MB, 610 KB/s, 0 seconds passed
    ...30%, 0.14 MB, 645 KB/s, 0 seconds passed
    ...31%, 0.15 MB, 679 KB/s, 0 seconds passed
    ...33%, 0.16 MB, 713 KB/s, 0 seconds passed
    ...35%, 0.16 MB, 749 KB/s, 0 seconds pa
 ssed
    ...36%, 0.17 MB, 782 KB/s, 0 seconds passed
    ...38%, 0.18 MB, 818 KB/s, 0 seconds passed
    ...40%, 0.19 MB, 853 KB/s, 0 seconds passed
    ...41%, 0.20 MB, 885 KB/s, 0 seconds passed
    ...43%, 0.20 MB, 920 KB/s, 0 seconds passed
    ...45%, 0.21 MB, 955 KB/s, 0 seconds passed
    ...46%, 0.22 MB, 987 KB/s, 0 seconds passed
    ...48%, 0.23 MB, 1022 KB/s, 0 seconds passed
    ...50%, 0.23 MB, 1056 KB/s, 0 seconds passed
    ...51%, 0.24 MB, 1091 KB/s, 0 seconds passed
    ...53%, 0.25 MB, 1123 KB/s, 0 seconds passed
    ...55%, 0.26 MB, 1156 KB/s, 0 seconds passed
    ...56%, 0.27 MB, 1175 KB/s, 0 seconds passed
    ...58%, 0.27 MB, 1209 KB/s, 0 seconds passed
    ...60%, 0.28 MB, 1238 KB/s, 0 seconds passed
    ...61%, 0.29 MB, 1272 KB/s, 0 seconds passed
    ...63%, 0.30 MB, 1306 KB/s, 0 seconds passed
    ...65%, 0.30 MB, 1339 KB/s, 0 seconds passed
    ...66%, 0.31 MB, 1372 KB/s, 0 seconds passed
    ...68%, 0.32 MB, 1403 KB/s, 0 seconds passed
    ...70%, 0.33 MB
 , 1436 KB/s, 0 seconds passed
    ...71%, 0.34 MB, 1465 KB/s, 0 seconds passed
    ...73%, 0.34 MB, 1499 KB/s, 0 seconds passed
    ...75%, 0.35 MB, 1532 KB/s, 0 seconds passed
    ...76%, 0.36 MB, 1561 KB/s, 0 seconds passed
    ...78%, 0.37 MB, 1594 KB/s, 0 seconds passed
    ...80%, 0.38 MB, 1620 KB/s, 0 seconds passed
    ...81%, 0.38 MB, 1653 KB/s, 0 seconds passed
    ...83%, 0.39 MB, 1686 KB/s, 0 seconds passed
    ...85%, 0.40 MB, 1715 KB/s, 0 seconds passed
    ...86%, 0.41 MB, 1748 KB/s, 0 seconds passed
    ...88%, 0.41 MB, 1769 KB/s, 0 seconds passed
    ...90%, 0.42 MB, 1801 KB/s, 0 seconds passed
    ...91%, 0.43 MB, 1831 KB/s, 0 seconds passed
    ...93%, 0.44 MB, 1857 KB/s, 0 seconds passed
    ...95%, 0.45 MB, 1889 KB/s, 0 seconds passed
    ...96%, 0.45 MB, 1919 KB/s, 0 seconds passed
    ...98%, 0.46 MB, 1951 KB/s, 0 seconds passed
    ...100%, 0.47 MB, 1983 KB/s, 0 seconds passed
+
    ...1%, 0.01 MB, 39 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 79 KB/s, 0 seconds passed
    ...5%, 0.02 MB, 119 KB/s, 0 seconds passed
    ...6%, 0.03 MB, 158 KB/s, 0 seconds passed
    ...8%, 0.04 MB, 192 KB/s, 0 seconds passed
    ...10%, 0.05 MB, 230 KB/s, 0 seconds passed
    ...11%, 0.05 MB, 268 KB/s, 0 seconds passed
    ...13%, 0.06 MB, 306 KB/s, 0 seconds passed
    ...15%, 0.07 MB, 344 KB/s, 0 seconds passed
    ...16%, 0.08 MB, 382 KB/s, 0 seconds passed
    ...18%, 0.09 MB, 418 KB/s, 0 seconds passed
    ...20%, 0.09 MB, 456 KB/s, 0 seconds passed
    ...21%, 0.10 MB, 492 KB/s, 0 seconds passed
    ...23%, 0.11 MB, 530 KB/s, 0 seconds passed
    ...25%, 0.12 MB, 556 KB/s, 0 seconds passed
    ...26%, 0.12 MB, 593 KB/s, 0 seconds passed
    ...28%, 0.13 MB, 630 KB/s, 0 seconds passed
    ...30%, 0.14 MB, 666 KB/s, 0 seconds passed
    ...31%, 0.15 MB, 703 KB/s, 0 seconds passed
    ...33%, 0.16 MB, 738 KB/s, 0 seconds passed
    ...35%, 0.16 MB, 774 KB/s, 0 seconds pa
 ssed
    ...36%, 0.17 MB, 811 KB/s, 0 seconds passed
    ...38%, 0.18 MB, 846 KB/s, 0 seconds passed
    ...40%, 0.19 MB, 882 KB/s, 0 seconds passed
    ...41%, 0.20 MB, 918 KB/s, 0 seconds passed
    ...43%, 0.20 MB, 954 KB/s, 0 seconds passed
    ...45%, 0.21 MB, 987 KB/s, 0 seconds passed
    ...46%, 0.22 MB, 1023 KB/s, 0 seconds passed
    ...48%, 0.23 MB, 1059 KB/s, 0 seconds passed
    ...50%, 0.23 MB, 1095 KB/s, 0 seconds passed
    ...51%, 0.24 MB, 1129 KB/s, 0 seconds passed
    ...53%, 0.25 MB, 1165 KB/s, 0 seconds passed
    ...55%, 0.26 MB, 1201 KB/s, 0 seconds passed
    ...56%, 0.27 MB, 1237 KB/s, 0 seconds passed
    ...58%, 0.27 MB, 1254 KB/s, 0 seconds passed
    ...60%, 0.28 MB, 1290 KB/s, 0 seconds passed
    ...61%, 0.29 MB, 1325 KB/s, 0 seconds passed
    ...63%, 0.30 MB, 1360 KB/s, 0 seconds passed
    ...65%, 0.30 MB, 1390 KB/s, 0 seconds passed
    ...66%, 0.31 MB, 1425 KB/s, 0 seconds passed
    ...68%, 0.32 MB, 1460 KB/s, 0 seconds passed
    ...70%, 0.33 M
 B, 1496 KB/s, 0 seconds passed
    ...71%, 0.34 MB, 1531 KB/s, 0 seconds passed
    ...73%, 0.34 MB, 1566 KB/s, 0 seconds passed
    ...75%, 0.35 MB, 1601 KB/s, 0 seconds passed
    ...76%, 0.36 MB, 1636 KB/s, 0 seconds passed
    ...78%, 0.37 MB, 1667 KB/s, 0 seconds passed
    ...80%, 0.38 MB, 1702 KB/s, 0 seconds passed
    ...81%, 0.38 MB, 1737 KB/s, 0 seconds passed
    ...83%, 0.39 MB, 1772 KB/s, 0 seconds passed
    ...85%, 0.40 MB, 1807 KB/s, 0 seconds passed
    ...86%, 0.41 MB, 1842 KB/s, 0 seconds passed
    ...88%, 0.41 MB, 1877 KB/s, 0 seconds passed
    ...90%, 0.42 MB, 1911 KB/s, 0 seconds passed
    ...91%, 0.43 MB, 1946 KB/s, 0 seconds passed
    ...93%, 0.44 MB, 1980 KB/s, 0 seconds passed
    ...95%, 0.45 MB, 2015 KB/s, 0 seconds passed
    ...96%, 0.45 MB, 2050 KB/s, 0 seconds passed
    ...98%, 0.46 MB, 2085 KB/s, 0 seconds passed
    ...100%, 0.47 MB, 2118 KB/s, 0 seconds passed
     Cannot find config for target=cuda -keys=cuda,gpu -max_num_threads=1024 -model=unknown -thread_warp_size=32, workload=('dense_small_batch.cuda', ('TENSOR', (1, 512), 'float32'), ('TENSOR', (1000, 512), 'float32'), None, 'float32'). A fallback configuration is used, which may bring great performance regression.
 
 
diff --git a/docs/_sources/tutorials/get_started/sg_execution_times.rst.txt b/docs/_sources/tutorials/get_started/sg_execution_times.rst.txt
index 6bb5676..7d657b5 100644
--- a/docs/_sources/tutorials/get_started/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/get_started/sg_execution_times.rst.txt
@@ -5,9 +5,9 @@
 
 Computation times
 =================
-**00:16.970** total execution time for **tutorials_get_started** files:
+**00:16.931** total execution time for **tutorials_get_started** files:
 
-- **00:16.182**: :ref:`sphx_glr_tutorials_get_started_relay_quick_start.py` (``relay_quick_start.py``)
-- **00:00.354**: :ref:`sphx_glr_tutorials_get_started_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)
-- **00:00.348**: :ref:`sphx_glr_tutorials_get_started_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
+- **00:16.360**: :ref:`sphx_glr_tutorials_get_started_relay_quick_start.py` (``relay_quick_start.py``)
+- **00:00.358**: :ref:`sphx_glr_tutorials_get_started_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)
+- **00:00.126**: :ref:`sphx_glr_tutorials_get_started_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
 - **00:00.087**: :ref:`sphx_glr_tutorials_get_started_tvmc_command_line_driver.py` (``tvmc_command_line_driver.py``)
diff --git a/docs/_sources/tutorials/language/reduction.rst.txt b/docs/_sources/tutorials/language/reduction.rst.txt
index da2bf5c..c54fb31 100644
--- a/docs/_sources/tutorials/language/reduction.rst.txt
+++ b/docs/_sources/tutorials/language/reduction.rst.txt
@@ -413,8 +413,8 @@ Here is an example for 2D convolution with filter size = [3, 3] and strides = [1
 
     primfn(Input_1: handle, Filter_1: handle, Output_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {Filter: Buffer(Filter_2: Pointer(float32), float32, [3, 3], []),
-                 Output: Buffer(Output_2: Pointer(float32), float32, [(n: int32 - 2), (n - 2)], []),
+      buffers = {Output: Buffer(Output_2: Pointer(float32), float32, [(n: int32 - 2), (n - 2)], []),
+                 Filter: Buffer(Filter_2: Pointer(float32), float32, [3, 3], []),
                  Input: Buffer(Input_2: Pointer(float32), float32, [n, n], [stride: int32, stride_1: int32], type="auto")}
       buffer_map = {Input_1: Input, Filter_1: Filter, Output_1: Output} {
       for (i: int32, 0, (n - 2)) {
diff --git a/docs/_sources/tutorials/language/schedule_primitives.rst.txt b/docs/_sources/tutorials/language/schedule_primitives.rst.txt
index 900755a..ec5d465 100644
--- a/docs/_sources/tutorials/language/schedule_primitives.rst.txt
+++ b/docs/_sources/tutorials/language/schedule_primitives.rst.txt
@@ -85,13 +85,13 @@ schedule computes tensor in a serial manner in a row-major order.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 B: Buffer(B_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
+                 C: Buffer(C_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
                  A: Buffer(A_2: Pointer(float32), float32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, m) {
         for (j: int32, 0, n) {
-          C_2[((i*stride) + (j*stride_1))] = ((float32*)A_2[((i*stride_4) + (j*stride_5))]*(float32*)B_2[((i*stride_2) + (j*stride_3))])
+          C_2[((i*stride_2) + (j*stride_3))] = ((float32*)A_2[((i*stride_4) + (j*stride_5))]*(float32*)B_2[((i*stride) + (j*stride_1))])
         }
       }
     }
@@ -533,15 +533,15 @@ compute_root
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
-                 B: Buffer(B_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
+                 C: Buffer(C_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
                  A: Buffer(A_2: Pointer(float32), float32, [m], [stride_2: int32], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, m) {
-        B_2[(i*stride_1)] = ((float32*)A_2[(i*stride_2)] + 1f32)
+        B_2[(i*stride)] = ((float32*)A_2[(i*stride_2)] + 1f32)
       }
       for (i_1: int32, 0, m) {
-        C_2[(i_1*stride)] = ((float32*)B_2[(i_1*stride_1)]*2f32)
+        C_2[(i_1*stride_1)] = ((float32*)B_2[(i_1*stride)]*2f32)
       }
     }
 
diff --git a/docs/_sources/tutorials/language/sg_execution_times.rst.txt b/docs/_sources/tutorials/language/sg_execution_times.rst.txt
index f5c5f6e..e5f878a 100644
--- a/docs/_sources/tutorials/language/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/language/sg_execution_times.rst.txt
@@ -5,13 +5,13 @@
 
 Computation times
 =================
-**00:04.417** total execution time for **tutorials_language** files:
+**00:04.449** total execution time for **tutorials_language** files:
 
-- **00:01.565**: :ref:`sphx_glr_tutorials_language_intrin_math.py` (``intrin_math.py``)
+- **00:01.582**: :ref:`sphx_glr_tutorials_language_intrin_math.py` (``intrin_math.py``)
 - **00:00.773**: :ref:`sphx_glr_tutorials_language_tensorize.py` (``tensorize.py``)
-- **00:00.585**: :ref:`sphx_glr_tutorials_language_scan.py` (``scan.py``)
-- **00:00.545**: :ref:`sphx_glr_tutorials_language_reduction.py` (``reduction.py``)
-- **00:00.313**: :ref:`sphx_glr_tutorials_language_extern_op.py` (``extern_op.py``)
-- **00:00.228**: :ref:`sphx_glr_tutorials_language_schedule_primitives.py` (``schedule_primitives.py``)
-- **00:00.212**: :ref:`sphx_glr_tutorials_language_tuple_inputs.py` (``tuple_inputs.py``)
-- **00:00.195**: :ref:`sphx_glr_tutorials_language_tedd.py` (``tedd.py``)
+- **00:00.581**: :ref:`sphx_glr_tutorials_language_scan.py` (``scan.py``)
+- **00:00.542**: :ref:`sphx_glr_tutorials_language_reduction.py` (``reduction.py``)
+- **00:00.319**: :ref:`sphx_glr_tutorials_language_extern_op.py` (``extern_op.py``)
+- **00:00.245**: :ref:`sphx_glr_tutorials_language_schedule_primitives.py` (``schedule_primitives.py``)
+- **00:00.210**: :ref:`sphx_glr_tutorials_language_tuple_inputs.py` (``tuple_inputs.py``)
+- **00:00.198**: :ref:`sphx_glr_tutorials_language_tedd.py` (``tedd.py``)
diff --git a/docs/_sources/tutorials/language/tensorize.rst.txt b/docs/_sources/tutorials/language/tensorize.rst.txt
index ad17095..1f1b6ab 100644
--- a/docs/_sources/tutorials/language/tensorize.rst.txt
+++ b/docs/_sources/tutorials/language/tensorize.rst.txt
@@ -119,8 +119,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 = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [512, 64], []),
-                 C: Buffer(C_2: Pointer(float32), float32, [1024, 512], []),
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 512], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [512, 64], []),
                  A: Buffer(A_2: Pointer(float32), float32, [1024, 64], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, 1024) {
@@ -312,8 +312,8 @@ The importing needs to happen before the tensorized GEMV being executed.
                  B: Buffer(B_2: Pointer(float32), float32, [512, 64], []),
                  A: Buffer(A_2: Pointer(float32), float32, [1024, 64], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
-      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpsg_xo9zl/input0.cc'
-    source_filename = "/tmp/tmpsg_xo9zl/input0.cc"
+      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpinr5hwkd/input0.cc'
+    source_filename = "/tmp/tmpinr5hwkd/input0.cc"
     target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
     target triple = "x86_64-pc-linux-gnu"
 
diff --git a/docs/_sources/tutorials/language/tuple_inputs.rst.txt b/docs/_sources/tutorials/language/tuple_inputs.rst.txt
index 2865cb3..9ddc391 100644
--- a/docs/_sources/tutorials/language/tuple_inputs.rst.txt
+++ b/docs/_sources/tutorials/language/tuple_inputs.rst.txt
@@ -136,16 +136,16 @@ with :py:func:`te.comm_reducer` as below:
     primfn(idx_1: handle, val_1: handle, T.v0_1: handle, T.v1_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
       buffers = {T.v1: Buffer(T.v1_2: Pointer(int32), int32, [m: int32], [stride: int32], type="auto"),
-                 T.v0: Buffer(T.v0_2: Pointer(int32), int32, [m], [stride_1: int32], type="auto"),
-                 val: Buffer(val_2: Pointer(int32), int32, [m, n: int32], [stride_2: int32, stride_3: int32], type="auto"),
+                 val: Buffer(val_2: Pointer(int32), int32, [m, n: int32], [stride_1: int32, stride_2: int32], type="auto"),
+                 T.v0: Buffer(T.v0_2: Pointer(int32), int32, [m], [stride_3: int32], type="auto"),
                  idx: Buffer(idx_2: Pointer(int32), int32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
       buffer_map = {idx_1: idx, val_1: val, T.v0_1: T.v0, T.v1_1: T.v1} {
       for (i: int32, 0, m) {
-        T.v0_2[(i*stride_1)] = -1
+        T.v0_2[(i*stride_3)] = -1
         T.v1_2[(i*stride)] = -2147483648
         for (k: int32, 0, n) {
-          T.v0_2[(i*stride_1)] = @tir.if_then_else(((int32*)val_2[((i*stride_2) + (k*stride_3))] <= (int32*)T.v1_2[(i*stride)]), (int32*)T.v0_2[(i*stride_1)], (int32*)idx_2[((i*stride_4) + (k*stride_5))], dtype=int32)
-          T.v1_2[(i*stride)] = @tir.if_then_else(((int32*)val_2[((i*stride_2) + (k*stride_3))] <= (int32*)T.v1_2[(i*stride)]), (int32*)T.v1_2[(i*stride)], (int32*)val_2[((i*stride_2) + (k*stride_3))], dtype=int32)
+          T.v0_2[(i*stride_3)] = @tir.if_then_else(((int32*)val_2[((i*stride_1) + (k*stride_2))] <= (int32*)T.v1_2[(i*stride)]), (int32*)T.v0_2[(i*stride_3)], (int32*)idx_2[((i*stride_4) + (k*stride_5))], dtype=int32)
+          T.v1_2[(i*stride)] = @tir.if_then_else(((int32*)val_2[((i*stride_1) + (k*stride_2))] <= (int32*)T.v1_2[(i*stride)]), (int32*)T.v1_2[(i*stride)], (int32*)val_2[((i*stride_1) + (k*stride_2))], dtype=int32)
         }
       }
     }
@@ -193,8 +193,8 @@ in terms of operation.
 
     primfn(A0_1: handle, A1_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {A1: Buffer(A1_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 C: Buffer(C_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
+                 A1: Buffer(A1_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
                  A0: Buffer(A0_2: Pointer(float32), float32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
       buffer_map = {A0_1: A0, A1_1: A1, C_1: C} {
       attr [B.v0: Pointer(float32)] "storage_scope" = "global";
@@ -207,7 +207,7 @@ in terms of operation.
           B.v1[j] = ((float32*)A0_2[((i*stride_4) + (j*stride_5))]*3f32)
         }
         for (j_1: int32, 0, n) {
-          C_2[((i*stride_2) + (j_1*stride_3))] = ((float32*)A1_2[((i*stride) + (j_1*stride_1))] + (float32*)B.v0[j_1])
+          C_2[((i*stride) + (j_1*stride_1))] = ((float32*)A1_2[((i*stride_2) + (j_1*stride_3))] + (float32*)B.v0[j_1])
         }
       }
     }
diff --git a/docs/_sources/tutorials/micro/sg_execution_times.rst.txt b/docs/_sources/tutorials/micro/sg_execution_times.rst.txt
index 209834b..c04245a 100644
--- a/docs/_sources/tutorials/micro/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/micro/sg_execution_times.rst.txt
@@ -5,7 +5,7 @@
 
 Computation times
 =================
-**00:06.096** total execution time for **tutorials_micro** files:
+**00:06.048** total execution time for **tutorials_micro** files:
 
-- **00:05.894**: :ref:`sphx_glr_tutorials_micro_micro_tflite.py` (``micro_tflite.py``)
-- **00:00.202**: :ref:`sphx_glr_tutorials_micro_micro_reference_vm.py` (``micro_reference_vm.py``)
+- **00:05.849**: :ref:`sphx_glr_tutorials_micro_micro_tflite.py` (``micro_tflite.py``)
+- **00:00.199**: :ref:`sphx_glr_tutorials_micro_micro_reference_vm.py` (``micro_reference_vm.py``)
diff --git a/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt b/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt
index 0d79f90..85d20dc 100644
--- a/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt
+++ b/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt
@@ -296,7 +296,7 @@ latency of convolution.
 
  .. code-block:: none
 
-    Convolution: 33.661838 ms
+    Convolution: 53.197723 ms
 
 
 
diff --git a/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt b/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt
index e58dd7f..17e2062 100644
--- a/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt
+++ b/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt
@@ -624,7 +624,7 @@ be able to run on our build server
 
  .. code-block:: none
 
-    conv2d with tensor core: 8.532626 ms
+    conv2d with tensor core: 8.329637 ms
 
 
 
diff --git a/docs/_sources/tutorials/optimize/opt_gemm.rst.txt b/docs/_sources/tutorials/optimize/opt_gemm.rst.txt
index df64438..a213af0 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.007647
-    Baseline: 3.523699
+    Numpy running time: 0.006963
+    Baseline: 3.516655
 
 
 
@@ -144,8 +144,8 @@ Here is the generated IR using our baseline schedule.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
-                 C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
                  A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (x: int32, 0, 1024) {
@@ -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.284932
+    Opt1: 0.284967
 
 
 
@@ -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.321761
+    Opt2: 0.321595
 
 
 
@@ -389,7 +389,7 @@ the access pattern for A matrix is more cache friendly.
 
  .. code-block:: none
 
-    Opt3: 0.111872
+    Opt3: 0.111657
 
 
 
@@ -413,8 +413,8 @@ Here is the generated IR after loop permutation.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
+                 C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
                  A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (x.outer: int32, 0, 32) {
@@ -499,7 +499,7 @@ the corresponding value from the packed array.
 
  .. code-block:: none
 
-    Opt4: 0.105836
+    Opt4: 0.105409
 
 
 
@@ -609,7 +609,7 @@ write to C when all the block results are ready.
 
  .. code-block:: none
 
-    Opt5: 0.106911
+    Opt5: 0.098048
 
 
 
@@ -633,8 +633,8 @@ Here is the generated IR after blocking.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
-                 C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
                  A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [packedB: Pointer(float32)] "storage_scope" = "global";
@@ -725,7 +725,7 @@ Futhermore, we can also utilize multi-core processors to do the thread-level par
 
  .. code-block:: none
 
-    Opt6: 0.034916
+    Opt6: 0.032347
 
 
 
@@ -749,8 +749,8 @@ Here is the generated IR after parallelization.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
-                 C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
                  A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [packedB: Pointer(float32)] "storage_scope" = "global";
diff --git a/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt b/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt
index 4b77909..eefe5a5 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:28.088** total execution time for **tutorials_optimize** files:
+**00:27.648** total execution time for **tutorials_optimize** files:
 
-- **00:25.450**: :ref:`sphx_glr_tutorials_optimize_opt_gemm.py` (``opt_gemm.py``)
-- **00:01.339**: :ref:`sphx_glr_tutorials_optimize_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``)
-- **00:01.086**: :ref:`sphx_glr_tutorials_optimize_opt_conv_cuda.py` (``opt_conv_cuda.py``)
-- **00:00.213**: :ref:`sphx_glr_tutorials_optimize_opt_matmul_auto_tensorcore.py` (``opt_matmul_auto_tensorcore.py``)
+- **00:25.018**: :ref:`sphx_glr_tutorials_optimize_opt_gemm.py` (``opt_gemm.py``)
+- **00:01.324**: :ref:`sphx_glr_tutorials_optimize_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``)
+- **00:01.095**: :ref:`sphx_glr_tutorials_optimize_opt_conv_cuda.py` (``opt_conv_cuda.py``)
+- **00:00.212**: :ref:`sphx_glr_tutorials_optimize_opt_matmul_auto_tensorcore.py` (``opt_matmul_auto_tensorcore.py``)
diff --git a/docs/_sources/tutorials/topi/intro_topi.rst.txt b/docs/_sources/tutorials/topi/intro_topi.rst.txt
index bcfff25..445cb92 100644
--- a/docs/_sources/tutorials/topi/intro_topi.rst.txt
+++ b/docs/_sources/tutorials/topi/intro_topi.rst.txt
@@ -231,7 +231,7 @@ As you can see, scheduled stages of computation have been accumulated and we can
 
  .. code-block:: none
 
-    [stage(a, placeholder(a, 0x18fc1d100)), stage(b, placeholder(b, 0x18f784e00)), stage(T_add, compute(T_add, body=[(a[ax0, ax1, ax2] + b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min=0, ext=10))], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[(a[ax0, ax1, ax2]*b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range( [...]
+    [stage(a, placeholder(a, 0x190de3e10)), stage(b, placeholder(b, 0x1a4304890)), stage(T_add, compute(T_add, body=[(a[ax0, ax1, ax2] + b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min=0, ext=10))], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[(a[ax0, ax1, ax2]*b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range( [...]
 
 
 
diff --git a/docs/_sources/tutorials/topi/sg_execution_times.rst.txt b/docs/_sources/tutorials/topi/sg_execution_times.rst.txt
index d0e5d42..a5d1531 100644
--- a/docs/_sources/tutorials/topi/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/topi/sg_execution_times.rst.txt
@@ -5,6 +5,6 @@
 
 Computation times
 =================
-**00:00.643** total execution time for **tutorials_topi** files:
+**00:00.640** total execution time for **tutorials_topi** files:
 
-- **00:00.643**: :ref:`sphx_glr_tutorials_topi_intro_topi.py` (``intro_topi.py``)
+- **00:00.640**: :ref:`sphx_glr_tutorials_topi_intro_topi.py` (``intro_topi.py``)
diff --git a/docs/_sources/vta/tutorials/autotvm/sg_execution_times.rst.txt b/docs/_sources/vta/tutorials/autotvm/sg_execution_times.rst.txt
index a5c9454..7623620 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:07.923** total execution time for **vta_tutorials_autotvm** files:
+**00:07.840** total execution time for **vta_tutorials_autotvm** files:
 
-- **00:07.923**: :ref:`sphx_glr_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``)
+- **00:07.840**: :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 6573765..5735b17 100644
--- a/docs/_sources/vta/tutorials/autotvm/tune_relay_vta.rst.txt
+++ b/docs/_sources/vta/tutorials/autotvm/tune_relay_vta.rst.txt
@@ -497,7 +497,7 @@ Finally, we launch tuning jobs and evaluate the end-to-end performance.
  .. code-block:: none
 
     Extract tasks...
-
    ...1%, 0.01 MB, 155 KB/s, 0 seconds passed
    ...2%, 0.02 MB, 309 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 461 KB/s, 0 seconds passed
    ...4%, 0.03 MB, 604 KB/s, 0 seconds passed
    ...5%, 0.04 MB, 682 KB/s, 0 seconds passed
    ...6%, 0.05 MB, 817 KB/s, 0 seconds passed
    ...7%, 0.05 MB, 951 KB/s, 0 seconds passed
    ...8%, 0.06 MB, 1070 KB/s, 0 seconds passed
    ...9%, 0.07 MB, 1202 KB/s, 0 seconds passed
    ...10%, 0.08 MB, 1319 KB/s, 0 seconds passed
    ...11%, 0.09 MB, 1446 KB/s, 0 seconds passed
    ...13%, 0.09 MB, 1574 KB/s, 0 seconds passed
    ...14%, 0.10 MB, 1681 KB/s, 0 seconds passed
    ...15%, 0.11 MB, 1807 KB/s, 0 seconds passed
    ...16%, 0.12 MB, 1813 KB/s, 0 seconds passed
    ...17%, 0.12 MB, 1931 KB/s, 0 seconds passed
    ...18%, 0.13 MB, 2048 KB/s, 0 seconds passed
    ...19%, 0.14 MB, 2161 KB/s, 0 seconds passed
    ...20%, 0.15 MB, 2277 KB/s, 0 seconds passed
    ...21%, 0.16 MB, 2375 KB/s, 0 seconds passed
    ...22%, 0.16 MB, 2490 KB/s, 
 0 seconds passed
    ...23%, 0.17 MB, 2605 KB/s, 0 seconds passed
    ...24%, 0.18 MB, 2702 KB/s, 0 seconds passed
    ...26%, 0.19 MB, 2815 KB/s, 0 seconds passed
    ...27%, 0.20 MB, 2922 KB/s, 0 seconds passed
    ...28%, 0.20 MB, 2999 KB/s, 0 seconds passed
    ...29%, 0.21 MB, 3108 KB/s, 0 seconds passed
    ...30%, 0.22 MB, 3216 KB/s, 0 seconds passed
    ...31%, 0.23 MB, 3326 KB/s, 0 seconds passed
    ...32%, 0.23 MB, 3436 KB/s, 0 seconds passed
    ...33%, 0.24 MB, 3546 KB/s, 0 seconds passed
    ...34%, 0.25 MB, 3657 KB/s, 0 seconds passed
    ...35%, 0.26 MB, 3768 KB/s, 0 seconds passed
    ...36%, 0.27 MB, 3692 KB/s, 0 seconds passed
    ...38%, 0.27 MB, 3793 KB/s, 0 seconds passed
    ...39%, 0.28 MB, 3897 KB/s, 0 seconds passed
    ...40%, 0.29 MB, 4002 KB/s, 0 seconds passed
    ...41%, 0.30 MB, 4107 KB/s, 0 seconds passed
    ...42%, 0.30 MB, 4211 KB/s, 0 seconds passed
    ...43%, 0.31 MB, 4268 KB/s, 0 seconds passed
    ...44%, 0.32 MB, 4371 KB/s, 0 seconds passed
     ...45%, 0.33 MB, 4473 KB/s, 0 seconds passed
    ...46%, 0.34 MB, 4576 KB/s, 0 seconds passed
    ...47%, 0.34 MB, 4677 KB/s, 0 seconds passed
    ...48%, 0.35 MB, 4780 KB/s, 0 seconds passed
    ...49%, 0.36 MB, 4870 KB/s, 0 seconds passed
    ...51%, 0.37 MB, 4972 KB/s, 0 seconds passed
    ...52%, 0.38 MB, 5067 KB/s, 0 seconds passed
    ...53%, 0.38 MB, 5168 KB/s, 0 seconds passed
    ...54%, 0.39 MB, 5269 KB/s, 0 seconds passed
    ...55%, 0.40 MB, 5370 KB/s, 0 seconds passed
    ...56%, 0.41 MB, 5446 KB/s, 0 seconds passed
    ...57%, 0.41 MB, 5546 KB/s, 0 seconds passed
    ...58%, 0.42 MB, 5644 KB/s, 0 seconds passed
    ...59%, 0.43 MB, 5744 KB/s, 0 seconds passed
    ...60%, 0.44 MB, 5814 KB/s, 0 seconds passed
    ...61%, 0.45 MB, 5912 KB/s, 0 seconds passed
    ...63%, 0.45 MB, 6008 KB/s, 0 seconds passed
    ...64%, 0.46 MB, 6107 KB/s, 0 seconds passed
    ...65%, 0.47 MB, 6204 KB/s, 0 seconds passed
    ...66%, 0.48 MB, 6303 KB/s, 0 seconds passed
    ...67%, 0.48 
 MB, 6383 KB/s, 0 seconds passed
    ...68%, 0.49 MB, 6479 KB/s, 0 seconds passed
    ...69%, 0.50 MB, 6575 KB/s, 0 seconds passed
    ...70%, 0.51 MB, 6672 KB/s, 0 seconds passed
    ...71%, 0.52 MB, 6768 KB/s, 0 seconds passed
    ...72%, 0.52 MB, 6866 KB/s, 0 seconds passed
    ...73%, 0.53 MB, 6962 KB/s, 0 seconds passed
    ...74%, 0.54 MB, 7059 KB/s, 0 seconds passed
    ...76%, 0.55 MB, 7145 KB/s, 0 seconds passed
    ...77%, 0.55 MB, 7240 KB/s, 0 seconds passed
    ...78%, 0.56 MB, 7092 KB/s, 0 seconds passed
    ...79%, 0.57 MB, 7184 KB/s, 0 seconds passed
    ...80%, 0.58 MB, 7271 KB/s, 0 seconds passed
    ...81%, 0.59 MB, 7363 KB/s, 0 seconds passed
    ...82%, 0.59 MB, 7454 KB/s, 0 seconds passed
    ...83%, 0.60 MB, 7546 KB/s, 0 seconds passed
    ...84%, 0.61 MB, 7562 KB/s, 0 seconds passed
    ...85%, 0.62 MB, 7646 KB/s, 0 seconds passed
    ...86%, 0.62 MB, 7735 KB/s, 0 seconds passed
    ...87%, 0.63 MB, 7819 KB/s, 0 seconds passed
    ...89%, 0.64 MB, 7908 KB/s, 0 
 seconds passed
    ...90%, 0.65 MB, 7998 KB/s, 0 seconds passed
    ...91%, 0.66 MB, 8087 KB/s, 0 seconds passed
    ...92%, 0.66 MB, 8178 KB/s, 0 seconds passed
    ...93%, 0.67 MB, 8266 KB/s, 0 seconds passed
    ...94%, 0.68 MB, 8356 KB/s, 0 seconds passed
    ...95%, 0.69 MB, 8444 KB/s, 0 seconds passed
    ...96%, 0.70 MB, 8534 KB/s, 0 seconds passed
    ...97%, 0.70 MB, 8622 KB/s, 0 seconds passed
    ...98%, 0.71 MB, 8711 KB/s, 0 seconds passed
    ...99%, 0.72 MB, 8800 KB/s, 0 seconds passed
    ...100%, 0.73 MB, 8877 KB/s, 0 seconds passed
+
    ...1%, 0.01 MB, 22 KB/s, 0 seconds passed
    ...2%, 0.02 MB, 45 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 68 KB/s, 0 seconds passed
    ...4%, 0.03 MB, 91 KB/s, 0 seconds passed
    ...5%, 0.04 MB, 112 KB/s, 0 seconds passed
    ...6%, 0.05 MB, 134 KB/s, 0 seconds passed
    ...7%, 0.05 MB, 157 KB/s, 0 seconds passed
    ...8%, 0.06 MB, 179 KB/s, 0 seconds passed
    ...9%, 0.07 MB, 201 KB/s, 0 seconds passed
    ...10%, 0.08 MB, 223 KB/s, 0 seconds passed
    ...11%, 0.09 MB, 246 KB/s, 0 seconds passed
    ...13%, 0.09 MB, 267 KB/s, 0 seconds passed
    ...14%, 0.10 MB, 290 KB/s, 0 seconds passed
    ...15%, 0.11 MB, 311 KB/s, 0 seconds passed
    ...16%, 0.12 MB, 331 KB/s, 0 seconds passed
    ...17%, 0.12 MB, 352 KB/s, 0 seconds passed
    ...18%, 0.13 MB, 374 KB/s, 0 seconds passed
    ...19%, 0.14 MB, 396 KB/s, 0 seconds passed
    ...20%, 0.15 MB, 417 KB/s, 0 seconds passed
    ...21%, 0.16 MB, 439 KB/s, 0 seconds passed
    ...22%, 0.16 MB, 461 KB/s, 0 seconds passed
 
    ...23%, 0.17 MB, 483 KB/s, 0 seconds passed
    ...24%, 0.18 MB, 504 KB/s, 0 seconds passed
    ...26%, 0.19 MB, 526 KB/s, 0 seconds passed
    ...27%, 0.20 MB, 548 KB/s, 0 seconds passed
    ...28%, 0.20 MB, 569 KB/s, 0 seconds passed
    ...29%, 0.21 MB, 591 KB/s, 0 seconds passed
    ...30%, 0.22 MB, 613 KB/s, 0 seconds passed
    ...31%, 0.23 MB, 634 KB/s, 0 seconds passed
    ...32%, 0.23 MB, 656 KB/s, 0 seconds passed
    ...33%, 0.24 MB, 677 KB/s, 0 seconds passed
    ...34%, 0.25 MB, 699 KB/s, 0 seconds passed
    ...35%, 0.26 MB, 720 KB/s, 0 seconds passed
    ...36%, 0.27 MB, 742 KB/s, 0 seconds passed
    ...38%, 0.27 MB, 759 KB/s, 0 seconds passed
    ...39%, 0.28 MB, 780 KB/s, 0 seconds passed
    ...40%, 0.29 MB, 802 KB/s, 0 seconds passed
    ...41%, 0.30 MB, 823 KB/s, 0 seconds passed
    ...42%, 0.30 MB, 845 KB/s, 0 seconds passed
    ...43%, 0.31 MB, 864 KB/s, 0 seconds passed
    ...44%, 0.32 MB, 885 KB/s, 0 seconds passed
    ...45%, 0.33 MB, 906 KB/s, 0 secon
 ds passed
    ...46%, 0.34 MB, 928 KB/s, 0 seconds passed
    ...47%, 0.34 MB, 949 KB/s, 0 seconds passed
    ...48%, 0.35 MB, 970 KB/s, 0 seconds passed
    ...49%, 0.36 MB, 992 KB/s, 0 seconds passed
    ...51%, 0.37 MB, 1013 KB/s, 0 seconds passed
    ...52%, 0.38 MB, 1034 KB/s, 0 seconds passed
    ...53%, 0.38 MB, 1056 KB/s, 0 seconds passed
    ...54%, 0.39 MB, 1077 KB/s, 0 seconds passed
    ...55%, 0.40 MB, 1098 KB/s, 0 seconds passed
    ...56%, 0.41 MB, 1119 KB/s, 0 seconds passed
    ...57%, 0.41 MB, 1140 KB/s, 0 seconds passed
    ...58%, 0.42 MB, 1162 KB/s, 0 seconds passed
    ...59%, 0.43 MB, 1183 KB/s, 0 seconds passed
    ...60%, 0.44 MB, 1203 KB/s, 0 seconds passed
    ...61%, 0.45 MB, 1225 KB/s, 0 seconds passed
    ...63%, 0.45 MB, 1246 KB/s, 0 seconds passed
    ...64%, 0.46 MB, 1267 KB/s, 0 seconds passed
    ...65%, 0.47 MB, 1288 KB/s, 0 seconds passed
    ...66%, 0.48 MB, 1309 KB/s, 0 seconds passed
    ...67%, 0.48 MB, 1330 KB/s, 0 seconds passed
    ...68%,
  0.49 MB, 1351 KB/s, 0 seconds passed
    ...69%, 0.50 MB, 1372 KB/s, 0 seconds passed
    ...70%, 0.51 MB, 1393 KB/s, 0 seconds passed
    ...71%, 0.52 MB, 1415 KB/s, 0 seconds passed
    ...72%, 0.52 MB, 1436 KB/s, 0 seconds passed
    ...73%, 0.53 MB, 1457 KB/s, 0 seconds passed
    ...74%, 0.54 MB, 1478 KB/s, 0 seconds passed
    ...76%, 0.55 MB, 1499 KB/s, 0 seconds passed
    ...77%, 0.55 MB, 1515 KB/s, 0 seconds passed
    ...78%, 0.56 MB, 1536 KB/s, 0 seconds passed
    ...79%, 0.57 MB, 1557 KB/s, 0 seconds passed
    ...80%, 0.58 MB, 1578 KB/s, 0 seconds passed
    ...81%, 0.59 MB, 1599 KB/s, 0 seconds passed
    ...82%, 0.59 MB, 1620 KB/s, 0 seconds passed
    ...83%, 0.60 MB, 1641 KB/s, 0 seconds passed
    ...84%, 0.61 MB, 1662 KB/s, 0 seconds passed
    ...85%, 0.62 MB, 1678 KB/s, 0 seconds passed
    ...86%, 0.62 MB, 1699 KB/s, 0 seconds passed
    ...87%, 0.63 MB, 1720 KB/s, 0 seconds passed
    ...89%, 0.64 MB, 1741 KB/s, 0 seconds passed
    ...90%, 0.65 MB, 1762 KB
 /s, 0 seconds passed
    ...91%, 0.66 MB, 1782 KB/s, 0 seconds passed
    ...92%, 0.66 MB, 1803 KB/s, 0 seconds passed
    ...93%, 0.67 MB, 1824 KB/s, 0 seconds passed
    ...94%, 0.68 MB, 1845 KB/s, 0 seconds passed
    ...95%, 0.69 MB, 1866 KB/s, 0 seconds passed
    ...96%, 0.70 MB, 1887 KB/s, 0 seconds passed
    ...97%, 0.70 MB, 1908 KB/s, 0 seconds passed
    ...98%, 0.71 MB, 1929 KB/s, 0 seconds passed
    ...99%, 0.72 MB, 1949 KB/s, 0 seconds passed
    ...100%, 0.73 MB, 1970 KB/s, 0 seconds passed
     Extracted 10 conv2d tasks:
     (1, 14, 14, 256, 512, 1, 1, 0, 0, 2, 2)
     (1, 28, 28, 128, 256, 1, 1, 0, 0, 2, 2)
diff --git a/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt b/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt
index be47aea..602c00f 100644
--- a/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt
+++ b/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt
@@ -243,8 +243,8 @@ The compilation steps are:
 
  .. code-block:: none
 
-
    ...12%, 0.01 MB, 227 KB/s, 0 seconds passed
    ...25%, 0.02 MB, 452 KB/s, 0 seconds passed
    ...38%, 0.02 MB, 671 KB/s, 0 seconds passed
    ...51%, 0.03 MB, 891 KB/s, 0 seconds passed
    ...64%, 0.04 MB, 967 KB/s, 0 seconds passed
    ...77%, 0.05 MB, 1157 KB/s, 0 seconds passed
    ...89%, 0.05 MB, 1345 KB/s, 0 seconds passed
    ...100%, 0.06 MB, 1526 KB/s, 0 seconds passed
-    resnet18_v1 inference graph built in 8.42s!
+
    ...12%, 0.01 MB, 42 KB/s, 0 seconds passed
    ...25%, 0.02 MB, 85 KB/s, 0 seconds passed
    ...38%, 0.02 MB, 127 KB/s, 0 seconds passed
    ...51%, 0.03 MB, 169 KB/s, 0 seconds passed
    ...64%, 0.04 MB, 206 KB/s, 0 seconds passed
    ...77%, 0.05 MB, 247 KB/s, 0 seconds passed
    ...89%, 0.05 MB, 288 KB/s, 0 seconds passed
    ...100%, 0.06 MB, 329 KB/s, 0 seconds passed
+    resnet18_v1 inference graph built in 8.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 df6ef2b..08db91b 100644
--- a/docs/_sources/vta/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/vta/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,6 +5,6 @@
 
 Computation times
 =================
-**00:29.344** total execution time for **vta_tutorials_frontend** files:
+**00:29.592** total execution time for **vta_tutorials_frontend** files:
 
-- **00:29.344**: :ref:`sphx_glr_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``)
+- **00:29.592**: :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 aa5bdcc..4331499 100644
--- a/docs/_sources/vta/tutorials/matrix_multiply.rst.txt
+++ b/docs/_sources/vta/tutorials/matrix_multiply.rst.txt
@@ -535,8 +535,8 @@ by the VTA runtime JIT compiler.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(int8), int8, [1, 16, 1, 16], []),
-                 B: Buffer(B_2: Pointer(int8), int8, [16, 16, 16, 16], []),
+      buffers = {B: Buffer(B_2: Pointer(int8), int8, [16, 16, 16, 16], []),
+                 C: Buffer(C_2: Pointer(int8), int8, [1, 16, 1, 16], []),
                  A: Buffer(A_2: Pointer(int8), int8, [1, 16, 1, 16], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [C_buf: Pointer(int32)] "storage_scope" = "local.acc_buffer";
diff --git a/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt b/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt
index 49947c6..95b98e9 100644
--- a/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt
+++ b/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt
@@ -219,6 +219,14 @@ manageable chunks.
 
 
 
+.. rst-class:: sphx-glr-script-out
+
+ Out:
+
+ .. code-block:: none
+
+    <class 'int'>
+
 
 
 Scheduling the Computation
@@ -252,8 +260,8 @@ Those include:
 
     primfn(data_1: handle, kernel_1: handle, res_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {kernel: Buffer(kernel_2: Pointer(int8), int8, [16, 16, 3, 3, 16, 16], []),
-                 res: Buffer(res_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
+      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
+                 kernel: Buffer(kernel_2: Pointer(int8), int8, [16, 16, 3, 3, 16, 16], []),
                  data: Buffer(data_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], [])}
       buffer_map = {data_1: data, kernel_1: kernel, res_1: res} {
       attr [data_buf: Pointer(int8)] "storage_scope" = "global";
diff --git a/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt b/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
index cc82bc9..dd5dcfc 100644
--- a/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
+++ b/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
@@ -156,6 +156,14 @@ manageable chunks.
 
 
 
+.. rst-class:: sphx-glr-script-out
+
+ Out:
+
+ .. code-block:: none
+
+    <class 'int'>
+
 
 
 Scheduling the Computation
@@ -494,8 +502,8 @@ and mapping the shift, and clipping computation to the vector ALU.
 
     primfn(data_1: handle, weight_1: handle, res_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 weight: Buffer(weight_2: Pointer(int8), int8, [64, 64, 16, 16], []),
+      buffers = {weight: Buffer(weight_2: Pointer(int8), int8, [64, 64, 16, 16], []),
+                 res: Buffer(res_2: Pointer(int8), int8, [1, 64, 1, 16], []),
                  data: Buffer(data_2: Pointer(int8), int8, [1, 64, 1, 16], [])}
       buffer_map = {data_1: data, weight_1: weight, res_1: res} {
       attr [res_gem: Pointer(int32)] "storage_scope" = "local.acc_buffer";
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 b9376cb..c37a09d 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:03.791** total execution time for **vta_tutorials_optimize** files:
+**00:03.753** total execution time for **vta_tutorials_optimize** files:
 
-- **00:03.253**: :ref:`sphx_glr_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)
-- **00:00.538**: :ref:`sphx_glr_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``)
+- **00:03.215**: :ref:`sphx_glr_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)
+- **00:00.537**: :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 924fcde..1e2b328 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.976** total execution time for **vta_tutorials** files:
+**00:00.975** total execution time for **vta_tutorials** files:
 
-- **00:00.499**: :ref:`sphx_glr_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``)
-- **00:00.477**: :ref:`sphx_glr_vta_tutorials_vta_get_started.py` (``vta_get_started.py``)
+- **00:00.496**: :ref:`sphx_glr_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``)
+- **00:00.479**: :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 ec845bc..cb0d678 100644
--- a/docs/_sources/vta/tutorials/vta_get_started.rst.txt
+++ b/docs/_sources/vta/tutorials/vta_get_started.rst.txt
@@ -300,8 +300,8 @@ After we construct the schedule, by default the schedule computes
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 B: Buffer(B_2: Pointer(int32), int32, [1, 64, 1, 16], []),
+      buffers = {B: Buffer(B_2: Pointer(int32), int32, [1, 64, 1, 16], []),
+                 C: Buffer(C_2: Pointer(int8), int8, [1, 64, 1, 16], []),
                  A: Buffer(A_2: Pointer(int32), int32, [1, 64, 1, 16], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [A_buf: Pointer(int32)] "storage_scope" = "global";
diff --git a/docs/_static/css/tlcpack_theme.css b/docs/_static/css/tlcpack_theme.css
index f15293d..1623f94 100644
--- a/docs/_static/css/tlcpack_theme.css
+++ b/docs/_static/css/tlcpack_theme.css
@@ -650,16 +650,12 @@ footer .btn.float-right:after {
 }
 @media (min-width: 1100px) {
   .wy-nav-side {
-    width: 400px;
+    width: 340px;
   }
 }
 .wy-nav-side .wy-side-scroll {
   padding-top: 45px;
-}
-@media (min-width: 1100px) {
-  .wy-nav-side .wy-side-scroll {
-    width: 420px;
-  }
+  width: auto;
 }
 @media only screen and (max-width : 991px) {
   .wy-nav-side .wy-side-scroll {
@@ -722,7 +718,7 @@ footer .btn.float-right:after {
 .wy-nav-side .wy-menu-vertical a {
   font-size: 15px;
   color: #252d5a;
-  line-height: 30px;
+  line-height: 20px;
   font-family: "PT Sans Caption", sans-serif;
   font-weight: 500;
   padding: 10px 0;
@@ -753,7 +749,7 @@ footer .btn.float-right:after {
   content: "";
   position: absolute;
   left: -15px;
-  top: 20px;
+  top: 16px;
   background: url(../img/show.svg) no-repeat;
   height: 8px;
   width: 8px;
@@ -831,7 +827,7 @@ footer .btn.float-right:after {
 }
 @media (min-width: 1100px) {
   .wy-nav-content-wrap {
-    margin-left: 400px;
+    margin-left: 340px;
   }
 }
 @media only screen and (max-width : 991px) {
diff --git a/docs/api/doxygen/analyzer_8h_source.html b/docs/api/doxygen/analyzer_8h_source.html
index cd2360b..01e13ad 100644
--- a/docs/api/doxygen/analyzer_8h_source.html
+++ b/docs/api/doxygen/analyzer_8h_source.html
@@ -89,7 +89,7 @@ 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:83</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:71</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:187</div></div>
@@ -102,10 +102,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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:180</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:286</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="namespacetvm_html_a1c4f14382b85bcfa57d9a3460db2354a"><div class="ttname"><a href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm::equal</a></div><div class="ttdeci">PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">equal </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:88</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:78</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:443</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:449</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:204</div></div>
 <div class="ttc" id="namespacetvm_1_1arith_html_ac6a38da661cd3681eb85abe1cd810422aad0250170b362173e1e2a2e3a6f13d20"><div class="ttname"><a href="namespacetvm_1_1arith.html#ac6a38da661cd3681eb85abe1cd810422aad0250170b362173e1e2a2e3a6f13d20">tvm::arith::kFloorDiv</a></div><div class="ttdoc">Floor division. </div><div class="ttdef"><b>Definition:</b> analyzer.h:59</div></div>
 <div class="ttc" id="namespacetvm_1_1arith_html_ac6a38da661cd3681eb85abe1cd810422aa6da1e276448319d25de8fe181872432"><div class="ttname"><a href="namespacetvm_1_1arith.html#ac6a38da661cd3681eb85abe1cd810422aa6da1e276448319d25de8fe181872432">tvm::arith::kTruncDiv</a></div><div class="ttdoc">Truncated division. </div><div class="ttdef"><b>Definition:</b> analyzer.h:57</div></div>
@@ -117,16 +118,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1arith_1_1Analyzer_html_a6cdf29adeceaa20b8c3dd7c26b92cd00"><div class="ttname"><a href="classtvm_1_1arith_1_1Analyzer.html#a6cdf29adeceaa20b8c3dd7c26b92cd00">tvm::arith::Analyzer::canonical_simplify</a></div><div class="ttdeci">CanonicalSimplifier canonical_simplify</div><div class="ttdoc">sub-analyzer canonical simplify </div><div class="ttdef"><b>Definition:</b> analyzer.h:401</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ModularSetAnalyzer_html"><div class="ttname"><a href="classtvm_1_1arith_1_1ModularSetAnalyzer.html">tvm::arith::ModularSetAnalyzer</a></div><div class="ttdoc">Analyzer to get modular information over expression. </div><div class="ttdef"><b>Definition:</b> analyzer.h:214</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ModularSetNode_html_afe63e5586712774be5935e86121431ad"><div class="ttname"><a href="classtvm_1_1arith_1_1ModularSetNode.html#afe63e5586712774be5935e86121431ad">tvm::arith::ModularSetNode::base</a></div><div class="ttdeci">int64_t base</div><div class="ttdoc">The base. </div><div class="ttdef"><b>Definition:</b> analyzer.h:185</div></div>
+<div class="ttc" id="namespacetvm_html_a0df5ca82d2c566f628ebb2f1e84a3fcb"><div class="ttname"><a href="namespacetvm.html#a0df5ca82d2c566f628ebb2f1e84a3fcb">tvm::max</a></div><div class="ttdeci">PrimExpr max(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">take maximum of two values </div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ConstIntBoundNode_html_a0d8f5f54f4f380f664016f466f100b3a"><div class="ttname"><a href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a0d8f5f54f4f380f664016f466f100b3a">tvm::arith::ConstIntBoundNode::kNegInf</a></div><div class="ttdeci">static const constexpr int64_t kNegInf</div><div class="ttdoc">Number to represent -inf. </div><div class="ttdef"><b>Definition:</b> analyzer.h:88</div></div>
 <div class="ttc" id="object_8h_html_ac6e7295a4999e2c8e4a2c990beca887a"><div class="ttname"><a href="object_8h.html#ac6e7295a4999e2c8e4a2c990beca887a">TVM_DEFINE_OBJECT_REF_METHODS</a></div><div class="ttdeci">#define TVM_DEFINE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)</div><div class="ttdef"><b>Definition:</b> object.h:700</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1ModularSetNode_html_a04a38e5207637fda175b031e3b569349"><div class="ttname"><a href="classtvm_1_1arith_1_1ModularSetNode.html#a04a38e5207637fda175b031e3b569349">tvm::arith::ModularSetNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const ModularSetNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> analyzer.h:192</div></div>
 <div class="ttc" id="classtvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</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 class="ttdef"><b>Definition:</b> with.h:57</div></div>
 <div class="ttc" id="namespacetvm_1_1arith_html_ac6a38da661cd3681eb85abe1cd810422"><div class="ttname"><a href="namespacetvm_1_1arith.html#ac6a38da661cd3681eb85abe1cd810422">tvm::arith::DivMode</a></div><div class="ttdeci">DivMode</div><div class="ttdef"><b>Definition:</b> analyzer.h:55</div></div>
-<div class="ttc" id="namespacetvm_html_ab49bad0808ba033343e72ba37b39af2e"><div class="ttname"><a href="namespacetvm.html#ab49bad0808ba033343e72ba37b39af2e">tvm::max</a></div><div class="ttdeci">PrimExpr max(PrimExpr a, PrimExpr b)</div><div class="ttdoc">take maximum of two values </div></div>
 <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:330</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:356</div></div>
-<div class="ttc" id="namespacetvm_1_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</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:70</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="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:395</div></div>
diff --git a/docs/api/doxygen/attr__registry__map_8h_source.html b/docs/api/doxygen/attr__registry__map_8h_source.html
index 6a72b2e..4899c49 100644
--- a/docs/api/doxygen/attr__registry__map_8h_source.html
+++ b/docs/api/doxygen/attr__registry__map_8h_source.html
@@ -89,7 +89,7 @@ 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:107</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:45</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>
diff --git a/docs/api/doxygen/autodiff_8h_source.html b/docs/api/doxygen/autodiff_8h_source.html
index d729a5b..ba9291a 100644
--- a/docs/api/doxygen/autodiff_8h_source.html
+++ b/docs/api/doxygen/autodiff_8h_source.html
@@ -91,7 +91,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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 [...]
 <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="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:88</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>
diff --git a/docs/api/doxygen/base_8h_source.html b/docs/api/doxygen/base_8h_source.html
index ffed212..ffcce37 100644
--- a/docs/api/doxygen/base_8h_source.html
+++ b/docs/api/doxygen/base_8h_source.html
@@ -89,13 +89,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">base.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="base_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 contri [...]
+<a href="base_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 contri [...]
 <div class="ttc" id="node_8h_html"><div class="ttname"><a href="node_8h.html">node.h</a></div><div class="ttdoc">Definitions and helper macros for IR/AST nodes. </div></div>
 <div class="ttc" id="span_8h_html"><div class="ttname"><a href="span_8h.html">span.h</a></div><div class="ttdoc">Span information for debugging purposes. </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="classtvm_1_1relay_1_1IdNode_html"><div class="ttname"><a href="classtvm_1_1relay_1_1IdNode.html">tvm::relay::IdNode</a></div><div class="ttdoc">The unique identifier of variables. </div><div class="ttdef"><b>Definition:</b> base.h:89</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_1SHashReducer_html"><div class="ttname"><a href="classtvm_1_1SHashReducer.html">tvm::SHashReducer</a></div><div class="ttdoc">A Reducer class to reduce the structural hash value. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:102</div></div>
+<div class="ttc" id="namespacetvm_html_a1c4f14382b85bcfa57d9a3460db2354a"><div class="ttname"><a href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm::equal</a></div><div class="ttdeci">PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">equal </div></div>
 <div class="ttc" id="namespacetvm_1_1relay_html_a14eacafcb803b0757e48654bb1bac655"><div class="ttname"><a href="namespacetvm_1_1relay.html#a14eacafcb803b0757e48654bb1bac655">tvm::relay::SourceName</a></div><div class="ttdeci">tvm::SourceName SourceName</div><div class="ttdef"><b>Definition:</b> base.h:64</div></div>
 <div class="ttc" id="classtvm_1_1relay_1_1RelayNode_html_aa071442f5359c04aef5692334ce784c7"><div class="ttname"><a href="classtvm_1_1relay_1_1RelayNode.html#aa071442f5359c04aef5692334ce784c7">tvm::relay::RelayNode::span</a></div><div class="ttdeci">Span span</div><div class="ttdoc">The location of the program in a SourceFragment can be null, check with span.defined() ...</div><div class="ttdef"><b>Definition:</b> base.h:75</div></div>
 <div class="ttc" id="classtvm_1_1relay_1_1IdNode_html_acce4f1d17cca9a833e935b9d6fb28fc8"><div class="ttname"><a href="classtvm_1_1relay_1_1IdNode.html#acce4f1d17cca9a833e935b9d6fb28fc8">tvm::relay::IdNode::name_hint</a></div><div class="ttdeci">String name_hint</div><div class="ttdoc">The name of the variable, this only acts as a hint to the user, and is not used for equality...</div><div class="ttdef"><b>Definition:</b> base.h:96</div></div>
@@ -114,7 +115,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1SpanNode_html"><div class="ttname"><a href="classtvm_1_1SpanNode.html">tvm::SpanNode</a></div><div class="ttdoc">Stores locations in frontend source that generated a node. </div><div class="ttdef"><b>Definition:</b> span.h:80</div></div>
 <div class="ttc" id="classtvm_1_1SHashReducer_html_ab9cf0c638238f55dd5b6f155d65f92ef"><div class="ttname"><a href="classtvm_1_1SHashReducer.html#ab9cf0c638238f55dd5b6f155d65f92ef">tvm::SHashReducer::FreeVarHashImpl</a></div><div class="ttdeci">void FreeVarHashImpl(const runtime::Object *var) const </div><div class="ttdoc">Implementation for hash for a free var. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:185</div></div>
 <div class="ttc" id="object_8h_html_a3aea9b3f65aeb9150c0fa7800e5573c6"><div class="ttname"><a href="object_8h.html#a3aea9b3f65aeb9150c0fa7800e5573c6">TVM_DECLARE_FINAL_OBJECT_INFO</a></div><div class="ttdeci">#define TVM_DECLARE_FINAL_OBJECT_INFO(TypeName, ParentType)</div><div class="ttdoc">helper macro to declare type information in a final class. </div><div class="ttdef"><b>Definition:</b> object.h:658</div></div>
-<div class="ttc" id="namespacetvm_1_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</div></div>
 <div class="ttc" id="classtvm_1_1relay_1_1IdNode_html_ac65dc1814b202297c6aa8a79bfe0e786"><div class="ttname"><a href="classtvm_1_1relay_1_1IdNode.html#ac65dc1814b202297c6aa8a79bfe0e786">tvm::relay::IdNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const IdNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> base.h:100</div></div>
 <div class="ttc" id="namespacetvm_1_1relay_html_a7d0fa6578e97d0d64b08865f94f04827"><div class="ttname"><a href="namespacetvm_1_1relay.html#a7d0fa6578e97d0d64b08865f94f04827">tvm::relay::SpanNode</a></div><div class="ttdeci">tvm::SpanNode SpanNode</div><div class="ttdef"><b>Definition:</b> base.h:66</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:109</div></div>
diff --git a/docs/api/doxygen/bound_8h_source.html b/docs/api/doxygen/bound_8h_source.html
index be247cb..a1f585c 100644
--- a/docs/api/doxygen/bound_8h_source.html
+++ b/docs/api/doxygen/bound_8h_source.html
@@ -94,7 +94,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="namespacetvm_1_1arith_html_af0860828b70ea8ff0d2f7c036c37afd5"><div class="ttname"><a href="namespacetvm_1_1arith.html#af0860828b70ea8ff0d2f7c036c37afd5">tvm::arith::DeduceBound</a></div><div class="ttdeci">IntSet DeduceBound(PrimExpr v, PrimExpr cond, const Map&lt; Var, IntSet &gt; &amp;hint_map, const Map&lt; Var, IntSet &gt; &amp;relax_map)</div><div class="ttdoc">Deduce the bound of the target variable in a expression, give the domain of each variables. Return und [...]
 <div class="ttc" id="stmt_8h_html"><div class="ttname"><a href="stmt_8h.html">stmt.h</a></div><div class="ttdoc">TIR statements. </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_1tir_html_a8277e2a3d81a80a4776705673df51e0a"><div class="ttname"><a href="namespacetvm_1_1tir.html#a8277e2a3d81a80a4776705673df51e0a">tvm::tir::Region</a></div><div class="ttdeci">Array&lt; Range &gt; Region</div><div class="ttdef"><b>Definition:</b> var.h:162</div></div>
+<div class="ttc" id="namespacetvm_1_1tir_html_a8277e2a3d81a80a4776705673df51e0a"><div class="ttname"><a href="namespacetvm_1_1tir.html#a8277e2a3d81a80a4776705673df51e0a">tvm::tir::Region</a></div><div class="ttdeci">Array&lt; Range &gt; Region</div><div class="ttdef"><b>Definition:</b> var.h:163</div></div>
 <div class="ttc" id="namespacetvm_1_1arith_html_a7641fa29ca6d8941f2696aacccf23998"><div class="ttname"><a href="namespacetvm_1_1arith.html#a7641fa29ca6d8941f2696aacccf23998">tvm::arith::DomainTouched</a></div><div class="ttdeci">Region DomainTouched(const Stmt &amp;body, const tir::Buffer &amp;buffer, bool consider_loads, bool consider_stores)</div><div class="ttdoc">Infer a regular domain that covers all the calls or provides within the given statement. </div></div>
 <div class="ttc" id="node_2container_8h_html"><div class="ttname"><a href="node_2container_8h.html">container.h</a></div><div class="ttdoc">Array/Map container in the DSL graph. </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>
diff --git a/docs/api/doxygen/broadcast_8h_source.html b/docs/api/doxygen/broadcast_8h_source.html
index 5f55bd0..d81612d 100644
--- a/docs/api/doxygen/broadcast_8h_source.html
+++ b/docs/api/doxygen/broadcast_8h_source.html
@@ -89,41 +89,40 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">broadcast.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="broadcast_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 [...]
+<a href="broadcast_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="namespacetvm_1_1topi_html_a56b9392fff0e4e7977017974affdbb99"><div class="ttname"><a href="namespacetvm_1_1topi.html#a56b9392fff0e4e7977017974affdbb99">tvm::topi::bitwise_and</a></div><div class="ttdeci">tvm::PrimExpr bitwise_and(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:155</div></div>
+<div class="ttc" id="namespacetvm_html_aac2abc149c1a47944c37b560181b15c0"><div class="ttname"><a href="namespacetvm.html#aac2abc149c1a47944c37b560181b15c0">tvm::min</a></div><div class="ttdeci">PrimExpr min(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">take minimum of two values </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a7ac1dc0d99ce93090a4cdf90ab19d4b8"><div class="ttname"><a href="namespacetvm_1_1topi.html#a7ac1dc0d99ce93090a4cdf90ab19d4b8">tvm::topi::minimum</a></div><div class="ttdeci">tvm::PrimExpr minimum(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:316</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a4ab87f8165493b3fa0acc00a83c0a2e4"><div class="ttname"><a href="namespacetvm_1_1topi.html#a4ab87f8165493b3fa0acc00a83c0a2e4">tvm::topi::greater_equal</a></div><div class="ttdeci">tvm::PrimExpr greater_equal(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:422</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_ad05e0e9463b620af2f26f94ca284e915"><div class="ttname"><a href="namespacetvm_1_1topi.html#ad05e0e9463b620af2f26f94ca284e915">tvm::topi::floor</a></div><div class="ttdeci">Tensor floor(const Tensor &amp;x, std::string name=&quot;T_&quot;&quot;floor&quot;, std::string tag=kElementWise)</div><div class="ttdef"><b>Definition:</b> elemwise.h:56</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a582bc98a3956894e8e90a3a3da929568"><div class="ttname"><a href="namespacetvm_1_1topi.html#a582bc98a3956894e8e90a3a3da929568">tvm::topi::divide</a></div><div class="ttdeci">tvm::PrimExpr divide(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:239</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="namespacetvm_html_a880f0cd15891153430b669f0b4eca2fe"><div class="ttname"><a href="namespacetvm.html#a880f0cd15891153430b669f0b4eca2fe">tvm::pow</a></div><div class="ttdeci">PrimExpr pow(PrimExpr x, PrimExpr y)</div><div class="ttdoc">Calculate power(x, y) </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a28aa974fb51f2e262413811cab7f969e"><div class="ttname"><a href="namespacetvm_1_1topi.html#a28aa974fb51f2e262413811cab7f969e">tvm::topi::less</a></div><div class="ttdeci">tvm::PrimExpr less(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:383</div></div>
-<div class="ttc" id="namespacetvm_html_ae3fd62ca6008d6f20e4845426ec47aa6"><div class="ttname"><a href="namespacetvm.html#ae3fd62ca6008d6f20e4845426ec47aa6">tvm::truncmod</a></div><div class="ttdeci">PrimExpr truncmod(PrimExpr a, PrimExpr b)</div><div class="ttdoc">compute the remainder of truncdiv </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_af2f8fcdbbf2ebc9e4acc822325f5c768"><div class="ttname"><a href="namespacetvm_1_1topi.html#af2f8fcdbbf2ebc9e4acc822325f5c768">tvm::topi::logical_xor</a></div><div class="ttdeci">tvm::PrimExpr logical_xor(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:142</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a23bd66c06c282d7eea39108d503f95a8"><div class="ttname"><a href="namespacetvm_1_1topi.html#a23bd66c06c282d7eea39108d503f95a8">tvm::topi::not_equal</a></div><div class="ttdeci">tvm::PrimExpr not_equal(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:409</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html_aa026b914ee05f81b6c20130b8905f257"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html#aa026b914ee05f81b6c20130b8905f257">tvm::runtime::Array::push_back</a></div><div class="ttdeci">void push_back(const T &amp;item)</div><div class="ttdoc">push a new item to the back of the list </div><div class="ttdef"><b>Definition:</b> container.h:726</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a093080eceeaae43a605b8c4e638c9471"><div class="ttname"><a href="namespacetvm_1_1topi.html#a093080eceeaae43a605b8c4e638c9471">tvm::topi::floor_mod</a></div><div class="ttdeci">tvm::PrimExpr floor_mod(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:290</div></div>
 <div class="ttc" id="constant__utils_8h_html"><div class="ttname"><a href="constant__utils_8h.html">constant_utils.h</a></div><div class="ttdoc">Utility functions for handling constants in TVM expressions. </div></div>
-<div class="ttc" id="namespacetvm_html_a9da780393e228969f77aa7550520a582"><div class="ttname"><a href="namespacetvm.html#a9da780393e228969f77aa7550520a582">tvm::min</a></div><div class="ttdeci">PrimExpr min(PrimExpr a, PrimExpr b)</div><div class="ttdoc">take minimum of two values </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a13aaf23f0ab77f1ed4a7d4b7816bf210"><div class="ttname"><a href="namespacetvm_1_1topi.html#a13aaf23f0ab77f1ed4a7d4b7816bf210">tvm::topi::kBroadcast</a></div><div class="ttdeci">constexpr auto kBroadcast</div><div class="ttdef"><b>Definition:</b> tags.h:36</div></div>
-<div class="ttc" id="namespacetvm_html_a25cb3bf64427a16a93529d0a5c40b6de"><div class="ttname"><a href="namespacetvm.html#a25cb3bf64427a16a93529d0a5c40b6de">tvm::floordiv</a></div><div class="ttdeci">PrimExpr floordiv(PrimExpr a, PrimExpr b)</div><div class="ttdoc">compute floor(a / b) </div></div>
+<div class="ttc" id="namespacetvm_html_a8683adb542beba8ecc69354e50d62ef6"><div class="ttname"><a href="namespacetvm.html#a8683adb542beba8ecc69354e50d62ef6">tvm::floormod</a></div><div class="ttdeci">PrimExpr floormod(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">compute the remainder of floordiv </div></div>
+<div class="ttc" id="namespacetvm_html_a16f9cd9219b505e2cc05c5a7558ac61f"><div class="ttname"><a href="namespacetvm.html#a16f9cd9219b505e2cc05c5a7558ac61f">tvm::div</a></div><div class="ttdeci">PrimExpr div(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">compute division in C semantics. </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contigious sequence of ObjectRefs. </div><div class="ttdef"><b>Definition:</b> container.h:560</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a5a5d59f85892da838847bced0990cb38"><div class="ttname"><a href="namespacetvm_1_1topi.html#a5a5d59f85892da838847bced0990cb38">tvm::topi::multiply</a></div><div class="ttdeci">tvm::PrimExpr multiply(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:225</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a1bb4f1456d810331fc553a666dc673b0"><div class="ttname"><a href="namespacetvm_1_1topi.html#a1bb4f1456d810331fc553a666dc673b0">tvm::topi::bitwise_or</a></div><div class="ttdeci">tvm::PrimExpr bitwise_or(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:169</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_aa7d7e1d5966e6de6b29c902458a421e8"><div class="ttname"><a href="namespacetvm_1_1topi.html#aa7d7e1d5966e6de6b29c902458a421e8">tvm::topi::add</a></div><div class="ttdeci">tvm::PrimExpr add(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:197</div></div>
 <div class="ttc" id="broadcast_8h_html_acb867d9c8250a748f59b5a47711b495a"><div class="ttname"><a href="broadcast_8h.html#acb867d9c8250a748f59b5a47711b495a">TOPI_DEFINE_BCAST_OP</a></div><div class="ttdeci">#define TOPI_DEFINE_BCAST_OP(Name, ComputeRule)</div><div class="ttdef"><b>Definition:</b> broadcast.h:72</div></div>
+<div class="ttc" id="namespacetvm_html_a0df5ca82d2c566f628ebb2f1e84a3fcb"><div class="ttname"><a href="namespacetvm.html#a0df5ca82d2c566f628ebb2f1e84a3fcb">tvm::max</a></div><div class="ttdeci">PrimExpr max(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">take maximum of two values </div></div>
 <div class="ttc" id="broadcast_8h_html_a7f3943bdaba8836ffa7d14457a7d730c"><div class="ttname"><a href="broadcast_8h.html#a7f3943bdaba8836ffa7d14457a7d730c">TOPI_DEFINE_OP_OVERLOAD</a></div><div class="ttdeci">#define TOPI_DEFINE_OP_OVERLOAD(Name, OpName)</div><div class="ttdef"><b>Definition:</b> broadcast.h:92</div></div>
-<div class="ttc" id="namespacetvm_html_a40fcc9952e1ff01a76f3b75dbd368fc1"><div class="ttname"><a href="namespacetvm.html#a40fcc9952e1ff01a76f3b75dbd368fc1">tvm::div</a></div><div class="ttdeci">PrimExpr div(PrimExpr a, PrimExpr b)</div><div class="ttdoc">compute division in C semantics. </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a9673b9caffb46404b566c3f04a492dfe"><div class="ttname"><a href="namespacetvm_1_1topi.html#a9673b9caffb46404b566c3f04a492dfe">tvm::topi::right_shift</a></div><div class="ttdeci">tvm::PrimExpr right_shift(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:356</div></div>
-<div class="ttc" id="namespacetvm_html_ab49bad0808ba033343e72ba37b39af2e"><div class="ttname"><a href="namespacetvm.html#ab49bad0808ba033343e72ba37b39af2e">tvm::max</a></div><div class="ttdeci">PrimExpr max(PrimExpr a, PrimExpr b)</div><div class="ttdoc">take maximum of two values </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a3030be37f9db43ef90a5b2cc0997acd6"><div class="ttname"><a href="namespacetvm_1_1topi.html#a3030be37f9db43ef90a5b2cc0997acd6">tvm::topi::subtract</a></div><div class="ttdeci">tvm::PrimExpr subtract(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:211</div></div>
+<div class="ttc" id="namespacetvm_html_a2428ea0e23bd9f7218aebd066bb2cd88"><div class="ttname"><a href="namespacetvm.html#a2428ea0e23bd9f7218aebd066bb2cd88">tvm::truncmod</a></div><div class="ttdeci">PrimExpr truncmod(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">compute the remainder of truncdiv </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a81fb1c1bf730c4824470aac242c083ff"><div class="ttname"><a href="namespacetvm_1_1topi.html#a81fb1c1bf730c4824470aac242c083ff">tvm::topi::logical_and</a></div><div class="ttdeci">tvm::PrimExpr logical_and(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:114</div></div>
+<div class="ttc" id="namespacetvm_html_af347f10e3572adb2d74ba4a53777db2b"><div class="ttname"><a href="namespacetvm.html#af347f10e3572adb2d74ba4a53777db2b">tvm::floordiv</a></div><div class="ttdeci">PrimExpr floordiv(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">compute floor(a / b) </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="namespacetvm_1_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a6a04e135b576e7b4a17047168535c594"><div class="ttname"><a href="namespacetvm_1_1topi.html#a6a04e135b576e7b4a17047168535c594">tvm::topi::floor_divide</a></div><div class="ttdeci">tvm::PrimExpr floor_divide(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:258</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_ab2162aa07f9ffde1e507c3784337afcc"><div class="ttname"><a href="namespacetvm_1_1topi.html#ab2162aa07f9ffde1e507c3784337afcc">tvm::topi::bitwise_xor</a></div><div class="ttdeci">tvm::PrimExpr bitwise_xor(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:183</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_afd64bc3e27dfc97002d3add5d7ce4174"><div class="ttname"><a href="namespacetvm_1_1topi.html#afd64bc3e27dfc97002d3add5d7ce4174">tvm::topi::maximum</a></div><div class="ttdeci">tvm::PrimExpr maximum(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:303</div></div>
-<div class="ttc" id="namespacetvm_html_a74b2e0fb912a82f974e2b652f7de8d34"><div class="ttname"><a href="namespacetvm.html#a74b2e0fb912a82f974e2b652f7de8d34">tvm::floormod</a></div><div class="ttdeci">PrimExpr floormod(PrimExpr a, PrimExpr b)</div><div class="ttdoc">compute the remainder of floordiv </div></div>
 <div class="ttc" id="tags_8h_html"><div class="ttname"><a href="tags_8h.html">tags.h</a></div><div class="ttdoc">External function interface to rocBLAS libraries. </div></div>
 <div class="ttc" id="namespacetvm_1_1te_html_afe4f57aeb3dd5ae9c0b58135e14d67ca"><div class="ttname"><a href="namespacetvm_1_1te.html#afe4f57aeb3dd5ae9c0b58135e14d67ca">tvm::te::compute</a></div><div class="ttdeci">Tensor compute(Array&lt; PrimExpr &gt; shape, FCompute fcompute, std::string name=&quot;tensor&quot;, std::string tag=&quot;&quot;, Map&lt; String, ObjectRef &gt; attrs={})</div><div class="ttdoc">Construct a new tensor by computing over shape, using the computation rule: resul [...]
 <div class="ttc" id="namespacetvm_1_1topi_html_a545c1404478aba2e2a44c77438da9fd5"><div class="ttname"><a href="namespacetvm_1_1topi.html#a545c1404478aba2e2a44c77438da9fd5">tvm::topi::broadcast_to</a></div><div class="ttdeci">tvm::te::Tensor broadcast_to(const tvm::te::Tensor &amp;t, const tvm::Array&lt; tvm::PrimExpr &gt; &amp;output_shape, std::string name=&quot;T_broadcast_to&quot;, std::string tag=kBroadcast)</div><div class="ttdoc">Creates an operation that broadcasts a tensor into a [...]
@@ -132,6 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="namespacetvm_1_1topi_html_ae23dc3372703de7e9d91b76c49b81ae0"><div class="ttname"><a href="namespacetvm_1_1topi.html#ae23dc3372703de7e9d91b76c49b81ae0">tvm::topi::power</a></div><div class="ttdeci">tvm::PrimExpr power(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:329</div></div>
 <div class="ttc" id="detail_2broadcast_8h_html"><div class="ttname"><a href="detail_2broadcast_8h.html">broadcast.h</a></div><div class="ttdoc">Detail broadcast. </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a46057526edd4bbd0a291edf7f0c863b4"><div class="ttname"><a href="namespacetvm_1_1topi.html#a46057526edd4bbd0a291edf7f0c863b4">tvm::topi::left_shift</a></div><div class="ttdeci">tvm::PrimExpr left_shift(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:342</div></div>
+<div class="ttc" id="namespacetvm_html_a5f6532d705be039030e980bbbf81b096"><div class="ttname"><a href="namespacetvm.html#a5f6532d705be039030e980bbbf81b096">tvm::pow</a></div><div class="ttdeci">PrimExpr pow(PrimExpr x, PrimExpr y, Span span=Span())</div><div class="ttdoc">Calculate power(x, y) </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a40dc56569ff5aad86ca82762ffb11180"><div class="ttname"><a href="namespacetvm_1_1topi.html#a40dc56569ff5aad86ca82762ffb11180">tvm::topi::logical_or</a></div><div class="ttdeci">tvm::PrimExpr logical_or(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:128</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
diff --git a/docs/api/doxygen/buffer_8h_source.html b/docs/api/doxygen/buffer_8h_source.html
index 5e22272..54bfee7 100644
--- a/docs/api/doxygen/buffer_8h_source.html
+++ b/docs/api/doxygen/buffer_8h_source.html
@@ -89,7 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">buffer.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="buffer_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 cont [...]
+<a href="buffer_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 cont [...]
 <div class="ttc" id="namespacetvm_1_1relay_html_af40ca6124bc2e88f2323eeb79d326cc0"><div class="ttname"><a href="namespacetvm_1_1relay.html#af40ca6124bc2e88f2323eeb79d326cc0">tvm::relay::Span</a></div><div class="ttdeci">tvm::Span Span</div><div class="ttdef"><b>Definition:</b> base.h:65</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a2ce595dfcf7a726c7e0f86a6942d2568"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a2ce595dfcf7a726c7e0f86a6942d2568">tvm::tir::BufferNode::buffer_type</a></div><div class="ttdeci">BufferType buffer_type</div><div class="ttdoc">buffer type </div><div class="ttdef"><b>Definition:</b> buffer.h:79</div></div>
 <div class="ttc" id="namespacetvm_1_1tir_html_a9ac05a14db42ca73da1d3945e7ce2fd1"><div class="ttname"><a href="namespacetvm_1_1tir.html#a9ac05a14db42ca73da1d3945e7ce2fd1">tvm::tir::BufferType</a></div><div class="ttdeci">BufferType</div><div class="ttdoc">buffer type </div><div class="ttdef"><b>Definition:</b> buffer.h:40</div></div>
@@ -97,16 +97,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_aa89852936d3a026cea1470c4c7f27488"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#aa89852936d3a026cea1470c4c7f27488">tvm::tir::BufferNode::offset_factor</a></div><div class="ttdeci">int offset_factor</div><div class="ttdoc">Factor of elem_offset field, elem_offset is guaranteed to be multiple of offset_factor. </div><div class="ttdef"><b>Definition:</b> buffer.h:77</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html">tvm::tir::BufferNode</a></div><div class="ttdoc">Node to represent a buffer. </div><div class="ttdef"><b>Definition:</b> buffer.h:47</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a9c4a74fd95cc9cd80f87b3f13bcdb8b3"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a9c4a74fd95cc9cd80f87b3f13bcdb8b3">tvm::tir::BufferNode::TVM_DECLARE_FINAL_OBJECT_INFO</a></div><div class="ttdeci">TVM_DECLARE_FINAL_OBJECT_INFO(BufferNode, Object)</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a99243a4cbf931616fc7193c9b8bfc511"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a99243a4cbf931616fc7193c9b8bfc511">tvm::tir::BufferNode::_type_has_method_shash_reduce</a></div><div class="ttdeci">static constexpr const bool _type_has_method_shash_reduce</div><div class="ttdef"><b>Definition:</b> buffer.h:128</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a99243a4cbf931616fc7193c9b8bfc511"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a99243a4cbf931616fc7193c9b8bfc511">tvm::tir::BufferNode::_type_has_method_shash_reduce</a></div><div class="ttdeci">static constexpr const bool _type_has_method_shash_reduce</div><div class="ttdef"><b>Definition:</b> buffer.h:129</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="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="classtvm_1_1tir_1_1DataProducerNode_html_a0d931fb7641c7e72f7fea25bb8acf9a8"><div class="ttname"><a href="classtvm_1_1tir_1_1DataProducerNode.html#a0d931fb7641c7e72f7fea25bb8acf9a8">tvm::tir::DataProducerNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> buffer.h:235</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1DataProducerNode_html_a0d931fb7641c7e72f7fea25bb8acf9a8"><div class="ttname"><a href="classtvm_1_1tir_1_1DataProducerNode.html#a0d931fb7641c7e72f7fea25bb8acf9a8">tvm::tir::DataProducerNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> buffer.h:236</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_1SHashReducer_html"><div class="ttname"><a href="classtvm_1_1SHashReducer.html">tvm::SHashReducer</a></div><div class="ttdoc">A Reducer class to reduce the structural hash value. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:102</div></div>
 <div class="ttc" id="var_8h_html"><div class="ttname"><a href="var_8h.html">var.h</a></div><div class="ttdoc">Variables in the TIR. </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="namespacetvm_html_a1c4f14382b85bcfa57d9a3460db2354a"><div class="ttname"><a href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm::equal</a></div><div class="ttdeci">PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">equal </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:88</div></div>
 <div class="ttc" id="classtvm_1_1SHashReducer_html_a86a3513ec9866c77c59231663caa28c9"><div class="ttname"><a href="classtvm_1_1SHashReducer.html#a86a3513ec9866c77c59231663caa28c9">tvm::SHashReducer::DefHash</a></div><div class="ttdeci">void DefHash(const ObjectRef &amp;key) const </div><div class="ttdoc">Push hash of key to the current sequence of hash values. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:179</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a438cd7b650f50f8b55fbf0948494cdbe"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a438cd7b650f50f8b55fbf0948494cdbe">tvm::tir::BufferNode::_type_has_method_sequal_reduce</a></div><div class="ttdeci">static constexpr const bool _type_has_method_sequal_reduce</div><div class="ttdef"><b>Definition:</b> buffer.h:127</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a438cd7b650f50f8b55fbf0948494cdbe"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a438cd7b650f50f8b55fbf0948494cdbe">tvm::tir::BufferNode::_type_has_method_sequal_reduce</a></div><div class="ttdeci">static constexpr const bool _type_has_method_sequal_reduce</div><div class="ttdef"><b>Definition:</b> buffer.h:128</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a92b84a76c975399a028b61e4b99ac87b"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a92b84a76c975399a028b61e4b99ac87b">tvm::tir::BufferNode::elem_offset</a></div><div class="ttdeci">PrimExpr elem_offset</div><div class="ttdoc">The offset in terms of number of dtype elements (including lanes) </div><div class="ttdef"><b>Definition:</b> buffer.h:65</div></div>
 <div class="ttc" id="namespacetvm_1_1tir_html_a221583b0062973aea920279d175ac70b"><div class="ttname"><a href="namespacetvm_1_1tir.html#a221583b0062973aea920279d175ac70b">tvm::tir::decl_buffer</a></div><div class="ttdeci">Buffer decl_buffer(Array&lt; PrimExpr &gt; shape, DataType dtype=DataType::Float(32), String name=&quot;buffer&quot;, Span span=Span())</div><div class="ttdoc">Construct a new buffer given shape, and dtype. </div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a5372baafb343f5fb263f5507b079412e"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a5372baafb343f5fb263f5507b079412e">tvm::tir::BufferNode::shape</a></div><div class="ttdeci">Array&lt; PrimExpr &gt; shape</div><div class="ttdoc">The shape of the buffer. </div><div class="ttdef"><b>Definition:</b> buffer.h:58</div></div>
@@ -116,27 +117,26 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1runtime_1_1DataType_html_a237a714a6a16e14aa01fa4ac52426551"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html#a237a714a6a16e14aa01fa4ac52426551">tvm::runtime::DataType::Float</a></div><div class="ttdeci">static DataType Float(int bits, int lanes=1)</div><div class="ttdoc">Construct an uint type. </div><div class="ttdef"><b>Definition:</b> data_type.h:168</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1DataType_html_aebad9f7235dd20af649fb5c2113797b8"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html#aebad9f7235dd20af649fb5c2113797b8">tvm::runtime::DataType::Handle</a></div><div class="ttdeci">static DataType Handle(int bits=64, int lanes=1)</div><div class="ttdoc">Construct a handle type. </div><div class="ttdef"><b>Definition:</b> data_type.h:181</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a1abac917e1de0b3c43774ee94477016b"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a1abac917e1de0b3c43774ee94477016b">tvm::tir::BufferNode::BufferNode</a></div><div class="ttdeci">BufferNode()</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> buffer.h:86</div></div>
-<div class="ttc" id="classtvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode. </div><div class="ttdef"><b>Definition:</b> expr.h:261</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a807f590bb261c7da322ee27f4037d20e"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a807f590bb261c7da322ee27f4037d20e">tvm::tir::BufferNode::DefaultIndexType</a></div><div class="ttdeci">DataType DefaultIndexType() const </div><div class="ttdef"><b>Definition:</b> buffer.h:122</div></div>
+<div class="ttc" id="classtvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode. </div><div class="ttdef"><b>Definition:</b> expr.h:262</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a807f590bb261c7da322ee27f4037d20e"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a807f590bb261c7da322ee27f4037d20e">tvm::tir::BufferNode::DefaultIndexType</a></div><div class="ttdeci">DataType DefaultIndexType() const </div><div class="ttdef"><b>Definition:</b> buffer.h:123</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1Stmt_html"><div class="ttname"><a href="classtvm_1_1tir_1_1Stmt.html">tvm::tir::Stmt</a></div><div class="ttdoc">Container of all statements. </div><div class="ttdef"><b>Definition:</b> stmt.h:57</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a34765bcd330d69b8e4c2ca69f4a9a838"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a34765bcd330d69b8e4c2ca69f4a9a838">tvm::tir::BufferNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> buffer.h:110</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a34765bcd330d69b8e4c2ca69f4a9a838"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a34765bcd330d69b8e4c2ca69f4a9a838">tvm::tir::BufferNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> buffer.h:111</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:1178</div></div>
 <div class="ttc" id="object_8h_html_ac6e7295a4999e2c8e4a2c990beca887a"><div class="ttname"><a href="object_8h.html#ac6e7295a4999e2c8e4a2c990beca887a">TVM_DEFINE_OBJECT_REF_METHODS</a></div><div class="ttdeci">#define TVM_DEFINE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)</div><div class="ttdef"><b>Definition:</b> object.h:700</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a0e6d46caeb077135737d4b02185c4498"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a0e6d46caeb077135737d4b02185c4498">tvm::tir::BufferNode::name</a></div><div class="ttdeci">String name</div><div class="ttdoc">optional name of the buffer </div><div class="ttdef"><b>Definition:</b> buffer.h:68</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1DataProducerNode_html_aeb887c35d09af934251932b0120f9dfa"><div class="ttname"><a href="classtvm_1_1tir_1_1DataProducerNode.html#aeb887c35d09af934251932b0120f9dfa">tvm::tir::DataProducerNode::~DataProducerNode</a></div><div class="ttdeci">virtual ~DataProducerNode()</div><div class="ttdoc">destructor. </div><div class="ttdef"><b>Definition:</b> buffer.h:213</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1DataProducerNode_html_aeb887c35d09af934251932b0120f9dfa"><div class="ttname"><a href="classtvm_1_1tir_1_1DataProducerNode.html#aeb887c35d09af934251932b0120f9dfa">tvm::tir::DataProducerNode::~DataProducerNode</a></div><div class="ttdeci">virtual ~DataProducerNode()</div><div class="ttdoc">destructor. </div><div class="ttdef"><b>Definition:</b> buffer.h:214</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_ac18ddd10b79a30ae57d3a8283686259d"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#ac18ddd10b79a30ae57d3a8283686259d">tvm::tir::BufferNode::strides</a></div><div class="ttdeci">Array&lt; PrimExpr &gt; strides</div><div class="ttdoc">The strides of each dimension This can be an empty array, indicating array is contiguous. </div><div class="ttdef"><b>Definition:</b> buffer.h:63</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a13fc164e1b65cee741b4895df6316a4a"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a13fc164e1b65cee741b4895df6316a4a">tvm::tir::BufferNode::span</a></div><div class="ttdeci">Span span</div><div class="ttdoc">Span that points to the original source code. Reserved debug information. </div><div class="ttdef"><b>Definition:</b> buffer.h:84</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1DataProducer_html"><div class="ttname"><a href="classtvm_1_1tir_1_1DataProducer.html">tvm::tir::DataProducer</a></div><div class="ttdoc">Managed reference to DataProducerNode. </div><div class="ttdef"><b>Definition:</b> buffer.h:247</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1Buffer_html"><div class="ttname"><a href="classtvm_1_1tir_1_1Buffer.html">tvm::tir::Buffer</a></div><div class="ttdoc">Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types...</div><div class="ttdef"><b>Definition:</b> buffer.h:137</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a10305e404bd42b5b46ddb1944ce2c231"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a10305e404bd42b5b46ddb1944ce2c231">tvm::tir::BufferNode::_type_key</a></div><div class="ttdeci">static constexpr const char * _type_key</div><div class="ttdef"><b>Definition:</b> buffer.h:126</div></div>
-<div class="ttc" id="namespacetvm_1_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1DataProducer_html"><div class="ttname"><a href="classtvm_1_1tir_1_1DataProducer.html">tvm::tir::DataProducer</a></div><div class="ttdoc">Managed reference to DataProducerNode. </div><div class="ttdef"><b>Definition:</b> buffer.h:248</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1Buffer_html"><div class="ttname"><a href="classtvm_1_1tir_1_1Buffer.html">tvm::tir::Buffer</a></div><div class="ttdoc">Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types...</div><div class="ttdef"><b>Definition:</b> buffer.h:138</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a10305e404bd42b5b46ddb1944ce2c231"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a10305e404bd42b5b46ddb1944ce2c231">tvm::tir::BufferNode::_type_key</a></div><div class="ttdeci">static constexpr const char * _type_key</div><div class="ttdef"><b>Definition:</b> buffer.h:127</div></div>
 <div class="ttc" id="node_2container_8h_html"><div class="ttname"><a href="node_2container_8h.html">container.h</a></div><div class="ttdoc">Array/Map container in the DSL graph. </div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1DataProducerNode_html"><div class="ttname"><a href="classtvm_1_1tir_1_1DataProducerNode.html">tvm::tir::DataProducerNode</a></div><div class="ttdoc">Base node for data producers. </div><div class="ttdef"><b>Definition:</b> buffer.h:210</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1DataProducerNode_html_aa67efe80a2eac8538728e5e8c3afeb51"><div class="ttname"><a href="classtvm_1_1tir_1_1DataProducerNode.html#aa67efe80a2eac8538728e5e8c3afeb51">tvm::tir::DataProducerNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const DataProducerNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> buffer.h:230</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1DataProducerNode_html"><div class="ttname"><a href="classtvm_1_1tir_1_1DataProducerNode.html">tvm::tir::DataProducerNode</a></div><div class="ttdoc">Base node for data producers. </div><div class="ttdef"><b>Definition:</b> buffer.h:211</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1DataProducerNode_html_aa67efe80a2eac8538728e5e8c3afeb51"><div class="ttname"><a href="classtvm_1_1tir_1_1DataProducerNode.html#aa67efe80a2eac8538728e5e8c3afeb51">tvm::tir::DataProducerNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const DataProducerNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> buffer.h:231</div></div>
 <div class="ttc" id="namespacetvm_1_1tir_html_a9ac05a14db42ca73da1d3945e7ce2fd1a4500370408bf0077c86a795cbe9dbf39"><div class="ttname"><a href="namespacetvm_1_1tir.html#a9ac05a14db42ca73da1d3945e7ce2fd1a4500370408bf0077c86a795cbe9dbf39">tvm::tir::kDefault</a></div><div class="ttdef"><b>Definition:</b> buffer.h:41</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_aac30fc17abe8bde34272a854ba74b16a"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#aac30fc17abe8bde34272a854ba74b16a">tvm::tir::BufferNode::data_alignment</a></div><div class="ttdeci">int data_alignment</div><div class="ttdoc">Alignment requirement of data pointer in bytes. </div><div class="ttdef"><b>Definition:</b> buffer.h:72</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a568c7658fb52ce7a22a32cafdfac56eb"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a568c7658fb52ce7a22a32cafdfac56eb">tvm::tir::BufferNode::scope</a></div><div class="ttdeci">String scope</div><div class="ttdoc">storage scope of the buffer, if other than global </div><div class="ttdef"><b>Definition:</b> buffer.h:70</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a9b849acfdc74712f4d2bfd9e631ee398"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a9b849acfdc74712f4d2bfd9e631ee398">tvm::tir::BufferNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const BufferNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> buffer.h:101</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_a9b849acfdc74712f4d2bfd9e631ee398"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#a9b849acfdc74712f4d2bfd9e631ee398">tvm::tir::BufferNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const BufferNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> buffer.h:102</div></div>
 <div class="ttc" id="namespacetvm_1_1tir_html_a9ac05a14db42ca73da1d3945e7ce2fd1a08cd53d61aa635081a2f7a0597025663"><div class="ttname"><a href="namespacetvm_1_1tir.html#a9ac05a14db42ca73da1d3945e7ce2fd1a08cd53d61aa635081a2f7a0597025663">tvm::tir::kAutoBroadcast</a></div><div class="ttdef"><b>Definition:</b> buffer.h:43</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:109</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1BufferNode_html_acf0d9633c7c746acb419f09a687bcc77"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferNode.html#acf0d9633c7c746acb419f09a687bcc77">tvm::tir::BufferNode::dtype</a></div><div class="ttdeci">DataType dtype</div><div class="ttdoc">data type in the content of the tensor </div><div class="ttdef"><b>Definition:</b> buffer.h:56</div></div>
diff --git a/docs/api/doxygen/classtvm_1_1AttrsNode.html b/docs/api/doxygen/classtvm_1_1AttrsNode.html
index 63cf91c..a10f06e 100644
--- a/docs/api/doxygen/classtvm_1_1AttrsNode.html
+++ b/docs/api/doxygen/classtvm_1_1AttrsNode.html
@@ -122,7 +122,7 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:acfba199ef906818f35432d2e5532559a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1AttrsNode.html#acfba199ef906818f35432d2e5532559a">InitByPackedArgs</a> (const <a class="el" href="classtvm_1_1runtime_1_1TVMArgs.html">runtime::TVMArgs</a> &amp;args, bool allow_unknown) final</td></tr>
 <tr class="memdesc:acfba199ef906818f35432d2e5532559a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the attributes by arguments.  <a href="#acfba199ef906818f35432d2e5532559a">More...</a><br /></td></tr>
 <tr class="separator:acfba199ef906818f35432d2e5532559a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af8192054af4e2797953cc7b67625092f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1AttrsNode.html#af8192054af4e2797953cc7b67625092f">SEqualReduce</a> (const DerivedType *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:af8192054af4e2797953cc7b67625092f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1AttrsNode.html#af8192054af4e2797953cc7b67625092f">SEqualReduce</a> (const DerivedType *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a>) const </td></tr>
 <tr class="separator:af8192054af4e2797953cc7b67625092f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad6cc4d8a955e30b9f55c0b5367ccce38"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1AttrsNode.html#ad6cc4d8a955e30b9f55c0b5367ccce38">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reducer) const </td></tr>
 <tr class="separator:ad6cc4d8a955e30b9f55c0b5367ccce38"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1ConstructorNode.html b/docs/api/doxygen/classtvm_1_1ConstructorNode.html
index de31591..fa7e7f7 100644
--- a/docs/api/doxygen/classtvm_1_1ConstructorNode.html
+++ b/docs/api/doxygen/classtvm_1_1ConstructorNode.html
@@ -120,7 +120,7 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:ab53a12f5a1ab1d262c49c16d189fe27c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a7137fbec25bcaae585f532221402e892"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ConstructorNode.html#a7137fbec25bcaae585f532221402e892">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a7137fbec25bcaae585f532221402e892"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1dbaf14ddf82ff3640cf539962955179"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ConstructorNode.html#a1dbaf14ddf82ff3640cf539962955179">SEqualReduce</a> (const <a class="el" href="classtvm_1_1ConstructorNode.html">ConstructorNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a1dbaf14ddf82ff3640cf539962955179"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ConstructorNode.html#a1dbaf14ddf82ff3640cf539962955179">SEqualReduce</a> (const <a class="el" href="classtvm_1_1ConstructorNode.html">ConstructorNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2 [...]
 <tr class="separator:a1dbaf14ddf82ff3640cf539962955179"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a7172a526b7d29085678fa01fba20fdf4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ConstructorNode.html#a7172a526b7d29085678fa01fba20fdf4">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a7172a526b7d29085678fa01fba20fdf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1DiagnosticContextNode.html b/docs/api/doxygen/classtvm_1_1DiagnosticContextNode.html
index e04a1ad..952af5a 100644
--- a/docs/api/doxygen/classtvm_1_1DiagnosticContextNode.html
+++ b/docs/api/doxygen/classtvm_1_1DiagnosticContextNode.html
@@ -115,7 +115,7 @@ Collaboration diagram for tvm::DiagnosticContextNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a467663f7af10b4a603b962a2c7f276db"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DiagnosticContextNode.html#a467663f7af10b4a603b962a2c7f276db">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a467663f7af10b4a603b962a2c7f276db"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a43f1deebce0c0633afb4c6ffd12f1ad4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DiagnosticContextNode.html#a43f1deebce0c0633afb4c6ffd12f1ad4">SEqualReduce</a> (const <a class="el" href="classtvm_1_1DiagnosticContextNode.html">DiagnosticContextNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a43f1deebce0c0633afb4c6ffd12f1ad4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DiagnosticContextNode.html#a43f1deebce0c0633afb4c6ffd12f1ad4">SEqualReduce</a> (const <a class="el" href="classtvm_1_1DiagnosticContextNode.html">DiagnosticContextNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b [...]
 <tr class="separator:a43f1deebce0c0633afb4c6ffd12f1ad4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a266463b6b2edbd73b511f43c7daf51e8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DiagnosticContextNode.html#a266463b6b2edbd73b511f43c7daf51e8">TVM_DECLARE_FINAL_OBJECT_INFO</a> (<a class="el" href="classtvm_1_1DiagnosticContextNode.html">DiagnosticContextNode</a>, Object)</td></tr>
 <tr class="separator:a266463b6b2edbd73b511f43c7daf51e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1DiagnosticNode.html b/docs/api/doxygen/classtvm_1_1DiagnosticNode.html
index 0520cd6..c53536a 100644
--- a/docs/api/doxygen/classtvm_1_1DiagnosticNode.html
+++ b/docs/api/doxygen/classtvm_1_1DiagnosticNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::DiagnosticNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:ac3bc5bed5da148ad2d384de810bc1bf7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DiagnosticNode.html#ac3bc5bed5da148ad2d384de810bc1bf7">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:ac3bc5bed5da148ad2d384de810bc1bf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a83071e01581094effd32fc3c0af54123"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DiagnosticNode.html#a83071e01581094effd32fc3c0af54123">SEqualReduce</a> (const <a class="el" href="classtvm_1_1DiagnosticNode.html">DiagnosticNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a83071e01581094effd32fc3c0af54123"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DiagnosticNode.html#a83071e01581094effd32fc3c0af54123">SEqualReduce</a> (const <a class="el" href="classtvm_1_1DiagnosticNode.html">DiagnosticNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354 [...]
 <tr class="separator:a83071e01581094effd32fc3c0af54123"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aa1988c644235520adf6911cbe6790060"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DiagnosticNode.html#aa1988c644235520adf6911cbe6790060">TVM_DECLARE_FINAL_OBJECT_INFO</a> (<a class="el" href="classtvm_1_1DiagnosticNode.html">DiagnosticNode</a>, Object)</td></tr>
 <tr class="separator:aa1988c644235520adf6911cbe6790060"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1DictAttrsNode.html b/docs/api/doxygen/classtvm_1_1DictAttrsNode.html
index 3bf40ec..8947545 100644
--- a/docs/api/doxygen/classtvm_1_1DictAttrsNode.html
+++ b/docs/api/doxygen/classtvm_1_1DictAttrsNode.html
@@ -116,7 +116,7 @@ Collaboration diagram for tvm::DictAttrsNode:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ae0218d9d2bea5d4244bfbfc7a3635d35"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DictAttrsNode.html#ae0218d9d2bea5d4244bfbfc7a3635d35">SEqualReduce</a> (const <a class="el" href="classtvm_1_1DictAttrsNode.html">DictAttrsNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:ae0218d9d2bea5d4244bfbfc7a3635d35"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DictAttrsNode.html#ae0218d9d2bea5d4244bfbfc7a3635d35">SEqualReduce</a> (const <a class="el" href="classtvm_1_1DictAttrsNode.html">DictAttrsNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a"> [...]
 <tr class="separator:ae0218d9d2bea5d4244bfbfc7a3635d35"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9b325fbc574606d832cca3b483bac572"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DictAttrsNode.html#a9b325fbc574606d832cca3b483bac572">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a9b325fbc574606d832cca3b483bac572"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1EnvFuncNode.html b/docs/api/doxygen/classtvm_1_1EnvFuncNode.html
index d6d4e33..88a5325 100644
--- a/docs/api/doxygen/classtvm_1_1EnvFuncNode.html
+++ b/docs/api/doxygen/classtvm_1_1EnvFuncNode.html
@@ -121,7 +121,7 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a808b81ced7b01c4955b4994a89bc71a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:adab1a481f01261dfaab5414dce4afc10"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1EnvFuncNode.html#adab1a481f01261dfaab5414dce4afc10">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:adab1a481f01261dfaab5414dce4afc10"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1b15e905003c230e45013a922d7d7e37"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1EnvFuncNode.html#a1b15e905003c230e45013a922d7d7e37">SEqualReduce</a> (const <a class="el" href="classtvm_1_1EnvFuncNode.html">EnvFuncNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a1b15e905003c230e45013a922d7d7e37"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1EnvFuncNode.html#a1b15e905003c230e45013a922d7d7e37">SEqualReduce</a> (const <a class="el" href="classtvm_1_1EnvFuncNode.html">EnvFuncNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal< [...]
 <tr class="separator:a1b15e905003c230e45013a922d7d7e37"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af8522e9ab96eb5570f1c9f2d9ed0eac2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1EnvFuncNode.html#af8522e9ab96eb5570f1c9f2d9ed0eac2">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:af8522e9ab96eb5570f1c9f2d9ed0eac2"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1FloatImmNode.html b/docs/api/doxygen/classtvm_1_1FloatImmNode.html
index e3d5254..e4f5e45 100644
--- a/docs/api/doxygen/classtvm_1_1FloatImmNode.html
+++ b/docs/api/doxygen/classtvm_1_1FloatImmNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::FloatImmNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a74569b541c1056734fff07a23a05558e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1FloatImmNode.html#a74569b541c1056734fff07a23a05558e">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a74569b541c1056734fff07a23a05558e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a13156b7fe5e11835246b157987031b7b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1FloatImmNode.html#a13156b7fe5e11835246b157987031b7b">SEqualReduce</a> (const <a class="el" href="classtvm_1_1FloatImmNode.html">FloatImmNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a13156b7fe5e11835246b157987031b7b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1FloatImmNode.html#a13156b7fe5e11835246b157987031b7b">SEqualReduce</a> (const <a class="el" href="classtvm_1_1FloatImmNode.html">FloatImmNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equ [...]
 <tr class="separator:a13156b7fe5e11835246b157987031b7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a7974ef908deb8bcc00e46aa9e0d989b5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1FloatImmNode.html#a7974ef908deb8bcc00e46aa9e0d989b5">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a7974ef908deb8bcc00e46aa9e0d989b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1FuncTypeNode.html b/docs/api/doxygen/classtvm_1_1FuncTypeNode.html
index 53e84bb..f389e87 100644
--- a/docs/api/doxygen/classtvm_1_1FuncTypeNode.html
+++ b/docs/api/doxygen/classtvm_1_1FuncTypeNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::FuncTypeNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:af24e0e62007ea125a1150e18d8b3009e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1FuncTypeNode.html#af24e0e62007ea125a1150e18d8b3009e">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:af24e0e62007ea125a1150e18d8b3009e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a948d4107485982ea371fae189f7f0d2e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1FuncTypeNode.html#a948d4107485982ea371fae189f7f0d2e">SEqualReduce</a> (const <a class="el" href="classtvm_1_1FuncTypeNode.html">FuncTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a948d4107485982ea371fae189f7f0d2e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1FuncTypeNode.html#a948d4107485982ea371fae189f7f0d2e">SEqualReduce</a> (const <a class="el" href="classtvm_1_1FuncTypeNode.html">FuncTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equ [...]
 <tr class="separator:a948d4107485982ea371fae189f7f0d2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a854174cec06c0d4f3fdb5c621d533193"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1FuncTypeNode.html#a854174cec06c0d4f3fdb5c621d533193">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a854174cec06c0d4f3fdb5c621d533193"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1GlobalTypeVarNode.html b/docs/api/doxygen/classtvm_1_1GlobalTypeVarNode.html
index 292a1a8..b0feb39 100644
--- a/docs/api/doxygen/classtvm_1_1GlobalTypeVarNode.html
+++ b/docs/api/doxygen/classtvm_1_1GlobalTypeVarNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::GlobalTypeVarNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:ad0db6587dd6fb6be938680d52d28d9ac"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1GlobalTypeVarNode.html#ad0db6587dd6fb6be938680d52d28d9ac">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:ad0db6587dd6fb6be938680d52d28d9ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5c1bfa6eb261fff74b4419de27520497"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1GlobalTypeVarNode.html#a5c1bfa6eb261fff74b4419de27520497">SEqualReduce</a> (const <a class="el" href="classtvm_1_1GlobalTypeVarNode.html">GlobalTypeVarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a5c1bfa6eb261fff74b4419de27520497"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1GlobalTypeVarNode.html#a5c1bfa6eb261fff74b4419de27520497">SEqualReduce</a> (const <a class="el" href="classtvm_1_1GlobalTypeVarNode.html">GlobalTypeVarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3 [...]
 <tr class="separator:a5c1bfa6eb261fff74b4419de27520497"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aa885581e4b82ff1cb8b0e77372b462f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1GlobalTypeVarNode.html#aa885581e4b82ff1cb8b0e77372b462f1">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:aa885581e4b82ff1cb8b0e77372b462f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1GlobalVarNode.html b/docs/api/doxygen/classtvm_1_1GlobalVarNode.html
index b695c1f..5aaea10 100644
--- a/docs/api/doxygen/classtvm_1_1GlobalVarNode.html
+++ b/docs/api/doxygen/classtvm_1_1GlobalVarNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::GlobalVarNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a903642f4abfde8fccc0144f97a25751e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1GlobalVarNode.html#a903642f4abfde8fccc0144f97a25751e">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a903642f4abfde8fccc0144f97a25751e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a17a31708458fb8db6a02c26490718cef"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1GlobalVarNode.html#a17a31708458fb8db6a02c26490718cef">SEqualReduce</a> (const <a class="el" href="classtvm_1_1GlobalVarNode.html">GlobalVarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a17a31708458fb8db6a02c26490718cef"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1GlobalVarNode.html#a17a31708458fb8db6a02c26490718cef">SEqualReduce</a> (const <a class="el" href="classtvm_1_1GlobalVarNode.html">GlobalVarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a"> [...]
 <tr class="separator:a17a31708458fb8db6a02c26490718cef"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afe504b71e30d8ceb2f0e69249c970080"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1GlobalVarNode.html#afe504b71e30d8ceb2f0e69249c970080">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:afe504b71e30d8ceb2f0e69249c970080"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1IRModuleNode.html b/docs/api/doxygen/classtvm_1_1IRModuleNode.html
index ca18d94..60edaee 100644
--- a/docs/api/doxygen/classtvm_1_1IRModuleNode.html
+++ b/docs/api/doxygen/classtvm_1_1IRModuleNode.html
@@ -121,7 +121,7 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a12962213bf292b6ebef70804f099eb8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:affbad8fa2513bd33cf8ac7d95aee132e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IRModuleNode.html#affbad8fa2513bd33cf8ac7d95aee132e">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:affbad8fa2513bd33cf8ac7d95aee132e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a73931fab441b0a8a8866547e504dbe65"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IRModuleNode.html#a73931fab441b0a8a8866547e504dbe65">SEqualReduce</a> (const <a class="el" href="classtvm_1_1IRModuleNode.html">IRModuleNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a73931fab441b0a8a8866547e504dbe65"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IRModuleNode.html#a73931fab441b0a8a8866547e504dbe65">SEqualReduce</a> (const <a class="el" href="classtvm_1_1IRModuleNode.html">IRModuleNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equ [...]
 <tr class="separator:a73931fab441b0a8a8866547e504dbe65"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a07f7ac491b06aa86c5cc9590a758e408"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IRModuleNode.html#a07f7ac491b06aa86c5cc9590a758e408">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a07f7ac491b06aa86c5cc9590a758e408"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1IncompleteTypeNode.html b/docs/api/doxygen/classtvm_1_1IncompleteTypeNode.html
index 14c3a44..cb06107 100644
--- a/docs/api/doxygen/classtvm_1_1IncompleteTypeNode.html
+++ b/docs/api/doxygen/classtvm_1_1IncompleteTypeNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::IncompleteTypeNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:abc1d642d082a67c6fea2b28a9db79542"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IncompleteTypeNode.html#abc1d642d082a67c6fea2b28a9db79542">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:abc1d642d082a67c6fea2b28a9db79542"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3e0961f93de3f2cd7905cea065df895b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IncompleteTypeNode.html#a3e0961f93de3f2cd7905cea065df895b">SEqualReduce</a> (const <a class="el" href="classtvm_1_1IncompleteTypeNode.html">IncompleteTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a3e0961f93de3f2cd7905cea065df895b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IncompleteTypeNode.html#a3e0961f93de3f2cd7905cea065df895b">SEqualReduce</a> (const <a class="el" href="classtvm_1_1IncompleteTypeNode.html">IncompleteTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d [...]
 <tr class="separator:a3e0961f93de3f2cd7905cea065df895b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac9d333742464ab5ce9578938ddc8b55f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IncompleteTypeNode.html#ac9d333742464ab5ce9578938ddc8b55f">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ac9d333742464ab5ce9578938ddc8b55f"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1IntImmNode.html b/docs/api/doxygen/classtvm_1_1IntImmNode.html
index b294af3..b1e2383 100644
--- a/docs/api/doxygen/classtvm_1_1IntImmNode.html
+++ b/docs/api/doxygen/classtvm_1_1IntImmNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::IntImmNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a39ccfd3964e6d132ad8d4e4d544b5949"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IntImmNode.html#a39ccfd3964e6d132ad8d4e4d544b5949">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a39ccfd3964e6d132ad8d4e4d544b5949"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5f94c4f2656fecd870e6c7e3933bf0bb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IntImmNode.html#a5f94c4f2656fecd870e6c7e3933bf0bb">SEqualReduce</a> (const <a class="el" href="classtvm_1_1IntImmNode.html">IntImmNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a5f94c4f2656fecd870e6c7e3933bf0bb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IntImmNode.html#a5f94c4f2656fecd870e6c7e3933bf0bb">SEqualReduce</a> (const <a class="el" href="classtvm_1_1IntImmNode.html">IntImmNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a> [...]
 <tr class="separator:a5f94c4f2656fecd870e6c7e3933bf0bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a77f490defd6a33697bec0b7b3cec20c6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IntImmNode.html#a77f490defd6a33697bec0b7b3cec20c6">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a77f490defd6a33697bec0b7b3cec20c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1NodeFunctor.html b/docs/api/doxygen/classtvm_1_1NodeFunctor.html
index abb0f34..3e34cca 100644
--- a/docs/api/doxygen/classtvm_1_1NodeFunctor.html
+++ b/docs/api/doxygen/classtvm_1_1NodeFunctor.html
@@ -108,7 +108,7 @@ class tvm::NodeFunctor&lt; FType &gt;</h3>
 
 <p>A dynamically dispatched functor on the type of the first argument. </p>
 <p>This is a class that is useful to construct polymorphic dispatching base on the AST/IR node's type.</p>
-<div class="fragment"><div class="line">NodeFunctor&lt;std::string (const ObjectRef&amp; n, std::string prefix)&gt; tostr;</div><div class="line">tostr.set_dispatch&lt;Add&gt;([](<span class="keyword">const</span> ObjectRef&amp; op, std::string prefix) {</div><div class="line">  <span class="keywordflow">return</span> prefix + <span class="stringliteral">&quot;Add&quot;</span>;</div><div class="line">});</div><div class="line">tostr.set_dispatch&lt;IntImm&gt;([](<span class="keyword">con [...]
+<div class="fragment"><div class="line">NodeFunctor&lt;std::string (const ObjectRef&amp; n, std::string prefix)&gt; tostr;</div><div class="line">tostr.set_dispatch&lt;Add&gt;([](<span class="keyword">const</span> ObjectRef&amp; op, std::string prefix) {</div><div class="line">  <span class="keywordflow">return</span> prefix + <span class="stringliteral">&quot;Add&quot;</span>;</div><div class="line">});</div><div class="line">tostr.set_dispatch&lt;IntImm&gt;([](<span class="keyword">con [...]
   <table class="tparams">
     <tr><td class="paramname">FType</td><td>function signiture This type if only defined for FType with function signature </td></tr>
   </table>
diff --git a/docs/api/doxygen/classtvm_1_1OpNode.html b/docs/api/doxygen/classtvm_1_1OpNode.html
index 906f016..a8bfead 100644
--- a/docs/api/doxygen/classtvm_1_1OpNode.html
+++ b/docs/api/doxygen/classtvm_1_1OpNode.html
@@ -119,7 +119,7 @@ Collaboration diagram for tvm::OpNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a9a5aacb190b2c4ead60b2810bd9053f4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1OpNode.html#a9a5aacb190b2c4ead60b2810bd9053f4">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a9a5aacb190b2c4ead60b2810bd9053f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a23237d4a1ca4e21371d5ed0ac3520725"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1OpNode.html#a23237d4a1ca4e21371d5ed0ac3520725">SEqualReduce</a> (const <a class="el" href="classtvm_1_1OpNode.html">OpNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a23237d4a1ca4e21371d5ed0ac3520725"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1OpNode.html#a23237d4a1ca4e21371d5ed0ac3520725">SEqualReduce</a> (const <a class="el" href="classtvm_1_1OpNode.html">OpNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a>) const </td></tr>
 <tr class="separator:a23237d4a1ca4e21371d5ed0ac3520725"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:abe8c1e8f86a4b62187a233174edce575"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1OpNode.html#abe8c1e8f86a4b62187a233174edce575">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:abe8c1e8f86a4b62187a233174edce575"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1PointerTypeNode.html b/docs/api/doxygen/classtvm_1_1PointerTypeNode.html
index abc02c4..401e20b 100644
--- a/docs/api/doxygen/classtvm_1_1PointerTypeNode.html
+++ b/docs/api/doxygen/classtvm_1_1PointerTypeNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::PointerTypeNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a4a940fe740d0a1f019e4e94c30d4d916"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1PointerTypeNode.html#a4a940fe740d0a1f019e4e94c30d4d916">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a4a940fe740d0a1f019e4e94c30d4d916"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a376830f7df4aaf0168eadf03c56b58a2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1PointerTypeNode.html#a376830f7df4aaf0168eadf03c56b58a2">SEqualReduce</a> (const <a class="el" href="classtvm_1_1PointerTypeNode.html">PointerTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a376830f7df4aaf0168eadf03c56b58a2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1PointerTypeNode.html#a376830f7df4aaf0168eadf03c56b58a2">SEqualReduce</a> (const <a class="el" href="classtvm_1_1PointerTypeNode.html">PointerTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2 [...]
 <tr class="separator:a376830f7df4aaf0168eadf03c56b58a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a36cf8709c3b50510af894bf57161ab75"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1PointerTypeNode.html#a36cf8709c3b50510af894bf57161ab75">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a36cf8709c3b50510af894bf57161ab75"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1PrimTypeNode.html b/docs/api/doxygen/classtvm_1_1PrimTypeNode.html
index 3a88eb7..4f6350a 100644
--- a/docs/api/doxygen/classtvm_1_1PrimTypeNode.html
+++ b/docs/api/doxygen/classtvm_1_1PrimTypeNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::PrimTypeNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a63ea742d617f0c34f2cb00ae162fd192"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1PrimTypeNode.html#a63ea742d617f0c34f2cb00ae162fd192">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a63ea742d617f0c34f2cb00ae162fd192"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae1ecf23e5d7a4b5338fadcf177d9ef96"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1PrimTypeNode.html#ae1ecf23e5d7a4b5338fadcf177d9ef96">SEqualReduce</a> (const <a class="el" href="classtvm_1_1PrimTypeNode.html">PrimTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:ae1ecf23e5d7a4b5338fadcf177d9ef96"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1PrimTypeNode.html#ae1ecf23e5d7a4b5338fadcf177d9ef96">SEqualReduce</a> (const <a class="el" href="classtvm_1_1PrimTypeNode.html">PrimTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equ [...]
 <tr class="separator:ae1ecf23e5d7a4b5338fadcf177d9ef96"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af08c6e0fed4402ffeed9a6fe69cf9722"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1PrimTypeNode.html#af08c6e0fed4402ffeed9a6fe69cf9722">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:af08c6e0fed4402ffeed9a6fe69cf9722"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1Range-members.html b/docs/api/doxygen/classtvm_1_1Range-members.html
index e181c99..0d8b96e 100644
--- a/docs/api/doxygen/classtvm_1_1Range-members.html
+++ b/docs/api/doxygen/classtvm_1_1Range-members.html
@@ -94,8 +94,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1Range.html">tvm::Range</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Range.html#aa4ce8d0a20f0a736748c10bdc5e11071">FromMinExtent</a>(PrimExpr min, PrimExpr extent)</td><td class="entry"><a class="el" href="classtvm_1_1Range.html">tvm::Range</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1Range.html#abc08435178fe9ac6ab83db6c9025757c">Range</a>(PrimExpr begin, PrimExpr end)</td><td class="entry"><a class="el" href="classtvm_1_1Range.html">tvm::Range</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Range.html#a91e7301ca1d135ca5f8ed199efbb9818">FromMinExtent</a>(PrimExpr min, PrimExpr extent, Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1Range.html">tvm::Range</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1Range.html#a9d58cccc53897fee0c80ab1437da1f0f">Range</a>(PrimExpr begin, PrimExpr end, Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1Range.html">tvm::Range</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Range.html#ad3ba24148bf1f5121d2f4187343e23a6">TVM_DEFINE_OBJECT_REF_METHODS</a>(Range, ObjectRef, RangeNode)</td><td class="entry"><a class="el" href="classtvm_1_1Range.html">tvm::Range</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
diff --git a/docs/api/doxygen/classtvm_1_1Range.html b/docs/api/doxygen/classtvm_1_1Range.html
index 2ee6c33..1b8236f 100644
--- a/docs/api/doxygen/classtvm_1_1Range.html
+++ b/docs/api/doxygen/classtvm_1_1Range.html
@@ -115,22 +115,22 @@ Collaboration diagram for tvm::Range:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:abc08435178fe9ac6ab83db6c9025757c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Range.html#abc08435178fe9ac6ab83db6c9025757c">Range</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> begin, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> end)</td></tr>
-<tr class="memdesc:abc08435178fe9ac6ab83db6c9025757c"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructor by begin and end  <a href="#abc08435178fe9ac6ab83db6c9025757c">More...</a><br /></td></tr>
-<tr class="separator:abc08435178fe9ac6ab83db6c9025757c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9d58cccc53897fee0c80ab1437da1f0f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Range.html#a9d58cccc53897fee0c80ab1437da1f0f">Range</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> begin, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> end, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:a9d58cccc53897fee0c80ab1437da1f0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructor by begin and end  <a href="#a9d58cccc53897fee0c80ab1437da1f0f">More...</a><br /></td></tr>
+<tr class="separator:a9d58cccc53897fee0c80ab1437da1f0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad3ba24148bf1f5121d2f4187343e23a6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Range.html#ad3ba24148bf1f5121d2f4187343e23a6">TVM_DEFINE_OBJECT_REF_METHODS</a> (<a class="el" href="classtvm_1_1Range.html">Range</a>, ObjectRef, <a class="el" href="classtvm_1_1RangeNode.html">RangeNode</a>)</td></tr>
 <tr class="separator:ad3ba24148bf1f5121d2f4187343e23a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
-<tr class="memitem:aa4ce8d0a20f0a736748c10bdc5e11071"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtvm_1_1Range.html">Range</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Range.html#aa4ce8d0a20f0a736748c10bdc5e11071">FromMinExtent</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="el" href="namespacetvm.html#a9da780393e228969f77aa7550520a582">min</a>, <a class="el" href="classtvm_1_1Prim [...]
-<tr class="memdesc:aa4ce8d0a20f0a736748c10bdc5e11071"><td class="mdescLeft">&#160;</td><td class="mdescRight">construct a new range with min and extent The corresponding constructor is removed, because that is counter convention of tradition meaning of range(begin, end)  <a href="#aa4ce8d0a20f0a736748c10bdc5e11071">More...</a><br /></td></tr>
-<tr class="separator:aa4ce8d0a20f0a736748c10bdc5e11071"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a91e7301ca1d135ca5f8ed199efbb9818"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtvm_1_1Range.html">Range</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Range.html#a91e7301ca1d135ca5f8ed199efbb9818">FromMinExtent</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="el" href="namespacetvm.html#aac2abc149c1a47944c37b560181b15c0">min</a>, <a class="el" href="classtvm_1_1Prim [...]
+<tr class="memdesc:a91e7301ca1d135ca5f8ed199efbb9818"><td class="mdescLeft">&#160;</td><td class="mdescRight">construct a new range with min and extent The corresponding constructor is removed, because that is counter convention of tradition meaning of range(begin, end)  <a href="#a91e7301ca1d135ca5f8ed199efbb9818">More...</a><br /></td></tr>
+<tr class="separator:a91e7301ca1d135ca5f8ed199efbb9818"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p><a class="el" href="classtvm_1_1Range.html" title="Range constainer. ">Range</a> constainer. </p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="abc08435178fe9ac6ab83db6c9025757c"></a>
+<a class="anchor" id="a9d58cccc53897fee0c80ab1437da1f0f"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -144,7 +144,13 @@ Static Public Member Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td>
-          <td class="paramname"><em>end</em>&#160;</td>
+          <td class="paramname"><em>end</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1Span.html">Span</a>&#160;</td>
+          <td class="paramname"><em>span</em> = <code><a class="el" href="classtvm_1_1Span.html">Span</a>()</code>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -159,6 +165,7 @@ Static Public Member Functions</h2></td></tr>
   <table class="params">
     <tr><td class="paramname">begin</td><td>The begin of the range. </td></tr>
     <tr><td class="paramname">end</td><td>The end of the range. </td></tr>
+    <tr><td class="paramname">span</td><td>The location of the <a class="el" href="classtvm_1_1Range.html" title="Range constainer. ">Range</a> in the source. </td></tr>
   </table>
   </dd>
 </dl>
@@ -166,7 +173,7 @@ Static Public Member Functions</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="aa4ce8d0a20f0a736748c10bdc5e11071"></a>
+<a class="anchor" id="a91e7301ca1d135ca5f8ed199efbb9818"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -183,7 +190,13 @@ Static Public Member Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td>
-          <td class="paramname"><em>extent</em>&#160;</td>
+          <td class="paramname"><em>extent</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1Span.html">Span</a>&#160;</td>
+          <td class="paramname"><em>span</em> = <code><a class="el" href="classtvm_1_1Span.html">Span</a>()</code>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -203,6 +216,7 @@ Static Public Member Functions</h2></td></tr>
   <table class="params">
     <tr><td class="paramname">min</td><td>The minimum range. </td></tr>
     <tr><td class="paramname">extent</td><td>The extent of the range. </td></tr>
+    <tr><td class="paramname">span</td><td>The location of the <a class="el" href="classtvm_1_1Range.html" title="Range constainer. ">Range</a> in the source. </td></tr>
   </table>
   </dd>
 </dl>
diff --git a/docs/api/doxygen/classtvm_1_1RangeNode-members.html b/docs/api/doxygen/classtvm_1_1RangeNode-members.html
index d59ebbd..3c45d5c 100644
--- a/docs/api/doxygen/classtvm_1_1RangeNode-members.html
+++ b/docs/api/doxygen/classtvm_1_1RangeNode-members.html
@@ -100,11 +100,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
   <tr><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html#acd2ddcfab1f591a6c1f2568dd0180845">extent</a></td><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html#a43d2fb12bb61cf05936a1972d0158b49">min</a></td><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html#ab845f7ed4ed85e360b730df3450d1aab">RangeNode</a>()</td><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html#a6ee2e11a496cc52627354fd90f00e2a0">RangeNode</a>(PrimExpr min, PrimExpr extent)</td><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html#a4bbc33969cb484c20306da1d2b9fa1fd">RangeNode</a>(PrimExpr min, PrimExpr extent, Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html#a64d94b3a2f18ab2e946926559c8a6a00">SEqualReduce</a>(const RangeNode *other, SEqualReducer equal) const </td><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html#a80bd0fe8be559acfacd5e5d90c938b2f">SHashReduce</a>(SHashReducer hash_reduce) const </td><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html#a7cfc39cadf205d093bc6c51d5912f81a">TVM_DECLARE_FINAL_OBJECT_INFO</a>(RangeNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html#a4922785883bc78fdcdaa8169c85e63c9">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html#aee167e954efc66eec2b2fecfcfc7e3d5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html#a7cfc39cadf205d093bc6c51d5912f81a">TVM_DECLARE_FINAL_OBJECT_INFO</a>(RangeNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html#a4922785883bc78fdcdaa8169c85e63c9">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/api/doxygen/classtvm_1_1RangeNode.html b/docs/api/doxygen/classtvm_1_1RangeNode.html
index 5b55cb6..b530a27 100644
--- a/docs/api/doxygen/classtvm_1_1RangeNode.html
+++ b/docs/api/doxygen/classtvm_1_1RangeNode.html
@@ -104,13 +104,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="dynheader">
 Inheritance diagram for tvm::RangeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1RangeNode__inherit__graph.svg" width="284" height="375"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1RangeNode__inherit__graph.svg" width="284" height="390"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::RangeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1RangeNode__coll__graph.svg" width="354" height="702"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1RangeNode__coll__graph.svg" width="419" height="822"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </div>
 </div>
 <table class="memberdecls">
@@ -119,11 +119,11 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:ab845f7ed4ed85e360b730df3450d1aab"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RangeNode.html#ab845f7ed4ed85e360b730df3450d1aab">RangeNode</a> ()</td></tr>
 <tr class="memdesc:ab845f7ed4ed85e360b730df3450d1aab"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructor  <a href="#ab845f7ed4ed85e360b730df3450d1aab">More...</a><br /></td></tr>
 <tr class="separator:ab845f7ed4ed85e360b730df3450d1aab"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6ee2e11a496cc52627354fd90f00e2a0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RangeNode.html#a6ee2e11a496cc52627354fd90f00e2a0">RangeNode</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="el" href="classtvm_1_1RangeNode.html#a43d2fb12bb61cf05936a1972d0158b49">min</a>, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="el" href="classtv [...]
-<tr class="separator:a6ee2e11a496cc52627354fd90f00e2a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4bbc33969cb484c20306da1d2b9fa1fd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RangeNode.html#a4bbc33969cb484c20306da1d2b9fa1fd">RangeNode</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="el" href="classtvm_1_1RangeNode.html#a43d2fb12bb61cf05936a1972d0158b49">min</a>, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="el" href="classtv [...]
+<tr class="separator:a4bbc33969cb484c20306da1d2b9fa1fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4922785883bc78fdcdaa8169c85e63c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RangeNode.html#a4922785883bc78fdcdaa8169c85e63c9">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a4922785883bc78fdcdaa8169c85e63c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a64d94b3a2f18ab2e946926559c8a6a00"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RangeNode.html#a64d94b3a2f18ab2e946926559c8a6a00">SEqualReduce</a> (const <a class="el" href="classtvm_1_1RangeNode.html">RangeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a64d94b3a2f18ab2e946926559c8a6a00"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RangeNode.html#a64d94b3a2f18ab2e946926559c8a6a00">SEqualReduce</a> (const <a class="el" href="classtvm_1_1RangeNode.html">RangeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a>) c [...]
 <tr class="separator:a64d94b3a2f18ab2e946926559c8a6a00"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a80bd0fe8be559acfacd5e5d90c938b2f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RangeNode.html#a80bd0fe8be559acfacd5e5d90c938b2f">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a80bd0fe8be559acfacd5e5d90c938b2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -138,6 +138,9 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:acd2ddcfab1f591a6c1f2568dd0180845"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RangeNode.html#acd2ddcfab1f591a6c1f2568dd0180845">extent</a></td></tr>
 <tr class="memdesc:acd2ddcfab1f591a6c1f2568dd0180845"><td class="mdescLeft">&#160;</td><td class="mdescRight">the extend of range  <a href="#acd2ddcfab1f591a6c1f2568dd0180845">More...</a><br /></td></tr>
 <tr class="separator:acd2ddcfab1f591a6c1f2568dd0180845"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aee167e954efc66eec2b2fecfcfc7e3d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1Span.html">Span</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RangeNode.html#aee167e954efc66eec2b2fecfcfc7e3d5">span</a></td></tr>
+<tr class="memdesc:aee167e954efc66eec2b2fecfcfc7e3d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">the location of this range in the source  <a href="#aee167e954efc66eec2b2fecfcfc7e3d5">More...</a><br /></td></tr>
+<tr class="separator:aee167e954efc66eec2b2fecfcfc7e3d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
@@ -176,7 +179,7 @@ Static Public Attributes</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a6ee2e11a496cc52627354fd90f00e2a0"></a>
+<a class="anchor" id="a4bbc33969cb484c20306da1d2b9fa1fd"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -193,7 +196,13 @@ Static Public Attributes</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td>
-          <td class="paramname"><em>extent</em>&#160;</td>
+          <td class="paramname"><em>extent</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1Span.html">Span</a>&#160;</td>
+          <td class="paramname"><em>span</em> = <code><a class="el" href="classtvm_1_1Span.html">Span</a>()</code>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -408,6 +417,28 @@ Static Public Attributes</h2></td></tr>
 
 </div>
 </div>
+<a class="anchor" id="aee167e954efc66eec2b2fecfcfc7e3d5"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classtvm_1_1Span.html">Span</a> tvm::RangeNode::span</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">mutable</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>the location of this range in the source </p>
+
+</div>
+</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
 <li>include/tvm/ir/<a class="el" href="ir_2expr_8h_source.html">expr.h</a></li>
 </ul>
diff --git a/docs/api/doxygen/classtvm_1_1RangeNode__coll__graph.svg b/docs/api/doxygen/classtvm_1_1RangeNode__coll__graph.svg
index e649e16..05cc1fa 100644
--- a/docs/api/doxygen/classtvm_1_1RangeNode__coll__graph.svg
+++ b/docs/api/doxygen/classtvm_1_1RangeNode__coll__graph.svg
@@ -4,22 +4,22 @@
 <!-- Generated by graphviz version 2.38.0 (20140413.2041)
  -->
 <!-- Title: tvm::RangeNode Pages: 1 -->
-<svg width="265pt" height="526pt"
- viewBox="0.00 0.00 264.50 526.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 522)">
+<svg width="314pt" height="616pt"
+ viewBox="0.00 0.00 313.50 616.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 612)">
 <title>tvm::RangeNode</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-522 260.5,-522 260.5,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-612 309.5,-612 309.5,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node"><title>Node1</title>
-<polygon fill="#bfbfbf" stroke="black" points="-1.42109e-14,-0.5 -1.42109e-14,-156.5 205,-156.5 205,-0.5 -1.42109e-14,-0.5"/>
+<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-156.5 205,-156.5 205,-0.5 0,-0.5"/>
 <text text-anchor="middle" x="102.5" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RangeNode</text>
-<polyline fill="none" stroke="black" points="-1.42109e-14,-137.5 205,-137.5 "/>
+<polyline fill="none" stroke="black" points="0,-137.5 205,-137.5 "/>
 <text text-anchor="start" x="8" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
 <text text-anchor="start" x="8" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
 <text text-anchor="start" x="8" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
 <text text-anchor="start" x="8" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
 <text text-anchor="start" x="8" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<polyline fill="none" stroke="black" points="-1.42109e-14,-74.5 205,-74.5 "/>
+<polyline fill="none" stroke="black" points="0,-74.5 205,-74.5 "/>
 <text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RangeNode()</text>
 <text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RangeNode()</text>
 <text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
@@ -29,72 +29,98 @@
 </g>
 <!-- Node2 -->
 <g id="node2" class="node"><title>Node2</title>
-<polygon fill="white" stroke="#bfbfbf" points="42,-237.5 42,-294.5 89,-294.5 89,-237.5 42,-237.5"/>
-<text text-anchor="middle" x="65.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">Object</text>
-<polyline fill="none" stroke="#bfbfbf" points="42,-275.5 89,-275.5 "/>
-<text text-anchor="middle" x="65.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="#bfbfbf" points="42,-256.5 89,-256.5 "/>
-<text text-anchor="middle" x="65.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="white" stroke="#bfbfbf" points="19,-237.5 19,-294.5 66,-294.5 66,-237.5 19,-237.5"/>
+<text text-anchor="middle" x="42.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">Object</text>
+<polyline fill="none" stroke="#bfbfbf" points="19,-275.5 66,-275.5 "/>
+<text text-anchor="middle" x="42.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="#bfbfbf" points="19,-256.5 66,-256.5 "/>
+<text text-anchor="middle" x="42.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M73.0476,-227.16C77.0924,-206.881 82.2286,-181.131 87.0751,-156.833"/>
-<polygon fill="none" stroke="midnightblue" points="69.563,-226.737 71.0393,-237.229 76.4278,-228.107 69.563,-226.737"/>
+<path fill="none" stroke="midnightblue" d="M54.6492,-227.439C61.222,-207.118 69.5914,-181.242 77.4867,-156.833"/>
+<polygon fill="none" stroke="midnightblue" points="51.2301,-226.637 51.4826,-237.229 57.8903,-228.791 51.2301,-226.637"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node"><title>Node3</title>
-<g id="a_node3"><a xlink:href="classtvm_1_1PrimExpr.html" target="_top" xlink:title="Reference to PrimExprNode. ">
-<polygon fill="white" stroke="black" points="106.5,-215.5 106.5,-316.5 256.5,-316.5 256.5,-215.5 106.5,-215.5"/>
-<text text-anchor="middle" x="181.5" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimExpr</text>
-<polyline fill="none" stroke="black" points="106.5,-297.5 256.5,-297.5 "/>
-<text text-anchor="middle" x="181.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="106.5,-278.5 256.5,-278.5 "/>
-<text text-anchor="start" x="114.5" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ PrimExpr()</text>
-<text text-anchor="start" x="114.5" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ PrimExpr()</text>
-<text text-anchor="start" x="114.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ dtype()</text>
-<text text-anchor="start" x="114.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="114.5" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<g id="a_node3"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title="{tvm::Span\n||+ Span()\l+ Merge()\l+ TVM_DEFINE_OBJECT_REF\l_METHODS()\l}">
+<polygon fill="white" stroke="black" points="39.5,-335.5 39.5,-425.5 189.5,-425.5 189.5,-335.5 39.5,-335.5"/>
+<text text-anchor="middle" x="114.5" y="-413.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="39.5,-406.5 189.5,-406.5 "/>
+<text text-anchor="middle" x="114.5" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="39.5,-387.5 189.5,-387.5 "/>
+<text text-anchor="start" x="47.5" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="47.5" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="47.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="47.5" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node1 -->
 <g id="edge2" class="edge"><title>Node3&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M160.329,-215.289C154.091,-200.64 147.068,-184.151 140.123,-167.843"/>
-<polygon fill="none" stroke="#404040" points="140.04,-167.648 134.009,-163.695 135.338,-156.607 141.369,-160.56 140.04,-167.648"/>
-<text text-anchor="middle" x="170.5" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00"> +min</text>
-<text text-anchor="middle" x="170.5" y="-178" font-family="Helvetica,sans-Serif" font-size="10.00">+extent</text>
+<path fill="none" stroke="#404040" d="M112.33,-335.455C112.041,-329.258 111.756,-322.969 111.5,-317 109.392,-267.909 107.297,-213.099 105.66,-168.513"/>
+<polygon fill="none" stroke="#404040" points="105.66,-168.512 101.444,-162.662 105.222,-156.52 109.438,-162.369 105.66,-168.512"/>
+<text text-anchor="middle" x="129" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node"><title>Node4</title>
-<g id="a_node4"><a xlink:href="classtvm_1_1BaseExpr.html" target="_top" xlink:title="Managed reference to BaseExprNode. ">
-<polygon fill="white" stroke="black" points="106.5,-354.5 106.5,-422.5 256.5,-422.5 256.5,-354.5 106.5,-354.5"/>
-<text text-anchor="middle" x="181.5" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
-<polyline fill="none" stroke="black" points="106.5,-403.5 256.5,-403.5 "/>
-<text text-anchor="middle" x="181.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="106.5,-384.5 256.5,-384.5 "/>
-<text text-anchor="start" x="114.5" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="114.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-</a>
-</g>
+<polygon fill="white" stroke="#bfbfbf" points="118.5,-550.5 118.5,-607.5 180.5,-607.5 180.5,-550.5 118.5,-550.5"/>
+<text text-anchor="middle" x="149.5" y="-595.5" font-family="Helvetica,sans-Serif" font-size="10.00">ObjectRef</text>
+<polyline fill="none" stroke="#bfbfbf" points="118.5,-588.5 180.5,-588.5 "/>
+<text text-anchor="middle" x="149.5" y="-576.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="#bfbfbf" points="118.5,-569.5 180.5,-569.5 "/>
+<text text-anchor="middle" x="149.5" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
 </g>
 <!-- Node4&#45;&gt;Node3 -->
 <g id="edge3" class="edge"><title>Node4&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M181.5,-344.151C181.5,-335.293 181.5,-325.906 181.5,-316.842"/>
-<polygon fill="none" stroke="midnightblue" points="178,-344.254 181.5,-354.254 185,-344.254 178,-344.254"/>
+<path fill="none" stroke="midnightblue" d="M142.767,-540.196C136.943,-507.503 128.519,-460.204 122.382,-425.753"/>
+<polygon fill="none" stroke="midnightblue" points="139.36,-541.032 144.56,-550.263 146.252,-539.804 139.36,-541.032"/>
+</g>
+<!-- Node6 -->
+<g id="node6" class="node"><title>Node6</title>
+<g id="a_node6"><a xlink:href="classtvm_1_1BaseExpr.html" target="_top" xlink:title="Managed reference to BaseExprNode. ">
+<polygon fill="white" stroke="black" points="147.5,-444.5 147.5,-512.5 297.5,-512.5 297.5,-444.5 147.5,-444.5"/>
+<text text-anchor="middle" x="222.5" y="-500.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
+<polyline fill="none" stroke="black" points="147.5,-493.5 297.5,-493.5 "/>
+<text text-anchor="middle" x="222.5" y="-481.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="147.5,-474.5 297.5,-474.5 "/>
+<text text-anchor="start" x="155.5" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="155.5" y="-451.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+</a>
+</g>
+</g>
+<!-- Node4&#45;&gt;Node6 -->
+<g id="edge6" class="edge"><title>Node4&#45;&gt;Node6</title>
+<path fill="none" stroke="midnightblue" d="M176.135,-542.062C183.277,-532.425 190.964,-522.053 197.985,-512.578"/>
+<polygon fill="none" stroke="midnightblue" points="173.171,-540.182 170.029,-550.3 178.795,-544.35 173.171,-540.182"/>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node"><title>Node5</title>
-<polygon fill="white" stroke="#bfbfbf" points="150.5,-460.5 150.5,-517.5 212.5,-517.5 212.5,-460.5 150.5,-460.5"/>
-<text text-anchor="middle" x="181.5" y="-505.5" font-family="Helvetica,sans-Serif" font-size="10.00">ObjectRef</text>
-<polyline fill="none" stroke="#bfbfbf" points="150.5,-498.5 212.5,-498.5 "/>
-<text text-anchor="middle" x="181.5" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="#bfbfbf" points="150.5,-479.5 212.5,-479.5 "/>
-<text text-anchor="middle" x="181.5" y="-467.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-</g>
-<!-- Node5&#45;&gt;Node4 -->
-<g id="edge4" class="edge"><title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M181.5,-450.007C181.5,-440.962 181.5,-431.383 181.5,-422.578"/>
-<polygon fill="none" stroke="midnightblue" points="178,-450.3 181.5,-460.3 185,-450.3 178,-450.3"/>
+<g id="a_node5"><a xlink:href="classtvm_1_1PrimExpr.html" target="_top" xlink:title="Reference to PrimExprNode. ">
+<polygon fill="white" stroke="black" points="155.5,-215.5 155.5,-316.5 305.5,-316.5 305.5,-215.5 155.5,-215.5"/>
+<text text-anchor="middle" x="230.5" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimExpr</text>
+<polyline fill="none" stroke="black" points="155.5,-297.5 305.5,-297.5 "/>
+<text text-anchor="middle" x="230.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="155.5,-278.5 305.5,-278.5 "/>
+<text text-anchor="start" x="163.5" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ PrimExpr()</text>
+<text text-anchor="start" x="163.5" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ PrimExpr()</text>
+<text text-anchor="start" x="163.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ dtype()</text>
+<text text-anchor="start" x="163.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="163.5" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+</a>
+</g>
+</g>
+<!-- Node5&#45;&gt;Node1 -->
+<g id="edge4" class="edge"><title>Node5&#45;&gt;Node1</title>
+<path fill="none" stroke="#404040" d="M196.198,-215.289C185.896,-200.359 174.274,-183.516 162.81,-166.903"/>
+<polygon fill="none" stroke="#404040" points="162.522,-166.484 155.822,-163.818 155.706,-156.607 162.406,-159.274 162.522,-166.484"/>
+<text text-anchor="middle" x="202.5" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00"> +min</text>
+<text text-anchor="middle" x="202.5" y="-178" font-family="Helvetica,sans-Serif" font-size="10.00">+extent</text>
+</g>
+<!-- Node6&#45;&gt;Node5 -->
+<g id="edge5" class="edge"><title>Node6&#45;&gt;Node5</title>
+<path fill="none" stroke="midnightblue" d="M224.153,-434.008C225.451,-399.862 227.258,-352.299 228.613,-316.661"/>
+<polygon fill="none" stroke="midnightblue" points="220.65,-434.02 223.768,-444.146 227.645,-434.286 220.65,-434.02"/>
 </g>
 </g>
 </svg>
diff --git a/docs/api/doxygen/classtvm_1_1RangeNode__inherit__graph.svg b/docs/api/doxygen/classtvm_1_1RangeNode__inherit__graph.svg
index 60dfb30..4e6e74a 100644
--- a/docs/api/doxygen/classtvm_1_1RangeNode__inherit__graph.svg
+++ b/docs/api/doxygen/classtvm_1_1RangeNode__inherit__graph.svg
@@ -4,18 +4,19 @@
 <!-- Generated by graphviz version 2.38.0 (20140413.2041)
  -->
 <!-- Title: tvm::RangeNode Pages: 1 -->
-<svg width="213pt" height="281pt"
- viewBox="0.00 0.00 213.00 281.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 277)">
+<svg width="213pt" height="292pt"
+ viewBox="0.00 0.00 213.00 292.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 288)">
 <title>tvm::RangeNode</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-277 209,-277 209,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-288 209,-288 209,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node"><title>Node1</title>
-<polygon fill="#bfbfbf" stroke="black" points="-1.42109e-14,-0.5 -1.42109e-14,-178.5 205,-178.5 205,-0.5 -1.42109e-14,-0.5"/>
-<text text-anchor="middle" x="102.5" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RangeNode</text>
-<polyline fill="none" stroke="black" points="-1.42109e-14,-159.5 205,-159.5 "/>
-<text text-anchor="start" x="8" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ min</text>
-<text text-anchor="start" x="8" y="-136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ extent</text>
+<polygon fill="#bfbfbf" stroke="black" points="-1.42109e-14,-0.5 -1.42109e-14,-189.5 205,-189.5 205,-0.5 -1.42109e-14,-0.5"/>
+<text text-anchor="middle" x="102.5" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RangeNode</text>
+<polyline fill="none" stroke="black" points="-1.42109e-14,-170.5 205,-170.5 "/>
+<text text-anchor="start" x="8" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ min</text>
+<text text-anchor="start" x="8" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ extent</text>
+<text text-anchor="start" x="8" y="-136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ span</text>
 <text text-anchor="start" x="8" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
 <text text-anchor="start" x="8" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
 <text text-anchor="start" x="8" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
@@ -31,17 +32,17 @@
 </g>
 <!-- Node2 -->
 <g id="node2" class="node"><title>Node2</title>
-<polygon fill="white" stroke="#bfbfbf" points="79,-215.5 79,-272.5 126,-272.5 126,-215.5 79,-215.5"/>
-<text text-anchor="middle" x="102.5" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">Object</text>
-<polyline fill="none" stroke="#bfbfbf" points="79,-253.5 126,-253.5 "/>
-<text text-anchor="middle" x="102.5" y="-241.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="#bfbfbf" points="79,-234.5 126,-234.5 "/>
-<text text-anchor="middle" x="102.5" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="white" stroke="#bfbfbf" points="79,-226.5 79,-283.5 126,-283.5 126,-226.5 79,-226.5"/>
+<text text-anchor="middle" x="102.5" y="-271.5" font-family="Helvetica,sans-Serif" font-size="10.00">Object</text>
+<polyline fill="none" stroke="#bfbfbf" points="79,-264.5 126,-264.5 "/>
+<text text-anchor="middle" x="102.5" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="#bfbfbf" points="79,-245.5 126,-245.5 "/>
+<text text-anchor="middle" x="102.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M102.5,-205.374C102.5,-197.089 102.5,-187.977 102.5,-178.62"/>
-<polygon fill="none" stroke="midnightblue" points="99.0001,-205.383 102.5,-215.383 106,-205.383 99.0001,-205.383"/>
+<path fill="none" stroke="midnightblue" d="M102.5,-216.215C102.5,-208.012 102.5,-198.986 102.5,-189.678"/>
+<polygon fill="none" stroke="midnightblue" points="99.0001,-216.478 102.5,-226.479 106,-216.479 99.0001,-216.478"/>
 </g>
 </g>
 </svg>
diff --git a/docs/api/doxygen/classtvm_1_1ReflectionVTable.html b/docs/api/doxygen/classtvm_1_1ReflectionVTable.html
index 14bfd9a..9c12092 100644
--- a/docs/api/doxygen/classtvm_1_1ReflectionVTable.html
+++ b/docs/api/doxygen/classtvm_1_1ReflectionVTable.html
@@ -120,7 +120,7 @@ Public Types</h2></td></tr>
 <tr class="memitem:a486eb682af89ac025c0db1f8f6045b95"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ReflectionVTable.html#a486eb682af89ac025c0db1f8f6045b95">FVisitAttrs</a>) (Object *self, <a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *visitor)</td></tr>
 <tr class="memdesc:a486eb682af89ac025c0db1f8f6045b95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor function.  <a href="#a486eb682af89ac025c0db1f8f6045b95">More...</a><br /></td></tr>
 <tr class="separator:a486eb682af89ac025c0db1f8f6045b95"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a656516c928f74d7b6345abd8c8f04358"><td class="memItemLeft" align="right" valign="top">typedef bool(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ReflectionVTable.html#a656516c928f74d7b6345abd8c8f04358">FSEqualReduce</a>) (const Object *self, const Object *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal)</td></tr>
+<tr class="memitem:a656516c928f74d7b6345abd8c8f04358"><td class="memItemLeft" align="right" valign="top">typedef bool(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ReflectionVTable.html#a656516c928f74d7b6345abd8c8f04358">FSEqualReduce</a>) (const Object *self, const Object *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a>)</td></tr>
 <tr class="memdesc:a656516c928f74d7b6345abd8c8f04358"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equality comparison function.  <a href="#a656516c928f74d7b6345abd8c8f04358">More...</a><br /></td></tr>
 <tr class="separator:a656516c928f74d7b6345abd8c8f04358"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a08566817a33d96cd486a780afe88aad1"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ReflectionVTable.html#a08566817a33d96cd486a780afe88aad1">FSHashReduce</a>) (const Object *self, <a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce)</td></tr>
@@ -141,7 +141,7 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:acc577dacd480beaee8f905bab8d2029c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ReflectionVTable.html#acc577dacd480beaee8f905bab8d2029c">GetReprBytes</a> (const Object *self, std::string *repr_bytes) const </td></tr>
 <tr class="memdesc:acc577dacd480beaee8f905bab8d2029c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get repr bytes if any.  <a href="#acc577dacd480beaee8f905bab8d2029c">More...</a><br /></td></tr>
 <tr class="separator:acc577dacd480beaee8f905bab8d2029c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afca5e5c3d8d86bff3fb9503481727074"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ReflectionVTable.html#afca5e5c3d8d86bff3fb9503481727074">SEqualReduce</a> (const Object *self, const Object *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:afca5e5c3d8d86bff3fb9503481727074"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ReflectionVTable.html#afca5e5c3d8d86bff3fb9503481727074">SEqualReduce</a> (const Object *self, const Object *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a>) const </td></tr>
 <tr class="memdesc:afca5e5c3d8d86bff3fb9503481727074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the SEqualReduce function.  <a href="#afca5e5c3d8d86bff3fb9503481727074">More...</a><br /></td></tr>
 <tr class="separator:afca5e5c3d8d86bff3fb9503481727074"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a8598da5b2df50186cbc4a66ffd539c23"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ReflectionVTable.html#a8598da5b2df50186cbc4a66ffd539c23">SHashReduce</a> (const Object *self, <a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
@@ -222,7 +222,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef bool(* tvm::ReflectionVTable::FSEqualReduce) (const Object *self, const Object *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal)</td>
+          <td class="memname">typedef bool(* tvm::ReflectionVTable::FSEqualReduce) (const Object *self, const Object *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a>)</td>
         </tr>
       </table>
 </div><div class="memdoc">
diff --git a/docs/api/doxygen/classtvm_1_1RelayRefTypeNode.html b/docs/api/doxygen/classtvm_1_1RelayRefTypeNode.html
index 66d3008..2d083ab 100644
--- a/docs/api/doxygen/classtvm_1_1RelayRefTypeNode.html
+++ b/docs/api/doxygen/classtvm_1_1RelayRefTypeNode.html
@@ -120,7 +120,7 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a23840592da71d366e7f7dbaaf42d906d"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a365f797bb929e42a2199b51ed2f879f0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RelayRefTypeNode.html#a365f797bb929e42a2199b51ed2f879f0">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a365f797bb929e42a2199b51ed2f879f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abe200e4f22df8db45ac083544df1f08f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RelayRefTypeNode.html#abe200e4f22df8db45ac083544df1f08f">SEqualReduce</a> (const <a class="el" href="classtvm_1_1RelayRefTypeNode.html">RelayRefTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:abe200e4f22df8db45ac083544df1f08f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RelayRefTypeNode.html#abe200e4f22df8db45ac083544df1f08f">SEqualReduce</a> (const <a class="el" href="classtvm_1_1RelayRefTypeNode.html">RelayRefTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460 [...]
 <tr class="separator:abe200e4f22df8db45ac083544df1f08f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a70e4a9a304f6cd763ea25168fbea43d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1RelayRefTypeNode.html#a70e4a9a304f6cd763ea25168fbea43d4">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a70e4a9a304f6cd763ea25168fbea43d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1SourceNameNode.html b/docs/api/doxygen/classtvm_1_1SourceNameNode.html
index 421d163..4b64080 100644
--- a/docs/api/doxygen/classtvm_1_1SourceNameNode.html
+++ b/docs/api/doxygen/classtvm_1_1SourceNameNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::SourceNameNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:acbea8729c55af6e2451338e2be5a84ce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1SourceNameNode.html#acbea8729c55af6e2451338e2be5a84ce">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:acbea8729c55af6e2451338e2be5a84ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1ab3c95ef12535d40584098af7488673"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1SourceNameNode.html#a1ab3c95ef12535d40584098af7488673">SEqualReduce</a> (const <a class="el" href="classtvm_1_1SourceNameNode.html">SourceNameNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a1ab3c95ef12535d40584098af7488673"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1SourceNameNode.html#a1ab3c95ef12535d40584098af7488673">SEqualReduce</a> (const <a class="el" href="classtvm_1_1SourceNameNode.html">SourceNameNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354 [...]
 <tr class="separator:a1ab3c95ef12535d40584098af7488673"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a61a9f7923b7dd684274e9ce4045ffa13"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1SourceNameNode.html#a61a9f7923b7dd684274e9ce4045ffa13">TVM_DECLARE_FINAL_OBJECT_INFO</a> (<a class="el" href="classtvm_1_1SourceNameNode.html">SourceNameNode</a>, Object)</td></tr>
 <tr class="separator:a61a9f7923b7dd684274e9ce4045ffa13"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1SpanNode.html b/docs/api/doxygen/classtvm_1_1SpanNode.html
index 369ba8e..804b52d 100644
--- a/docs/api/doxygen/classtvm_1_1SpanNode.html
+++ b/docs/api/doxygen/classtvm_1_1SpanNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::SpanNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:adf555befd933b86f7ce2cfd0989d4282"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1SpanNode.html#adf555befd933b86f7ce2cfd0989d4282">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:adf555befd933b86f7ce2cfd0989d4282"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a303175c2e781ef104cd03e26010200b8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1SpanNode.html#a303175c2e781ef104cd03e26010200b8">SEqualReduce</a> (const <a class="el" href="classtvm_1_1SpanNode.html">SpanNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a303175c2e781ef104cd03e26010200b8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1SpanNode.html#a303175c2e781ef104cd03e26010200b8">SEqualReduce</a> (const <a class="el" href="classtvm_1_1SpanNode.html">SpanNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a>) cons [...]
 <tr class="separator:a303175c2e781ef104cd03e26010200b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a18bcfd7f4d291e5973c510fddd53cb88"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1SpanNode.html#a18bcfd7f4d291e5973c510fddd53cb88">TVM_DECLARE_FINAL_OBJECT_INFO</a> (<a class="el" href="classtvm_1_1SpanNode.html">SpanNode</a>, Object)</td></tr>
 <tr class="separator:a18bcfd7f4d291e5973c510fddd53cb88"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1TensorTypeNode.html b/docs/api/doxygen/classtvm_1_1TensorTypeNode.html
index 0ef6225..7ff00ab 100644
--- a/docs/api/doxygen/classtvm_1_1TensorTypeNode.html
+++ b/docs/api/doxygen/classtvm_1_1TensorTypeNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::TensorTypeNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a49f67378d6735693e24fb7b61c725132"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TensorTypeNode.html#a49f67378d6735693e24fb7b61c725132">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a49f67378d6735693e24fb7b61c725132"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af38f7e3df5a2beaec7190eb037bf89e9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TensorTypeNode.html#af38f7e3df5a2beaec7190eb037bf89e9">SEqualReduce</a> (const <a class="el" href="classtvm_1_1TensorTypeNode.html">TensorTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:af38f7e3df5a2beaec7190eb037bf89e9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TensorTypeNode.html#af38f7e3df5a2beaec7190eb037bf89e9">SEqualReduce</a> (const <a class="el" href="classtvm_1_1TensorTypeNode.html">TensorTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354 [...]
 <tr class="separator:af38f7e3df5a2beaec7190eb037bf89e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab79c6efa74f976b6a515860b622b485e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TensorTypeNode.html#ab79c6efa74f976b6a515860b622b485e">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ab79c6efa74f976b6a515860b622b485e"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1TupleTypeNode.html b/docs/api/doxygen/classtvm_1_1TupleTypeNode.html
index 544d230..8a03e93 100644
--- a/docs/api/doxygen/classtvm_1_1TupleTypeNode.html
+++ b/docs/api/doxygen/classtvm_1_1TupleTypeNode.html
@@ -120,7 +120,7 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a1e9cbe8e91816366c181fb888ddc18d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aeb1f655deb512dba884f6d5cb3ddc5e2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TupleTypeNode.html#aeb1f655deb512dba884f6d5cb3ddc5e2">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:aeb1f655deb512dba884f6d5cb3ddc5e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4963057226e6818b281d4085cc7c0b67"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TupleTypeNode.html#a4963057226e6818b281d4085cc7c0b67">SEqualReduce</a> (const <a class="el" href="classtvm_1_1TupleTypeNode.html">TupleTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a4963057226e6818b281d4085cc7c0b67"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TupleTypeNode.html#a4963057226e6818b281d4085cc7c0b67">SEqualReduce</a> (const <a class="el" href="classtvm_1_1TupleTypeNode.html">TupleTypeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a"> [...]
 <tr class="separator:a4963057226e6818b281d4085cc7c0b67"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9c9ef6b811b1a99ee2fae1edee774b74"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TupleTypeNode.html#a9c9ef6b811b1a99ee2fae1edee774b74">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a9c9ef6b811b1a99ee2fae1edee774b74"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1TypeCallNode.html b/docs/api/doxygen/classtvm_1_1TypeCallNode.html
index 7787e51..a6e78e8 100644
--- a/docs/api/doxygen/classtvm_1_1TypeCallNode.html
+++ b/docs/api/doxygen/classtvm_1_1TypeCallNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::TypeCallNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a78d868b71e85155ef0b9a003bab87a77"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeCallNode.html#a78d868b71e85155ef0b9a003bab87a77">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a78d868b71e85155ef0b9a003bab87a77"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adcd169de4a8923b333f721d5c79dcbc5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeCallNode.html#adcd169de4a8923b333f721d5c79dcbc5">SEqualReduce</a> (const <a class="el" href="classtvm_1_1TypeCallNode.html">TypeCallNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:adcd169de4a8923b333f721d5c79dcbc5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeCallNode.html#adcd169de4a8923b333f721d5c79dcbc5">SEqualReduce</a> (const <a class="el" href="classtvm_1_1TypeCallNode.html">TypeCallNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equ [...]
 <tr class="separator:adcd169de4a8923b333f721d5c79dcbc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad26289590f6b21bdf772529ed56d1f0c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeCallNode.html#ad26289590f6b21bdf772529ed56d1f0c">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ad26289590f6b21bdf772529ed56d1f0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1TypeDataNode.html b/docs/api/doxygen/classtvm_1_1TypeDataNode.html
index 36af76f..3fb4c09 100644
--- a/docs/api/doxygen/classtvm_1_1TypeDataNode.html
+++ b/docs/api/doxygen/classtvm_1_1TypeDataNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::TypeDataNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:aa8db517fa4778bf6c3f2106133fba7d5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeDataNode.html#aa8db517fa4778bf6c3f2106133fba7d5">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:aa8db517fa4778bf6c3f2106133fba7d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab7ebb91263a4262e63910ae4bfc8deb7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeDataNode.html#ab7ebb91263a4262e63910ae4bfc8deb7">SEqualReduce</a> (const <a class="el" href="classtvm_1_1TypeDataNode.html">TypeDataNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:ab7ebb91263a4262e63910ae4bfc8deb7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeDataNode.html#ab7ebb91263a4262e63910ae4bfc8deb7">SEqualReduce</a> (const <a class="el" href="classtvm_1_1TypeDataNode.html">TypeDataNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equ [...]
 <tr class="separator:ab7ebb91263a4262e63910ae4bfc8deb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a66e9988584461e9d3d737f32386aeaad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeDataNode.html#a66e9988584461e9d3d737f32386aeaad">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a66e9988584461e9d3d737f32386aeaad"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1TypeRelationNode.html b/docs/api/doxygen/classtvm_1_1TypeRelationNode.html
index 03b6d95..7e0b591 100644
--- a/docs/api/doxygen/classtvm_1_1TypeRelationNode.html
+++ b/docs/api/doxygen/classtvm_1_1TypeRelationNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::TypeRelationNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:af6546e6843f43431258a68f2ac933146"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeRelationNode.html#af6546e6843f43431258a68f2ac933146">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:af6546e6843f43431258a68f2ac933146"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9aa8c552275b3a65fffdef92e9f655cd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeRelationNode.html#a9aa8c552275b3a65fffdef92e9f655cd">SEqualReduce</a> (const <a class="el" href="classtvm_1_1TypeRelationNode.html">TypeRelationNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a9aa8c552275b3a65fffdef92e9f655cd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeRelationNode.html#a9aa8c552275b3a65fffdef92e9f655cd">SEqualReduce</a> (const <a class="el" href="classtvm_1_1TypeRelationNode.html">TypeRelationNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460 [...]
 <tr class="separator:a9aa8c552275b3a65fffdef92e9f655cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a782c2d917afb155569b9e074101cebac"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeRelationNode.html#a782c2d917afb155569b9e074101cebac">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a782c2d917afb155569b9e074101cebac"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1TypeVarNode.html b/docs/api/doxygen/classtvm_1_1TypeVarNode.html
index c528f9c..2461d34 100644
--- a/docs/api/doxygen/classtvm_1_1TypeVarNode.html
+++ b/docs/api/doxygen/classtvm_1_1TypeVarNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::TypeVarNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a1ff00c9482ca9e0366e40237180189c7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeVarNode.html#a1ff00c9482ca9e0366e40237180189c7">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a1ff00c9482ca9e0366e40237180189c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa705547c1fd4e702d2d9f295ce609605"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeVarNode.html#aa705547c1fd4e702d2d9f295ce609605">SEqualReduce</a> (const <a class="el" href="classtvm_1_1TypeVarNode.html">TypeVarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:aa705547c1fd4e702d2d9f295ce609605"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeVarNode.html#aa705547c1fd4e702d2d9f295ce609605">SEqualReduce</a> (const <a class="el" href="classtvm_1_1TypeVarNode.html">TypeVarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal< [...]
 <tr class="separator:aa705547c1fd4e702d2d9f295ce609605"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a301a22d01b973716f47a13a29119cfd9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeVarNode.html#a301a22d01b973716f47a13a29119cfd9">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a301a22d01b973716f47a13a29119cfd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1arith_1_1ConstIntBound.html b/docs/api/doxygen/classtvm_1_1arith_1_1ConstIntBound.html
index 11098b5..32b6f3b 100644
--- a/docs/api/doxygen/classtvm_1_1arith_1_1ConstIntBound.html
+++ b/docs/api/doxygen/classtvm_1_1arith_1_1ConstIntBound.html
@@ -115,7 +115,7 @@ Collaboration diagram for tvm::arith::ConstIntBound:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:aefb417203cf5c5996d7ed664051aaba3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ConstIntBound.html#aefb417203cf5c5996d7ed664051aaba3">ConstIntBound</a> (int64_t <a class="el" href="namespacetvm.html#a9c126a8dde0d4079713969ca574f172e">min_value</a>, int64_t <a class="el" href="namespacetvm.html#a2741c5a48b50bf369026a1bbdf02017f">max_value</a>)</td></tr>
+<tr class="memitem:aefb417203cf5c5996d7ed664051aaba3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ConstIntBound.html#aefb417203cf5c5996d7ed664051aaba3">ConstIntBound</a> (int64_t <a class="el" href="namespacetvm.html#a3b37fa55ea93d6868751a2441996b072">min_value</a>, int64_t <a class="el" href="namespacetvm.html#a4f1398024c0af23699447ef910b654b8">max_value</a>)</td></tr>
 <tr class="memdesc:aefb417203cf5c5996d7ed664051aaba3"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructor by fields.  <a href="#aefb417203cf5c5996d7ed664051aaba3">More...</a><br /></td></tr>
 <tr class="separator:aefb417203cf5c5996d7ed664051aaba3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2a26440158e4037dc8f82ba6ad0f296b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ConstIntBound.html#a2a26440158e4037dc8f82ba6ad0f296b">TVM_DEFINE_OBJECT_REF_METHODS</a> (<a class="el" href="classtvm_1_1arith_1_1ConstIntBound.html">ConstIntBound</a>, ObjectRef, <a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html">ConstIntBoundNode</a>)</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1arith_1_1ConstIntBoundNode.html b/docs/api/doxygen/classtvm_1_1arith_1_1ConstIntBoundNode.html
index f7834e5..e5a2e09 100644
--- a/docs/api/doxygen/classtvm_1_1arith_1_1ConstIntBoundNode.html
+++ b/docs/api/doxygen/classtvm_1_1arith_1_1ConstIntBoundNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::arith::ConstIntBoundNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:ac3b75966532b9fa16d96df991f33076f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html#ac3b75966532b9fa16d96df991f33076f">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:ac3b75966532b9fa16d96df991f33076f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0d39b4e097e1e0e4fffd85d3d2b22459"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a0d39b4e097e1e0e4fffd85d3d2b22459">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html">ConstIntBoundNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a0d39b4e097e1e0e4fffd85d3d2b22459"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a0d39b4e097e1e0e4fffd85d3d2b22459">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html">ConstIntBoundNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f [...]
 <tr class="separator:a0d39b4e097e1e0e4fffd85d3d2b22459"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a79d78aaf1f1c3e974a3fbe4f4875e8ee"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a79d78aaf1f1c3e974a3fbe4f4875e8ee">TVM_DECLARE_FINAL_OBJECT_INFO</a> (<a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html">ConstIntBoundNode</a>, Object)</td></tr>
 <tr class="separator:a79d78aaf1f1c3e974a3fbe4f4875e8ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -132,7 +132,7 @@ Public Attributes</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
-<tr class="memitem:a035f9270597638a44a55dd2552f4ad20"><td class="memItemLeft" align="right" valign="top">static const constexpr int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a035f9270597638a44a55dd2552f4ad20">kPosInf</a> = std::numeric_limits&lt;int64_t&gt;::<a class="el" href="namespacetvm.html#ab49bad0808ba033343e72ba37b39af2e">max</a>()</td></tr>
+<tr class="memitem:a035f9270597638a44a55dd2552f4ad20"><td class="memItemLeft" align="right" valign="top">static const constexpr int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a035f9270597638a44a55dd2552f4ad20">kPosInf</a> = std::numeric_limits&lt;int64_t&gt;::<a class="el" href="namespacetvm.html#a0df5ca82d2c566f628ebb2f1e84a3fcb">max</a>()</td></tr>
 <tr class="memdesc:a035f9270597638a44a55dd2552f4ad20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number to represent +inf.  <a href="#a035f9270597638a44a55dd2552f4ad20">More...</a><br /></td></tr>
 <tr class="separator:a035f9270597638a44a55dd2552f4ad20"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a0d8f5f54f4f380f664016f466f100b3a"><td class="memItemLeft" align="right" valign="top">static const constexpr int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a0d8f5f54f4f380f664016f466f100b3a">kNegInf</a> = -<a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html#a035f9270597638a44a55dd2552f4ad20">kPosInf</a></td></tr>
@@ -281,7 +281,7 @@ Static Public Attributes</h2></td></tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">const constexpr int64_t tvm::arith::ConstIntBoundNode::kPosInf = std::numeric_limits&lt;int64_t&gt;::<a class="el" href="namespacetvm.html#ab49bad0808ba033343e72ba37b39af2e">max</a>()</td>
+          <td class="memname">const constexpr int64_t tvm::arith::ConstIntBoundNode::kPosInf = std::numeric_limits&lt;int64_t&gt;::<a class="el" href="namespacetvm.html#a0df5ca82d2c566f628ebb2f1e84a3fcb">max</a>()</td>
         </tr>
       </table>
   </td>
diff --git a/docs/api/doxygen/classtvm_1_1arith_1_1IntConstraintsNode.html b/docs/api/doxygen/classtvm_1_1arith_1_1IntConstraintsNode.html
index 21e48e2..8cd98df 100644
--- a/docs/api/doxygen/classtvm_1_1arith_1_1IntConstraintsNode.html
+++ b/docs/api/doxygen/classtvm_1_1arith_1_1IntConstraintsNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::arith::IntConstraintsNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a573e4d3c082de85bae790a9b7327d648"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IntConstraintsNode.html#a573e4d3c082de85bae790a9b7327d648">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a573e4d3c082de85bae790a9b7327d648"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5202a1e2dfa0a4a7bafded36a83cef3d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IntConstraintsNode.html#a5202a1e2dfa0a4a7bafded36a83cef3d">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1IntConstraintsNode.html">IntConstraintsNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a5202a1e2dfa0a4a7bafded36a83cef3d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IntConstraintsNode.html#a5202a1e2dfa0a4a7bafded36a83cef3d">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1IntConstraintsNode.html">IntConstraintsNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1 [...]
 <tr class="separator:a5202a1e2dfa0a4a7bafded36a83cef3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a5d57281755828eca3508ad3b88dcfab7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IntConstraintsNode.html#a5d57281755828eca3508ad3b88dcfab7">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a5d57281755828eca3508ad3b88dcfab7"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1arith_1_1IntConstraintsTransformNode.html b/docs/api/doxygen/classtvm_1_1arith_1_1IntConstraintsTransformNode.html
index 1c04674..ab45ac9 100644
--- a/docs/api/doxygen/classtvm_1_1arith_1_1IntConstraintsTransformNode.html
+++ b/docs/api/doxygen/classtvm_1_1arith_1_1IntConstraintsTransformNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::arith::IntConstraintsTransformNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:afcbf2cc97faab0052dd97cae3baa90f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IntConstraintsTransformNode.html#afcbf2cc97faab0052dd97cae3baa90f7">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:afcbf2cc97faab0052dd97cae3baa90f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5585d87d2edfd50526daa8c19c62600e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IntConstraintsTransformNode.html#a5585d87d2edfd50526daa8c19c62600e">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1IntConstraintsTransformNode.html">IntConstraintsTransformNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const  [...]
+<tr class="memitem:a5585d87d2edfd50526daa8c19c62600e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IntConstraintsTransformNode.html#a5585d87d2edfd50526daa8c19c62600e">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1IntConstraintsTransformNode.html">IntConstraintsTransformNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" [...]
 <tr class="separator:a5585d87d2edfd50526daa8c19c62600e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a65dd0c31e12aa294a3d7f98dcb551ab0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IntConstraintsTransformNode.html#a65dd0c31e12aa294a3d7f98dcb551ab0">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a65dd0c31e12aa294a3d7f98dcb551ab0"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1arith_1_1IntGroupBounds.html b/docs/api/doxygen/classtvm_1_1arith_1_1IntGroupBounds.html
index f58ab1d..6559625 100644
--- a/docs/api/doxygen/classtvm_1_1arith_1_1IntGroupBounds.html
+++ b/docs/api/doxygen/classtvm_1_1arith_1_1IntGroupBounds.html
@@ -115,7 +115,7 @@ Collaboration diagram for tvm::arith::IntGroupBounds:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a7f2fbfd39f1fc030b13056cf28d7c17c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IntGroupBounds.html#a7f2fbfd39f1fc030b13056cf28d7c17c">IntGroupBounds</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> coef, Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; <a class="el" href="namespacetvm.html#a3ab284fe08e7bcfb9b9fe33f18f5f205">lower [...]
+<tr class="memitem:a7f2fbfd39f1fc030b13056cf28d7c17c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IntGroupBounds.html#a7f2fbfd39f1fc030b13056cf28d7c17c">IntGroupBounds</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> coef, Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; <a class="el" href="namespacetvm.html#a3ab284fe08e7bcfb9b9fe33f18f5f205">lower [...]
 <tr class="memdesc:a7f2fbfd39f1fc030b13056cf28d7c17c"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1Constructor.html" title="Managed reference to ConstructorNode. ">Constructor</a> by fields.  <a href="#a7f2fbfd39f1fc030b13056cf28d7c17c">More...</a><br /></td></tr>
 <tr class="separator:a7f2fbfd39f1fc030b13056cf28d7c17c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab722c6d564384b7d6e9160e9b83297c2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1arith_1_1IntGroupBounds.html">IntGroupBounds</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IntGroupBounds.html#ab722c6d564384b7d6e9160e9b83297c2">Substitute</a> (const <a class="el" href="classtvm_1_1Map.html">Map</a>&lt; Var, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; &amp;subst) c [...]
diff --git a/docs/api/doxygen/classtvm_1_1arith_1_1IterMarkNode.html b/docs/api/doxygen/classtvm_1_1arith_1_1IterMarkNode.html
index 3f3072f..fcbb4e1 100644
--- a/docs/api/doxygen/classtvm_1_1arith_1_1IterMarkNode.html
+++ b/docs/api/doxygen/classtvm_1_1arith_1_1IterMarkNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::arith::IterMarkNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a1a880e93a07e59a497f391ee5bc96c58"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IterMarkNode.html#a1a880e93a07e59a497f391ee5bc96c58">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a1a880e93a07e59a497f391ee5bc96c58"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a674c0a9178a5b7dd18ec1fa94c0af3d5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IterMarkNode.html#a674c0a9178a5b7dd18ec1fa94c0af3d5">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1IterMarkNode.html">IterMarkNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a674c0a9178a5b7dd18ec1fa94c0af3d5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IterMarkNode.html#a674c0a9178a5b7dd18ec1fa94c0af3d5">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1IterMarkNode.html">IterMarkNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d [...]
 <tr class="separator:a674c0a9178a5b7dd18ec1fa94c0af3d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab0101674993489cadc0a2e2070151116"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IterMarkNode.html#ab0101674993489cadc0a2e2070151116">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ab0101674993489cadc0a2e2070151116"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1arith_1_1IterSplitExprNode.html b/docs/api/doxygen/classtvm_1_1arith_1_1IterSplitExprNode.html
index 6ec9041..cc1e4e4 100644
--- a/docs/api/doxygen/classtvm_1_1arith_1_1IterSplitExprNode.html
+++ b/docs/api/doxygen/classtvm_1_1arith_1_1IterSplitExprNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::arith::IterSplitExprNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a3890f93618271cf489e46672819073a2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IterSplitExprNode.html#a3890f93618271cf489e46672819073a2">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a3890f93618271cf489e46672819073a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4e11baede18e438a30173da6e77067f6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IterSplitExprNode.html#a4e11baede18e438a30173da6e77067f6">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1IterSplitExprNode.html">IterSplitExprNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a4e11baede18e438a30173da6e77067f6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IterSplitExprNode.html#a4e11baede18e438a30173da6e77067f6">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1IterSplitExprNode.html">IterSplitExprNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f [...]
 <tr class="separator:a4e11baede18e438a30173da6e77067f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4bd155bbb21dcb4588078e980d950589"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IterSplitExprNode.html#a4bd155bbb21dcb4588078e980d950589">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a4bd155bbb21dcb4588078e980d950589"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1arith_1_1IterSumExprNode.html b/docs/api/doxygen/classtvm_1_1arith_1_1IterSumExprNode.html
index 35b3848..ce9b7dc 100644
--- a/docs/api/doxygen/classtvm_1_1arith_1_1IterSumExprNode.html
+++ b/docs/api/doxygen/classtvm_1_1arith_1_1IterSumExprNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::arith::IterSumExprNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:adf293d649d6c073dafcd0dad75bb4505"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IterSumExprNode.html#adf293d649d6c073dafcd0dad75bb4505">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:adf293d649d6c073dafcd0dad75bb4505"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3bb246dbad5378cd55fcc1bade751893"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IterSumExprNode.html#a3bb246dbad5378cd55fcc1bade751893">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1IterSumExprNode.html">IterSumExprNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a3bb246dbad5378cd55fcc1bade751893"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IterSumExprNode.html#a3bb246dbad5378cd55fcc1bade751893">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1IterSumExprNode.html">IterSumExprNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b [...]
 <tr class="separator:a3bb246dbad5378cd55fcc1bade751893"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a8bdfa39d48e6ae5aed1fa2e2a64db192"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1IterSumExprNode.html#a8bdfa39d48e6ae5aed1fa2e2a64db192">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a8bdfa39d48e6ae5aed1fa2e2a64db192"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1arith_1_1ModularSetNode.html b/docs/api/doxygen/classtvm_1_1arith_1_1ModularSetNode.html
index 3e12f9f..48be9a8 100644
--- a/docs/api/doxygen/classtvm_1_1arith_1_1ModularSetNode.html
+++ b/docs/api/doxygen/classtvm_1_1arith_1_1ModularSetNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::arith::ModularSetNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a5b5bf53e26881ec83777f2a3c41a4031"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ModularSetNode.html#a5b5bf53e26881ec83777f2a3c41a4031">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a5b5bf53e26881ec83777f2a3c41a4031"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a04a38e5207637fda175b031e3b569349"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ModularSetNode.html#a04a38e5207637fda175b031e3b569349">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1ModularSetNode.html">ModularSetNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a04a38e5207637fda175b031e3b569349"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ModularSetNode.html#a04a38e5207637fda175b031e3b569349">SEqualReduce</a> (const <a class="el" href="classtvm_1_1arith_1_1ModularSetNode.html">ModularSetNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85b [...]
 <tr class="separator:a04a38e5207637fda175b031e3b569349"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aaf398fe14003c53e0452dfde19fd1404"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1arith_1_1ModularSetNode.html#aaf398fe14003c53e0452dfde19fd1404">TVM_DECLARE_FINAL_OBJECT_INFO</a> (<a class="el" href="classtvm_1_1arith_1_1ModularSetNode.html">ModularSetNode</a>, Object)</td></tr>
 <tr class="separator:aaf398fe14003c53e0452dfde19fd1404"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParams-members.html b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParams-members.html
index e78e223..39a7b87 100644
--- a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParams-members.html
+++ b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParams-members.html
@@ -94,7 +94,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html">tvm::auto_scheduler::HardwareParams</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html#a505cdbf19238fca932953095f8e7e810">HardwareParams</a>(int num_cores, int vector_unit_bytes, int cache_line_bytes, int max_shared_memory_per_block, int max_registers_per_block, int max_threads_per_block, int max_vthread_extent, int warp_size)</td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html">tvm::auto_scheduler::HardwareParams</a></td><td  [...]
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html#a2902d3e603de5efd1e53ec6c0c4de641">HardwareParams</a>(int num_cores, int vector_unit_bytes, int cache_line_bytes, int max_shared_memory_per_block, int max_local_memory_per_block, int max_threads_per_block, int max_vthread_extent, int warp_size)</td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html">tvm::auto_scheduler::HardwareParams</a></td>< [...]
   <tr><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html#a5c34303fd0548a7942f3a250cd31664c">TVM_DEFINE_OBJECT_REF_COW_METHOD</a>(HardwareParamsNode)</td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html">tvm::auto_scheduler::HardwareParams</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html#a4e2d457b4066992d541e831042e40e20">TVM_DEFINE_OBJECT_REF_METHODS</a>(HardwareParams, ObjectRef, HardwareParamsNode)</td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html">tvm::auto_scheduler::HardwareParams</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
diff --git a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParams.html b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParams.html
index a3f13c1..4a99a69 100644
--- a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParams.html
+++ b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParams.html
@@ -114,9 +114,9 @@ Collaboration diagram for tvm::auto_scheduler::HardwareParams:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a505cdbf19238fca932953095f8e7e810"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html#a505cdbf19238fca932953095f8e7e810">HardwareParams</a> (int num_cores, int vector_unit_bytes, int cache_line_bytes, int max_shared_memory_per_block, int max_registers_per_block, int max_threads_per_block, int max_vthread_extent, int warp_size)</td></tr>
-<tr class="memdesc:a505cdbf19238fca932953095f8e7e810"><td class="mdescLeft">&#160;</td><td class="mdescRight">The constructor.  <a href="#a505cdbf19238fca932953095f8e7e810">More...</a><br /></td></tr>
-<tr class="separator:a505cdbf19238fca932953095f8e7e810"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2902d3e603de5efd1e53ec6c0c4de641"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html#a2902d3e603de5efd1e53ec6c0c4de641">HardwareParams</a> (int num_cores, int vector_unit_bytes, int cache_line_bytes, int max_shared_memory_per_block, int max_local_memory_per_block, int max_threads_per_block, int max_vthread_extent, int warp_size)</td></tr>
+<tr class="memdesc:a2902d3e603de5efd1e53ec6c0c4de641"><td class="mdescLeft">&#160;</td><td class="mdescRight">The constructor.  <a href="#a2902d3e603de5efd1e53ec6c0c4de641">More...</a><br /></td></tr>
+<tr class="separator:a2902d3e603de5efd1e53ec6c0c4de641"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4e2d457b4066992d541e831042e40e20"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html#a4e2d457b4066992d541e831042e40e20">TVM_DEFINE_OBJECT_REF_METHODS</a> (<a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html">HardwareParams</a>, ObjectRef, <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html">HardwareParamsN [...]
 <tr class="separator:a4e2d457b4066992d541e831042e40e20"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a5c34303fd0548a7942f3a250cd31664c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html#a5c34303fd0548a7942f3a250cd31664c">TVM_DEFINE_OBJECT_REF_COW_METHOD</a> (<a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html">HardwareParamsNode</a>)</td></tr>
@@ -126,7 +126,7 @@ Public Member Functions</h2></td></tr>
 <div class="textblock"><p>Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html" title="The parameters of target hardware used to guide the SearchPolicy. ">HardwareParamsNode</a>. </p>
 <dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html" title="The parameters of target hardware used to guide the SearchPolicy. ">HardwareParamsNode</a> </dd></dl>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a505cdbf19238fca932953095f8e7e810"></a>
+<a class="anchor" id="a2902d3e603de5efd1e53ec6c0c4de641"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -158,7 +158,7 @@ Public Member Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>max_registers_per_block</em>, </td>
+          <td class="paramname"><em>max_local_memory_per_block</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
@@ -193,7 +193,7 @@ Public Member Functions</h2></td></tr>
     <tr><td class="paramname">vector_unit_bytes</td><td>The width of vector units in bytes. </td></tr>
     <tr><td class="paramname">cache_line_bytes</td><td>The size of cache line in bytes. </td></tr>
     <tr><td class="paramname">max_shared_memory_per_block</td><td>The max amount of shared memory per block for GPU. </td></tr>
-    <tr><td class="paramname">max_registers_per_block</td><td>The max number of registers per block for GPU. </td></tr>
+    <tr><td class="paramname">max_local_memory_per_block</td><td>The max amount of local memory per block for GPU. </td></tr>
     <tr><td class="paramname">max_threads_per_block</td><td>The max number of threads per block for GPU. </td></tr>
     <tr><td class="paramname">max_vthread_extent</td><td>The max extent of vthread for GPU. </td></tr>
     <tr><td class="paramname">warp_size</td><td>The warp size for GPU </td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode-members.html b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode-members.html
index ab1f19b..73af627 100644
--- a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode-members.html
+++ b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode-members.html
@@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#ae5bc9c8d5e48ac5c1a40460782fbd9d7">_type_key</a></td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html">tvm::auto_scheduler::HardwareParamsNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a3ed41e95549c177c0e3cbafefc0f3959">cache_line_bytes</a></td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html">tvm::auto_scheduler::HardwareParamsNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a3cfb6a112cdba2a35afeaea9132ef620">GetDefaultHardwareParams</a>(const Target &amp;target, const Target &amp;target_host)</td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html">tvm::auto_scheduler::HardwareParamsNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#ad55b0e173c411a119c4b082d3c72a6a7">max_registers_per_block</a></td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html">tvm::auto_scheduler::HardwareParamsNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a2b69e195b9df238a5c80e4cd0857c798">max_local_memory_per_block</a></td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html">tvm::auto_scheduler::HardwareParamsNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a611354f04e68577ceb48d44b8e714b13">max_shared_memory_per_block</a></td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html">tvm::auto_scheduler::HardwareParamsNode</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a43215db47037adc2f63595ef83528c37">max_threads_per_block</a></td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html">tvm::auto_scheduler::HardwareParamsNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a566e92938030920506a1b246ec9a0ac4">max_vthread_extent</a></td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html">tvm::auto_scheduler::HardwareParamsNode</a></td><td class="entry"></td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html
index 1eb512c..2cc5bf7 100644
--- a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html
+++ b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html
@@ -105,13 +105,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="dynheader">
 Inheritance diagram for tvm::auto_scheduler::HardwareParamsNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1auto__scheduler_1_1HardwareParamsNode__inherit__graph.svg" width="284" height="390"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1auto__scheduler_1_1HardwareParamsNode__inherit__graph.svg" width="284" height="404"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::auto_scheduler::HardwareParamsNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1auto__scheduler_1_1HardwareParamsNode__coll__graph.svg" width="284" height="390"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1auto__scheduler_1_1HardwareParamsNode__coll__graph.svg" width="284" height="404"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </div>
 </div>
 <table class="memberdecls">
@@ -142,9 +142,9 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:a611354f04e68577ceb48d44b8e714b13"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a611354f04e68577ceb48d44b8e714b13">max_shared_memory_per_block</a></td></tr>
 <tr class="memdesc:a611354f04e68577ceb48d44b8e714b13"><td class="mdescLeft">&#160;</td><td class="mdescRight">The max shared memory per block in bytes.  <a href="#a611354f04e68577ceb48d44b8e714b13">More...</a><br /></td></tr>
 <tr class="separator:a611354f04e68577ceb48d44b8e714b13"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad55b0e173c411a119c4b082d3c72a6a7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#ad55b0e173c411a119c4b082d3c72a6a7">max_registers_per_block</a></td></tr>
-<tr class="memdesc:ad55b0e173c411a119c4b082d3c72a6a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">The max number of register per block.  <a href="#ad55b0e173c411a119c4b082d3c72a6a7">More...</a><br /></td></tr>
-<tr class="separator:ad55b0e173c411a119c4b082d3c72a6a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2b69e195b9df238a5c80e4cd0857c798"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a2b69e195b9df238a5c80e4cd0857c798">max_local_memory_per_block</a></td></tr>
+<tr class="memdesc:a2b69e195b9df238a5c80e4cd0857c798"><td class="mdescLeft">&#160;</td><td class="mdescRight">The max local memory per block in bytes.  <a href="#a2b69e195b9df238a5c80e4cd0857c798">More...</a><br /></td></tr>
+<tr class="separator:a2b69e195b9df238a5c80e4cd0857c798"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a43215db47037adc2f63595ef83528c37"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a43215db47037adc2f63595ef83528c37">max_threads_per_block</a></td></tr>
 <tr class="memdesc:a43215db47037adc2f63595ef83528c37"><td class="mdescLeft">&#160;</td><td class="mdescRight">The max number of threads per block.  <a href="#a43215db47037adc2f63595ef83528c37">More...</a><br /></td></tr>
 <tr class="separator:a43215db47037adc2f63595ef83528c37"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -292,17 +292,17 @@ Static Public Attributes</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="ad55b0e173c411a119c4b082d3c72a6a7"></a>
+<a class="anchor" id="a2b69e195b9df238a5c80e4cd0857c798"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int tvm::auto_scheduler::HardwareParamsNode::max_registers_per_block</td>
+          <td class="memname">int tvm::auto_scheduler::HardwareParamsNode::max_local_memory_per_block</td>
         </tr>
       </table>
 </div><div class="memdoc">
 
-<p>The max number of register per block. </p>
+<p>The max local memory per block in bytes. </p>
 
 </div>
 </div>
diff --git a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode__coll__graph.svg b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode__coll__graph.svg
index d090205..aee7670 100644
--- a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode__coll__graph.svg
+++ b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode__coll__graph.svg
@@ -4,23 +4,24 @@
 <!-- Generated by graphviz version 2.38.0 (20140413.2041)
  -->
 <!-- Title: tvm::auto_scheduler::HardwareParamsNode Pages: 1 -->
-<svg width="213pt" height="292pt"
- viewBox="0.00 0.00 213.00 292.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 288)">
+<svg width="213pt" height="303pt"
+ viewBox="0.00 0.00 213.00 303.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 299)">
 <title>tvm::auto_scheduler::HardwareParamsNode</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-288 209,-288 209,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-299 209,-299 209,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node"><title>Node1</title>
-<polygon fill="#bfbfbf" stroke="black" points="-1.42109e-14,-0.5 -1.42109e-14,-189.5 205,-189.5 205,-0.5 -1.42109e-14,-0.5"/>
-<text text-anchor="start" x="8" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::auto_scheduler</text>
-<text text-anchor="middle" x="102.5" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HardwareParamsNode</text>
-<polyline fill="none" stroke="black" points="-1.42109e-14,-159.5 205,-159.5 "/>
-<text text-anchor="start" x="8" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ num_cores</text>
-<text text-anchor="start" x="8" y="-136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vector_unit_bytes</text>
-<text text-anchor="start" x="8" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ cache_line_bytes</text>
-<text text-anchor="start" x="8" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ max_shared_memory_per</text>
-<text text-anchor="start" x="8" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">_block</text>
-<text text-anchor="start" x="8" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ max_registers_per_block</text>
+<polygon fill="#bfbfbf" stroke="black" points="-1.42109e-14,-0.5 -1.42109e-14,-200.5 205,-200.5 205,-0.5 -1.42109e-14,-0.5"/>
+<text text-anchor="start" x="8" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::auto_scheduler</text>
+<text text-anchor="middle" x="102.5" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HardwareParamsNode</text>
+<polyline fill="none" stroke="black" points="-1.42109e-14,-170.5 205,-170.5 "/>
+<text text-anchor="start" x="8" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ num_cores</text>
+<text text-anchor="start" x="8" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vector_unit_bytes</text>
+<text text-anchor="start" x="8" y="-136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ cache_line_bytes</text>
+<text text-anchor="start" x="8" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ max_shared_memory_per</text>
+<text text-anchor="start" x="8" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00">_block</text>
+<text text-anchor="start" x="8" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ max_local_memory_per</text>
+<text text-anchor="start" x="8" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">_block</text>
 <text text-anchor="start" x="8" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ max_threads_per_block</text>
 <text text-anchor="start" x="8" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ max_vthread_extent</text>
 <text text-anchor="start" x="8" y="-59.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ warp_size</text>
@@ -32,17 +33,17 @@
 </g>
 <!-- Node2 -->
 <g id="node2" class="node"><title>Node2</title>
-<polygon fill="white" stroke="#bfbfbf" points="79,-226.5 79,-283.5 126,-283.5 126,-226.5 79,-226.5"/>
-<text text-anchor="middle" x="102.5" y="-271.5" font-family="Helvetica,sans-Serif" font-size="10.00">Object</text>
-<polyline fill="none" stroke="#bfbfbf" points="79,-264.5 126,-264.5 "/>
-<text text-anchor="middle" x="102.5" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="#bfbfbf" points="79,-245.5 126,-245.5 "/>
-<text text-anchor="middle" x="102.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="white" stroke="#bfbfbf" points="79,-237.5 79,-294.5 126,-294.5 126,-237.5 79,-237.5"/>
+<text text-anchor="middle" x="102.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">Object</text>
+<polyline fill="none" stroke="#bfbfbf" points="79,-275.5 126,-275.5 "/>
+<text text-anchor="middle" x="102.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="#bfbfbf" points="79,-256.5 126,-256.5 "/>
+<text text-anchor="middle" x="102.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M102.5,-216.215C102.5,-208.012 102.5,-198.986 102.5,-189.678"/>
-<polygon fill="none" stroke="midnightblue" points="99.0001,-216.478 102.5,-226.479 106,-216.479 99.0001,-216.478"/>
+<path fill="none" stroke="midnightblue" d="M102.5,-227.04C102.5,-218.867 102.5,-209.865 102.5,-200.549"/>
+<polygon fill="none" stroke="midnightblue" points="99.0001,-227.264 102.5,-237.264 106,-227.264 99.0001,-227.264"/>
 </g>
 </g>
 </svg>
diff --git a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode__inherit__graph.svg b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode__inherit__graph.svg
index d090205..aee7670 100644
--- a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode__inherit__graph.svg
+++ b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1HardwareParamsNode__inherit__graph.svg
@@ -4,23 +4,24 @@
 <!-- Generated by graphviz version 2.38.0 (20140413.2041)
  -->
 <!-- Title: tvm::auto_scheduler::HardwareParamsNode Pages: 1 -->
-<svg width="213pt" height="292pt"
- viewBox="0.00 0.00 213.00 292.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 288)">
+<svg width="213pt" height="303pt"
+ viewBox="0.00 0.00 213.00 303.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 299)">
 <title>tvm::auto_scheduler::HardwareParamsNode</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-288 209,-288 209,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-299 209,-299 209,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node"><title>Node1</title>
-<polygon fill="#bfbfbf" stroke="black" points="-1.42109e-14,-0.5 -1.42109e-14,-189.5 205,-189.5 205,-0.5 -1.42109e-14,-0.5"/>
-<text text-anchor="start" x="8" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::auto_scheduler</text>
-<text text-anchor="middle" x="102.5" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HardwareParamsNode</text>
-<polyline fill="none" stroke="black" points="-1.42109e-14,-159.5 205,-159.5 "/>
-<text text-anchor="start" x="8" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ num_cores</text>
-<text text-anchor="start" x="8" y="-136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vector_unit_bytes</text>
-<text text-anchor="start" x="8" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ cache_line_bytes</text>
-<text text-anchor="start" x="8" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ max_shared_memory_per</text>
-<text text-anchor="start" x="8" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">_block</text>
-<text text-anchor="start" x="8" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ max_registers_per_block</text>
+<polygon fill="#bfbfbf" stroke="black" points="-1.42109e-14,-0.5 -1.42109e-14,-200.5 205,-200.5 205,-0.5 -1.42109e-14,-0.5"/>
+<text text-anchor="start" x="8" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::auto_scheduler</text>
+<text text-anchor="middle" x="102.5" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">::HardwareParamsNode</text>
+<polyline fill="none" stroke="black" points="-1.42109e-14,-170.5 205,-170.5 "/>
+<text text-anchor="start" x="8" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ num_cores</text>
+<text text-anchor="start" x="8" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ vector_unit_bytes</text>
+<text text-anchor="start" x="8" y="-136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ cache_line_bytes</text>
+<text text-anchor="start" x="8" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ max_shared_memory_per</text>
+<text text-anchor="start" x="8" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00">_block</text>
+<text text-anchor="start" x="8" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ max_local_memory_per</text>
+<text text-anchor="start" x="8" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">_block</text>
 <text text-anchor="start" x="8" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ max_threads_per_block</text>
 <text text-anchor="start" x="8" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ max_vthread_extent</text>
 <text text-anchor="start" x="8" y="-59.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ warp_size</text>
@@ -32,17 +33,17 @@
 </g>
 <!-- Node2 -->
 <g id="node2" class="node"><title>Node2</title>
-<polygon fill="white" stroke="#bfbfbf" points="79,-226.5 79,-283.5 126,-283.5 126,-226.5 79,-226.5"/>
-<text text-anchor="middle" x="102.5" y="-271.5" font-family="Helvetica,sans-Serif" font-size="10.00">Object</text>
-<polyline fill="none" stroke="#bfbfbf" points="79,-264.5 126,-264.5 "/>
-<text text-anchor="middle" x="102.5" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="#bfbfbf" points="79,-245.5 126,-245.5 "/>
-<text text-anchor="middle" x="102.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="white" stroke="#bfbfbf" points="79,-237.5 79,-294.5 126,-294.5 126,-237.5 79,-237.5"/>
+<text text-anchor="middle" x="102.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">Object</text>
+<polyline fill="none" stroke="#bfbfbf" points="79,-275.5 126,-275.5 "/>
+<text text-anchor="middle" x="102.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="#bfbfbf" points="79,-256.5 126,-256.5 "/>
+<text text-anchor="middle" x="102.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M102.5,-216.215C102.5,-208.012 102.5,-198.986 102.5,-189.678"/>
-<polygon fill="none" stroke="midnightblue" points="99.0001,-216.478 102.5,-226.479 106,-216.479 99.0001,-216.478"/>
+<path fill="none" stroke="midnightblue" d="M102.5,-227.04C102.5,-218.867 102.5,-209.865 102.5,-200.549"/>
+<polygon fill="none" stroke="midnightblue" points="99.0001,-227.264 102.5,-237.264 106,-227.264 99.0001,-227.264"/>
 </g>
 </g>
 </svg>
diff --git a/docs/api/doxygen/classtvm_1_1detail_1_1AttrsSEqualVisitor.html b/docs/api/doxygen/classtvm_1_1detail_1_1AttrsSEqualVisitor.html
index ca28dbc..431db78 100644
--- a/docs/api/doxygen/classtvm_1_1detail_1_1AttrsSEqualVisitor.html
+++ b/docs/api/doxygen/classtvm_1_1detail_1_1AttrsSEqualVisitor.html
@@ -106,7 +106,7 @@ Collaboration diagram for tvm::detail::AttrsSEqualVisitor:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ac67ceda6a413da78e61fa91ca61fcf26"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1detail_1_1AttrsSEqualVisitor.html#ac67ceda6a413da78e61fa91ca61fcf26">AttrsSEqualVisitor</a> (const Object *lhs, const Object *rhs, const <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> &amp;equal)</td></tr>
+<tr class="memitem:ac67ceda6a413da78e61fa91ca61fcf26"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1detail_1_1AttrsSEqualVisitor.html#ac67ceda6a413da78e61fa91ca61fcf26">AttrsSEqualVisitor</a> (const Object *lhs, const Object *rhs, const <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> &amp;<a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a>)</td></tr>
 <tr class="separator:ac67ceda6a413da78e61fa91ca61fcf26"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aaea4233b109948ae631d100368a02ad1"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 <tr class="memitem:aaea4233b109948ae631d100368a02ad1"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structtvm_1_1detail_1_1AttrNopEntry.html">AttrNopEntry</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtvm_1_1detail_1_1AttrsSEqualVisitor.html#aaea4233b109948ae631d100368a02ad1">operator()</a> (const char *key, T *lhs_value)</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1parser_1_1SourceMapNode.html b/docs/api/doxygen/classtvm_1_1parser_1_1SourceMapNode.html
index 72088a3..b92f70a 100644
--- a/docs/api/doxygen/classtvm_1_1parser_1_1SourceMapNode.html
+++ b/docs/api/doxygen/classtvm_1_1parser_1_1SourceMapNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::parser::SourceMapNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a3f08bf3a0af49335c3bc9e88ad8ff737"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1parser_1_1SourceMapNode.html#a3f08bf3a0af49335c3bc9e88ad8ff737">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a3f08bf3a0af49335c3bc9e88ad8ff737"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a32ad494f99d34e676ce10b92465931ad"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1parser_1_1SourceMapNode.html#a32ad494f99d34e676ce10b92465931ad">SEqualReduce</a> (const <a class="el" href="classtvm_1_1parser_1_1SourceMapNode.html">SourceMapNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a32ad494f99d34e676ce10b92465931ad"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1parser_1_1SourceMapNode.html#a32ad494f99d34e676ce10b92465931ad">SEqualReduce</a> (const <a class="el" href="classtvm_1_1parser_1_1SourceMapNode.html">SourceMapNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bc [...]
 <tr class="separator:a32ad494f99d34e676ce10b92465931ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac97e56093f4e20aed9492b2be216e882"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1parser_1_1SourceMapNode.html#ac97e56093f4e20aed9492b2be216e882">TVM_DECLARE_FINAL_OBJECT_INFO</a> (<a class="el" href="classtvm_1_1parser_1_1SourceMapNode.html">SourceMapNode</a>, Object)</td></tr>
 <tr class="separator:ac97e56093f4e20aed9492b2be216e882"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1CallNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1CallNode.html
index fab70ea..4730377 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1CallNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1CallNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::relay::CallNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a28ee1603f20958c8c4fe54d8df3ac558"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1CallNode.html#a28ee1603f20958c8c4fe54d8df3ac558">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a28ee1603f20958c8c4fe54d8df3ac558"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af6d816670918e299428a54661b0d6ed3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1CallNode.html#af6d816670918e299428a54661b0d6ed3">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1CallNode.html">CallNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:af6d816670918e299428a54661b0d6ed3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1CallNode.html#af6d816670918e299428a54661b0d6ed3">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1CallNode.html">CallNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354 [...]
 <tr class="separator:af6d816670918e299428a54661b0d6ed3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a1e34c40a1c5a0a5cada02448cd068b2d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1CallNode.html#a1e34c40a1c5a0a5cada02448cd068b2d">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a1e34c40a1c5a0a5cada02448cd068b2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1ClauseNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1ClauseNode.html
index 915dc24..aeecd04 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1ClauseNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1ClauseNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::relay::ClauseNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:ac73f65e5e9187d74aaa0a47c45cb6eb8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1ClauseNode.html#ac73f65e5e9187d74aaa0a47c45cb6eb8">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:ac73f65e5e9187d74aaa0a47c45cb6eb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a12619fb0cfd53715042eb246d317f322"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1ClauseNode.html#a12619fb0cfd53715042eb246d317f322">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1ClauseNode.html">ClauseNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a12619fb0cfd53715042eb246d317f322"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1ClauseNode.html#a12619fb0cfd53715042eb246d317f322">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1ClauseNode.html">ClauseNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460 [...]
 <tr class="separator:a12619fb0cfd53715042eb246d317f322"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a11ee5813780b53099365c703347c7063"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1ClauseNode.html#a11ee5813780b53099365c703347c7063">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a11ee5813780b53099365c703347c7063"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1ConstantNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1ConstantNode.html
index 3de7d26..ee551f5 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1ConstantNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1ConstantNode.html
@@ -122,7 +122,7 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a68d932e73863700422945c20c851a120"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a1429ea0c386bb79759e8d12fb7eaabf2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1ConstantNode.html#a1429ea0c386bb79759e8d12fb7eaabf2">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a1429ea0c386bb79759e8d12fb7eaabf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a11eec9df72c80971a12b987a2576d1f4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1ConstantNode.html#a11eec9df72c80971a12b987a2576d1f4">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1ConstantNode.html">ConstantNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a11eec9df72c80971a12b987a2576d1f4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1ConstantNode.html#a11eec9df72c80971a12b987a2576d1f4">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1ConstantNode.html">ConstantNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d [...]
 <tr class="separator:a11eec9df72c80971a12b987a2576d1f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a7fdbe7b97858236356901fbccb08c709"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1ConstantNode.html#a7fdbe7b97858236356901fbccb08c709">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a7fdbe7b97858236356901fbccb08c709"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1FunctionNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1FunctionNode.html
index 4e5d34a..17b1703 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1FunctionNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1FunctionNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::relay::FunctionNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a7f6fba6dde1c0edaa9989e018b8bbb4f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1FunctionNode.html#a7f6fba6dde1c0edaa9989e018b8bbb4f">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a7f6fba6dde1c0edaa9989e018b8bbb4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8d54d444e9ea9fce2c485f52adce00bb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1FunctionNode.html#a8d54d444e9ea9fce2c485f52adce00bb">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1FunctionNode.html">FunctionNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a8d54d444e9ea9fce2c485f52adce00bb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1FunctionNode.html#a8d54d444e9ea9fce2c485f52adce00bb">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1FunctionNode.html">FunctionNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d [...]
 <tr class="separator:a8d54d444e9ea9fce2c485f52adce00bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afe0cf90285e42336eb9c1eebe793c276"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1FunctionNode.html#afe0cf90285e42336eb9c1eebe793c276">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:afe0cf90285e42336eb9c1eebe793c276"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1IdNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1IdNode.html
index b8472eb..19fbe5f 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1IdNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1IdNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::relay::IdNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a8e7864342454e34c9185c78963f4513d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1IdNode.html#a8e7864342454e34c9185c78963f4513d">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a8e7864342454e34c9185c78963f4513d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac65dc1814b202297c6aa8a79bfe0e786"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1IdNode.html#ac65dc1814b202297c6aa8a79bfe0e786">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1IdNode.html">IdNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:ac65dc1814b202297c6aa8a79bfe0e786"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1IdNode.html#ac65dc1814b202297c6aa8a79bfe0e786">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1IdNode.html">IdNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equ [...]
 <tr class="separator:ac65dc1814b202297c6aa8a79bfe0e786"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a874193c1944929232b3fa9b9a939209c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1IdNode.html#a874193c1944929232b3fa9b9a939209c">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a874193c1944929232b3fa9b9a939209c"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1IfNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1IfNode.html
index 090f875..fab315f 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1IfNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1IfNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::relay::IfNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:abfa08f6738f227ba03e36c56108260ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1IfNode.html#abfa08f6738f227ba03e36c56108260ff">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:abfa08f6738f227ba03e36c56108260ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2038fd2b4e6581238e4993ed75b0e4f8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1IfNode.html#a2038fd2b4e6581238e4993ed75b0e4f8">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1IfNode.html">IfNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a2038fd2b4e6581238e4993ed75b0e4f8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1IfNode.html#a2038fd2b4e6581238e4993ed75b0e4f8">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1IfNode.html">IfNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equ [...]
 <tr class="separator:a2038fd2b4e6581238e4993ed75b0e4f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad79a6a99b3fe5f40ff8cb5e236a6f84b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1IfNode.html#ad79a6a99b3fe5f40ff8cb5e236a6f84b">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ad79a6a99b3fe5f40ff8cb5e236a6f84b"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1LetNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1LetNode.html
index b3050e3..b2a7f81 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1LetNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1LetNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::relay::LetNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:af33038e205e09c6dc38c9fa81f371239"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1LetNode.html#af33038e205e09c6dc38c9fa81f371239">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:af33038e205e09c6dc38c9fa81f371239"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a011174b4de11fa84b95ba1d525953425"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1LetNode.html#a011174b4de11fa84b95ba1d525953425">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1LetNode.html">LetNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a011174b4de11fa84b95ba1d525953425"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1LetNode.html#a011174b4de11fa84b95ba1d525953425">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1LetNode.html">LetNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a"> [...]
 <tr class="separator:a011174b4de11fa84b95ba1d525953425"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2221bbdf24cb6bb031d275d8ca1888e4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1LetNode.html#a2221bbdf24cb6bb031d275d8ca1888e4">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a2221bbdf24cb6bb031d275d8ca1888e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1MatchNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1MatchNode.html
index f297f72..ac8a615 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1MatchNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1MatchNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::relay::MatchNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:aa1ad8ab1b8aa92510a76dfdff2085234"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1MatchNode.html#aa1ad8ab1b8aa92510a76dfdff2085234">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:aa1ad8ab1b8aa92510a76dfdff2085234"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a87ee538523b1ff28de151f5ca521017f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1MatchNode.html#a87ee538523b1ff28de151f5ca521017f">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1MatchNode.html">MatchNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a87ee538523b1ff28de151f5ca521017f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1MatchNode.html#a87ee538523b1ff28de151f5ca521017f">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1MatchNode.html">MatchNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2 [...]
 <tr class="separator:a87ee538523b1ff28de151f5ca521017f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a49046df65cc279884e6b3c583278ddff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1MatchNode.html#a49046df65cc279884e6b3c583278ddff">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a49046df65cc279884e6b3c583278ddff"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1PatternConstructorNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1PatternConstructorNode.html
index 6b77278..2e4fc77 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1PatternConstructorNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1PatternConstructorNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::relay::PatternConstructorNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a8c5b04714541179bb05093ee5d5e13d5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternConstructorNode.html#a8c5b04714541179bb05093ee5d5e13d5">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a8c5b04714541179bb05093ee5d5e13d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5448348a780e5052a2d4ddbe0e9e5e10"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternConstructorNode.html#a5448348a780e5052a2d4ddbe0e9e5e10">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1PatternConstructorNode.html">PatternConstructorNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a5448348a780e5052a2d4ddbe0e9e5e10"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternConstructorNode.html#a5448348a780e5052a2d4ddbe0e9e5e10">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1PatternConstructorNode.html">PatternConstructorNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespac [...]
 <tr class="separator:a5448348a780e5052a2d4ddbe0e9e5e10"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a530768aaafb43062bd756d96670c3d47"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternConstructorNode.html#a530768aaafb43062bd756d96670c3d47">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a530768aaafb43062bd756d96670c3d47"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1PatternTupleNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1PatternTupleNode.html
index 5d14238..80a6bfb 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1PatternTupleNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1PatternTupleNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::relay::PatternTupleNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a4daacd2ff3b4240afcb6a04d4759af93"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternTupleNode.html#a4daacd2ff3b4240afcb6a04d4759af93">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a4daacd2ff3b4240afcb6a04d4759af93"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afe4beb73174745390b720b945ccc4a53"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternTupleNode.html#afe4beb73174745390b720b945ccc4a53">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1PatternTupleNode.html">PatternTupleNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:afe4beb73174745390b720b945ccc4a53"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternTupleNode.html#afe4beb73174745390b720b945ccc4a53">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1PatternTupleNode.html">PatternTupleNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f143 [...]
 <tr class="separator:afe4beb73174745390b720b945ccc4a53"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:abb2897abc7ff168759b44a620cccc6a7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternTupleNode.html#abb2897abc7ff168759b44a620cccc6a7">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:abb2897abc7ff168759b44a620cccc6a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1PatternVarNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1PatternVarNode.html
index cfbe9d4..fd6196f 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1PatternVarNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1PatternVarNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::relay::PatternVarNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a708bf5e7f6d95a62eab6838c17563f69"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternVarNode.html#a708bf5e7f6d95a62eab6838c17563f69">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a708bf5e7f6d95a62eab6838c17563f69"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0afaea9c9d6042bfdf83d8d587c92aeb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternVarNode.html#a0afaea9c9d6042bfdf83d8d587c92aeb">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1PatternVarNode.html">PatternVarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a0afaea9c9d6042bfdf83d8d587c92aeb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternVarNode.html#a0afaea9c9d6042bfdf83d8d587c92aeb">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1PatternVarNode.html">PatternVarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85b [...]
 <tr class="separator:a0afaea9c9d6042bfdf83d8d587c92aeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4d3bf648a1ed93a50d6a3c96b56e8d05"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternVarNode.html#a4d3bf648a1ed93a50d6a3c96b56e8d05">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a4d3bf648a1ed93a50d6a3c96b56e8d05"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1PatternWildcardNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1PatternWildcardNode.html
index 555228b..45a39fa 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1PatternWildcardNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1PatternWildcardNode.html
@@ -117,7 +117,7 @@ Collaboration diagram for tvm::relay::PatternWildcardNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a9ffcf271d30a3b44be05f0451975ca3b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternWildcardNode.html#a9ffcf271d30a3b44be05f0451975ca3b">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a9ffcf271d30a3b44be05f0451975ca3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af0305f7169d80d92d8f2496c28677c93"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternWildcardNode.html#af0305f7169d80d92d8f2496c28677c93">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1PatternNode.html">PatternNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:af0305f7169d80d92d8f2496c28677c93"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternWildcardNode.html#af0305f7169d80d92d8f2496c28677c93">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1PatternNode.html">PatternNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bc [...]
 <tr class="separator:af0305f7169d80d92d8f2496c28677c93"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aa6c412ce0759d5037ccabd91eeb9a176"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1PatternWildcardNode.html#aa6c412ce0759d5037ccabd91eeb9a176">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:aa6c412ce0759d5037ccabd91eeb9a176"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1RefCreateNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1RefCreateNode.html
index 7f20bb7..9ac0006 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1RefCreateNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1RefCreateNode.html
@@ -115,7 +115,7 @@ Collaboration diagram for tvm::relay::RefCreateNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:aea446a8f5f1a363f0669d90b6668d624"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1RefCreateNode.html#aea446a8f5f1a363f0669d90b6668d624">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:aea446a8f5f1a363f0669d90b6668d624"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a590fff169df1f7d541b03fc94c3b4cdc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1RefCreateNode.html#a590fff169df1f7d541b03fc94c3b4cdc">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1RefCreateNode.html">RefCreateNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a590fff169df1f7d541b03fc94c3b4cdc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1RefCreateNode.html#a590fff169df1f7d541b03fc94c3b4cdc">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1RefCreateNode.html">RefCreateNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa [...]
 <tr class="separator:a590fff169df1f7d541b03fc94c3b4cdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a677835cf083965c21f0bf0644d74d011"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1RefCreateNode.html#a677835cf083965c21f0bf0644d74d011">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a677835cf083965c21f0bf0644d74d011"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1RefReadNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1RefReadNode.html
index 78dcf56..76c734b 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1RefReadNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1RefReadNode.html
@@ -115,7 +115,7 @@ Collaboration diagram for tvm::relay::RefReadNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a70ea5750f981305f04d0c851e0b46970"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1RefReadNode.html#a70ea5750f981305f04d0c851e0b46970">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a70ea5750f981305f04d0c851e0b46970"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0fabbd159dcfd7ed071f82a679a2cf70"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1RefReadNode.html#a0fabbd159dcfd7ed071f82a679a2cf70">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1RefReadNode.html">RefReadNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a0fabbd159dcfd7ed071f82a679a2cf70"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1RefReadNode.html#a0fabbd159dcfd7ed071f82a679a2cf70">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1RefReadNode.html">RefReadNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3 [...]
 <tr class="separator:a0fabbd159dcfd7ed071f82a679a2cf70"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac61f084ccf338ca8dfd2b1319f25cc06"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1RefReadNode.html#ac61f084ccf338ca8dfd2b1319f25cc06">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ac61f084ccf338ca8dfd2b1319f25cc06"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1RefWriteNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1RefWriteNode.html
index e0126b1..02ce0fd 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1RefWriteNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1RefWriteNode.html
@@ -115,7 +115,7 @@ Collaboration diagram for tvm::relay::RefWriteNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:af894f05a511c8232ce44f7f5e7d5f895"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1RefWriteNode.html#af894f05a511c8232ce44f7f5e7d5f895">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:af894f05a511c8232ce44f7f5e7d5f895"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a86378ddf1987a7b3f01831e470c06f27"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1RefWriteNode.html#a86378ddf1987a7b3f01831e470c06f27">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1RefWriteNode.html">RefWriteNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a86378ddf1987a7b3f01831e470c06f27"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1RefWriteNode.html#a86378ddf1987a7b3f01831e470c06f27">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1RefWriteNode.html">RefWriteNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d [...]
 <tr class="separator:a86378ddf1987a7b3f01831e470c06f27"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aee1abb52a5f1b9a2e397c16be146d15d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1RefWriteNode.html#aee1abb52a5f1b9a2e397c16be146d15d">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:aee1abb52a5f1b9a2e397c16be146d15d"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1TupleGetItemNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1TupleGetItemNode.html
index a6d88da..d070a65 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1TupleGetItemNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1TupleGetItemNode.html
@@ -115,7 +115,7 @@ Collaboration diagram for tvm::relay::TupleGetItemNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:afd099ce2c3f60fe39b4fe4094c77c58e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1TupleGetItemNode.html#afd099ce2c3f60fe39b4fe4094c77c58e">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:afd099ce2c3f60fe39b4fe4094c77c58e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af2eb9ea57fbd17efe0e049ca8fe0eabf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1TupleGetItemNode.html#af2eb9ea57fbd17efe0e049ca8fe0eabf">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1TupleGetItemNode.html">TupleGetItemNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:af2eb9ea57fbd17efe0e049ca8fe0eabf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1TupleGetItemNode.html#af2eb9ea57fbd17efe0e049ca8fe0eabf">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1TupleGetItemNode.html">TupleGetItemNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f143 [...]
 <tr class="separator:af2eb9ea57fbd17efe0e049ca8fe0eabf"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9fa97b42d0ed9c1240e5991085989b77"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1TupleGetItemNode.html#a9fa97b42d0ed9c1240e5991085989b77">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a9fa97b42d0ed9c1240e5991085989b77"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1TupleNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1TupleNode.html
index 54357e7..f848c62 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1TupleNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1TupleNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::relay::TupleNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:ae9e351b42b8cde177714c98c5d353e29"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1TupleNode.html#ae9e351b42b8cde177714c98c5d353e29">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:ae9e351b42b8cde177714c98c5d353e29"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aeeb335ccd239b1b3d033a2ed0bd91b98"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1TupleNode.html#aeeb335ccd239b1b3d033a2ed0bd91b98">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1TupleNode.html">TupleNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:aeeb335ccd239b1b3d033a2ed0bd91b98"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1TupleNode.html#aeeb335ccd239b1b3d033a2ed0bd91b98">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1TupleNode.html">TupleNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2 [...]
 <tr class="separator:aeeb335ccd239b1b3d033a2ed0bd91b98"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a20a24afd2954d105d1ac57ac022fadc1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1TupleNode.html#a20a24afd2954d105d1ac57ac022fadc1">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a20a24afd2954d105d1ac57ac022fadc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1relay_1_1VarNode.html b/docs/api/doxygen/classtvm_1_1relay_1_1VarNode.html
index 0ac39de..368195f 100644
--- a/docs/api/doxygen/classtvm_1_1relay_1_1VarNode.html
+++ b/docs/api/doxygen/classtvm_1_1relay_1_1VarNode.html
@@ -120,7 +120,7 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a03c5d534c3c5a021ce7736db2a53c1c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9b43f30f77f1696e11f423f4834b42af"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1VarNode.html#a9b43f30f77f1696e11f423f4834b42af">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a9b43f30f77f1696e11f423f4834b42af"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abc18494ecd63c935ba379de302db95e0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1VarNode.html#abc18494ecd63c935ba379de302db95e0">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1VarNode.html">VarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:abc18494ecd63c935ba379de302db95e0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1VarNode.html#abc18494ecd63c935ba379de302db95e0">SEqualReduce</a> (const <a class="el" href="classtvm_1_1relay_1_1VarNode.html">VarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a"> [...]
 <tr class="separator:abc18494ecd63c935ba379de302db95e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a79ca8344a35daed052ca91a282c58cdb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1VarNode.html#a79ca8344a35daed052ca91a282c58cdb">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a79ca8344a35daed052ca91a282c58cdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1te_1_1TensorNode.html b/docs/api/doxygen/classtvm_1_1te_1_1TensorNode.html
index 7e0e4e5..f910c5e 100644
--- a/docs/api/doxygen/classtvm_1_1te_1_1TensorNode.html
+++ b/docs/api/doxygen/classtvm_1_1te_1_1TensorNode.html
@@ -136,7 +136,7 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:aeb887c35d09af934251932b0120f9dfa inherit pub_methods_classtvm_1_1tir_1_1DataProducerNode"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html#aeb887c35d09af934251932b0120f9dfa">~DataProducerNode</a> ()</td></tr>
 <tr class="memdesc:aeb887c35d09af934251932b0120f9dfa inherit pub_methods_classtvm_1_1tir_1_1DataProducerNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">destructor.  <a href="#aeb887c35d09af934251932b0120f9dfa">More...</a><br /></td></tr>
 <tr class="separator:aeb887c35d09af934251932b0120f9dfa inherit pub_methods_classtvm_1_1tir_1_1DataProducerNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa67efe80a2eac8538728e5e8c3afeb51 inherit pub_methods_classtvm_1_1tir_1_1DataProducerNode"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html#aa67efe80a2eac8538728e5e8c3afeb51">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html">DataProducerNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReduce [...]
+<tr class="memitem:aa67efe80a2eac8538728e5e8c3afeb51 inherit pub_methods_classtvm_1_1tir_1_1DataProducerNode"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html#aa67efe80a2eac8538728e5e8c3afeb51">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html">DataProducerNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReduce [...]
 <tr class="separator:aa67efe80a2eac8538728e5e8c3afeb51 inherit pub_methods_classtvm_1_1tir_1_1DataProducerNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a0d931fb7641c7e72f7fea25bb8acf9a8 inherit pub_methods_classtvm_1_1tir_1_1DataProducerNode"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html#a0d931fb7641c7e72f7fea25bb8acf9a8">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a0d931fb7641c7e72f7fea25bb8acf9a8 inherit pub_methods_classtvm_1_1tir_1_1DataProducerNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1AllocateNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1AllocateNode.html
index 6002c17..55916d0 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1AllocateNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1AllocateNode.html
@@ -119,7 +119,7 @@ Collaboration diagram for tvm::tir::AllocateNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:ab476a2f1664e28a6da78dfa1d7bc2889"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AllocateNode.html#ab476a2f1664e28a6da78dfa1d7bc2889">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:ab476a2f1664e28a6da78dfa1d7bc2889"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af666f784cf57e890d16a326912955075"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AllocateNode.html#af666f784cf57e890d16a326912955075">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1AllocateNode.html">AllocateNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:af666f784cf57e890d16a326912955075"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AllocateNode.html#af666f784cf57e890d16a326912955075">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1AllocateNode.html">AllocateNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a34 [...]
 <tr class="separator:af666f784cf57e890d16a326912955075"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aa8b61783e619cc9be13115ca7dfe10b2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AllocateNode.html#aa8b61783e619cc9be13115ca7dfe10b2">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:aa8b61783e619cc9be13115ca7dfe10b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1AndNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1AndNode.html
index 1016cfa..a293877 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1AndNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1AndNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::AndNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:adf187d7ceeb6b8bfbf1be89960bcad59"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AndNode.html#adf187d7ceeb6b8bfbf1be89960bcad59">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:adf187d7ceeb6b8bfbf1be89960bcad59"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab71a4464565cd373ab8a3b7d9de7dc91"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AndNode.html#ab71a4464565cd373ab8a3b7d9de7dc91">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1AndNode.html">AndNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:ab71a4464565cd373ab8a3b7d9de7dc91"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AndNode.html#ab71a4464565cd373ab8a3b7d9de7dc91">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1AndNode.html">AndNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equa [...]
 <tr class="separator:ab71a4464565cd373ab8a3b7d9de7dc91"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a25c6bb2f6fa5bd4cbbdcc665bf44d81e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AndNode.html#a25c6bb2f6fa5bd4cbbdcc665bf44d81e">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a25c6bb2f6fa5bd4cbbdcc665bf44d81e"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1AnyNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1AnyNode.html
index 39d5073..d1a32fe 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1AnyNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1AnyNode.html
@@ -117,7 +117,7 @@ Collaboration diagram for tvm::tir::AnyNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a170f1e5715fa8999068b7c878cf84b87"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AnyNode.html#a170f1e5715fa8999068b7c878cf84b87">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a170f1e5715fa8999068b7c878cf84b87"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa68fadf8ba8d988e769326191a87f723"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AnyNode.html#aa68fadf8ba8d988e769326191a87f723">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1AnyNode.html">AnyNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:aa68fadf8ba8d988e769326191a87f723"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AnyNode.html#aa68fadf8ba8d988e769326191a87f723">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1AnyNode.html">AnyNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equa [...]
 <tr class="separator:aa68fadf8ba8d988e769326191a87f723"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aa4619aecf23ceefa065436ad0c001cba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AnyNode.html#aa4619aecf23ceefa065436ad0c001cba">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:aa4619aecf23ceefa065436ad0c001cba"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1AssertStmtNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1AssertStmtNode.html
index 01c22c4..80c0c2f 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1AssertStmtNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1AssertStmtNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::AssertStmtNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:ad4b51bee8779971bed4bdfeb72006d99"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AssertStmtNode.html#ad4b51bee8779971bed4bdfeb72006d99">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:ad4b51bee8779971bed4bdfeb72006d99"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a95e359c096097dacf07eeaefd1977826"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AssertStmtNode.html#a95e359c096097dacf07eeaefd1977826">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1AssertStmtNode.html">AssertStmtNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a95e359c096097dacf07eeaefd1977826"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AssertStmtNode.html#a95e359c096097dacf07eeaefd1977826">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1AssertStmtNode.html">AssertStmtNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa5 [...]
 <tr class="separator:a95e359c096097dacf07eeaefd1977826"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af951b4bd4d85da16e19cdf546a447c1f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AssertStmtNode.html#af951b4bd4d85da16e19cdf546a447c1f">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:af951b4bd4d85da16e19cdf546a447c1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1AttrStmtNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1AttrStmtNode.html
index 8187cbf..c465a1d 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1AttrStmtNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1AttrStmtNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::AttrStmtNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:ab430d517a34ec9786d6e4c8a1c3ae810"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AttrStmtNode.html#ab430d517a34ec9786d6e4c8a1c3ae810">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:ab430d517a34ec9786d6e4c8a1c3ae810"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:affcfbc7f8bb3cd8b3f38dd840ab7c955"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AttrStmtNode.html#affcfbc7f8bb3cd8b3f38dd840ab7c955">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1AttrStmtNode.html">AttrStmtNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:affcfbc7f8bb3cd8b3f38dd840ab7c955"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AttrStmtNode.html#affcfbc7f8bb3cd8b3f38dd840ab7c955">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1AttrStmtNode.html">AttrStmtNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a34 [...]
 <tr class="separator:affcfbc7f8bb3cd8b3f38dd840ab7c955"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4a315c8f02b1256c3cd2f430b2b02f33"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1AttrStmtNode.html#a4a315c8f02b1256c3cd2f430b2b02f33">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a4a315c8f02b1256c3cd2f430b2b02f33"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1BinaryOpNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1BinaryOpNode.html
index a9b5bc2..e12a872 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1BinaryOpNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1BinaryOpNode.html
@@ -117,7 +117,7 @@ Collaboration diagram for tvm::tir::BinaryOpNode&lt; T &gt;:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a75e2d8fdc2a5793f34ecb771a6938cc6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BinaryOpNode.html#a75e2d8fdc2a5793f34ecb771a6938cc6">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a75e2d8fdc2a5793f34ecb771a6938cc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a743b7846b1376cb2d8e4b821d9cb9eaa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BinaryOpNode.html#a743b7846b1376cb2d8e4b821d9cb9eaa">SEqualReduce</a> (const T *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a743b7846b1376cb2d8e4b821d9cb9eaa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BinaryOpNode.html#a743b7846b1376cb2d8e4b821d9cb9eaa">SEqualReduce</a> (const T *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a>) const </td></tr>
 <tr class="separator:a743b7846b1376cb2d8e4b821d9cb9eaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2fd1d01ff422a1765b27f1da1b7af4ce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BinaryOpNode.html#a2fd1d01ff422a1765b27f1da1b7af4ce">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a2fd1d01ff422a1765b27f1da1b7af4ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1BroadcastNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1BroadcastNode.html
index d3e33a4..643ae8a 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1BroadcastNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1BroadcastNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::BroadcastNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a026e3fc65aa96093332df829def152f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BroadcastNode.html#a026e3fc65aa96093332df829def152f1">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a026e3fc65aa96093332df829def152f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac2a82fc08ca7841339b4bf7330a36580"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BroadcastNode.html#ac2a82fc08ca7841339b4bf7330a36580">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1BroadcastNode.html">BroadcastNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:ac2a82fc08ca7841339b4bf7330a36580"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BroadcastNode.html#ac2a82fc08ca7841339b4bf7330a36580">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1BroadcastNode.html">BroadcastNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9 [...]
 <tr class="separator:ac2a82fc08ca7841339b4bf7330a36580"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a1c04c5319f89fca5fd60ed7f84726c11"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BroadcastNode.html#a1c04c5319f89fca5fd60ed7f84726c11">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a1c04c5319f89fca5fd60ed7f84726c11"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1BufferLoadNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1BufferLoadNode.html
index b4a9f36..0a0eba2 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1BufferLoadNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1BufferLoadNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::BufferLoadNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a639a3fa24ab5988cc9e2f24a6c06ee2e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferLoadNode.html#a639a3fa24ab5988cc9e2f24a6c06ee2e">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a639a3fa24ab5988cc9e2f24a6c06ee2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac8a28a67efbb3d6dd4e3af5463bca078"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferLoadNode.html#ac8a28a67efbb3d6dd4e3af5463bca078">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1BufferLoadNode.html">BufferLoadNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:ac8a28a67efbb3d6dd4e3af5463bca078"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferLoadNode.html#ac8a28a67efbb3d6dd4e3af5463bca078">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1BufferLoadNode.html">BufferLoadNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa5 [...]
 <tr class="separator:ac8a28a67efbb3d6dd4e3af5463bca078"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab590a63787d235e3f87513a5692473ec"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferLoadNode.html#ab590a63787d235e3f87513a5692473ec">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ab590a63787d235e3f87513a5692473ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1BufferNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1BufferNode.html
index 552086c..017e40b 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1BufferNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1BufferNode.html
@@ -121,7 +121,7 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a1abac917e1de0b3c43774ee94477016b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a7f8d61e038e7aba1dee84c7451f5948d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferNode.html#a7f8d61e038e7aba1dee84c7451f5948d">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a7f8d61e038e7aba1dee84c7451f5948d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9b849acfdc74712f4d2bfd9e631ee398"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferNode.html#a9b849acfdc74712f4d2bfd9e631ee398">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1BufferNode.html">BufferNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a9b849acfdc74712f4d2bfd9e631ee398"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferNode.html#a9b849acfdc74712f4d2bfd9e631ee398">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1BufferNode.html">BufferNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db23 [...]
 <tr class="separator:a9b849acfdc74712f4d2bfd9e631ee398"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a34765bcd330d69b8e4c2ca69f4a9a838"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferNode.html#a34765bcd330d69b8e4c2ca69f4a9a838">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a34765bcd330d69b8e4c2ca69f4a9a838"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1BufferRealizeNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1BufferRealizeNode.html
index 680e68b..173121a 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1BufferRealizeNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1BufferRealizeNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::BufferRealizeNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a1e66d8e7ccb2d0ab73a44775edabb38d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html#a1e66d8e7ccb2d0ab73a44775edabb38d">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a1e66d8e7ccb2d0ab73a44775edabb38d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9c1ef5aafa678f60f9eba1d41816838d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html#a9c1ef5aafa678f60f9eba1d41816838d">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html">BufferRealizeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a9c1ef5aafa678f60f9eba1d41816838d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html#a9c1ef5aafa678f60f9eba1d41816838d">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html">BufferRealizeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f1438 [...]
 <tr class="separator:a9c1ef5aafa678f60f9eba1d41816838d"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:adab031a0226cf61003f077e3fe043514"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html#adab031a0226cf61003f077e3fe043514">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:adab031a0226cf61003f077e3fe043514"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1BufferStoreNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1BufferStoreNode.html
index 9ef936c..ec1bd25 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1BufferStoreNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1BufferStoreNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::BufferStoreNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a8e3099d6a88e78e6e05c49fd0a94a50a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferStoreNode.html#a8e3099d6a88e78e6e05c49fd0a94a50a">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a8e3099d6a88e78e6e05c49fd0a94a50a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a52bc65489d1bf6aeb14bc78f6f1bdf1f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferStoreNode.html#a52bc65489d1bf6aeb14bc78f6f1bdf1f">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1BufferStoreNode.html">BufferStoreNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a52bc65489d1bf6aeb14bc78f6f1bdf1f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferStoreNode.html#a52bc65489d1bf6aeb14bc78f6f1bdf1f">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1BufferStoreNode.html">BufferStoreNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bc [...]
 <tr class="separator:a52bc65489d1bf6aeb14bc78f6f1bdf1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a326993b49557b51688abe24e61bea884"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1BufferStoreNode.html#a326993b49557b51688abe24e61bea884">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a326993b49557b51688abe24e61bea884"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1CallNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1CallNode.html
index d0bc539..2f3ff18 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1CallNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1CallNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::CallNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:ab16f6a3e97ab7e8ec0d2e906fd5a2f71"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CallNode.html#ab16f6a3e97ab7e8ec0d2e906fd5a2f71">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:ab16f6a3e97ab7e8ec0d2e906fd5a2f71"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4e631c0b21801e30d92d23a1c3de23bc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CallNode.html#a4e631c0b21801e30d92d23a1c3de23bc">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1CallNode.html">CallNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a4e631c0b21801e30d92d23a1c3de23bc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CallNode.html#a4e631c0b21801e30d92d23a1c3de23bc">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1CallNode.html">CallNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">e [...]
 <tr class="separator:a4e631c0b21801e30d92d23a1c3de23bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a0e9eb68c0dc275f789e4794b582ad13f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CallNode.html#a0e9eb68c0dc275f789e4794b582ad13f">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a0e9eb68c0dc275f789e4794b582ad13f"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1CastNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1CastNode.html
index 8238ec6..089f2c6 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1CastNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1CastNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::CastNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:abd6f1cdacb178f35cdcf0800d46dd939"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CastNode.html#abd6f1cdacb178f35cdcf0800d46dd939">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:abd6f1cdacb178f35cdcf0800d46dd939"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a94c826d3c645983d77c97bf7b4e839c7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CastNode.html#a94c826d3c645983d77c97bf7b4e839c7">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1CastNode.html">CastNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a94c826d3c645983d77c97bf7b4e839c7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CastNode.html#a94c826d3c645983d77c97bf7b4e839c7">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1CastNode.html">CastNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">e [...]
 <tr class="separator:a94c826d3c645983d77c97bf7b4e839c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aeb8aa253efdca1c975a3ab3e4443f824"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CastNode.html#aeb8aa253efdca1c975a3ab3e4443f824">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:aeb8aa253efdca1c975a3ab3e4443f824"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1CmpOpNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1CmpOpNode.html
index c6c086a..4d14efc 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1CmpOpNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1CmpOpNode.html
@@ -117,7 +117,7 @@ Collaboration diagram for tvm::tir::CmpOpNode&lt; T &gt;:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a309433c1b828b526c8519b17e5a4f13e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CmpOpNode.html#a309433c1b828b526c8519b17e5a4f13e">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a309433c1b828b526c8519b17e5a4f13e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac42ac503c690864a31a962727bd252bb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CmpOpNode.html#ac42ac503c690864a31a962727bd252bb">SEqualReduce</a> (const T *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:ac42ac503c690864a31a962727bd252bb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CmpOpNode.html#ac42ac503c690864a31a962727bd252bb">SEqualReduce</a> (const T *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a>) const </td></tr>
 <tr class="separator:ac42ac503c690864a31a962727bd252bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a74f4e3c8db9dc74edb56d12200c79f6d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CmpOpNode.html#a74f4e3c8db9dc74edb56d12200c79f6d">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a74f4e3c8db9dc74edb56d12200c79f6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1CommReducerNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1CommReducerNode.html
index 4307025..8115835 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1CommReducerNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1CommReducerNode.html
@@ -121,7 +121,7 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a676a4b831713ce7a8ad27dbbdc85864e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a91c948da93ea84120c01034af7d867d5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CommReducerNode.html#a91c948da93ea84120c01034af7d867d5">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a91c948da93ea84120c01034af7d867d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7a679454a48aeb1def1ab92c9f2c923d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CommReducerNode.html#a7a679454a48aeb1def1ab92c9f2c923d">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1CommReducerNode.html">CommReducerNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a7a679454a48aeb1def1ab92c9f2c923d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CommReducerNode.html#a7a679454a48aeb1def1ab92c9f2c923d">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1CommReducerNode.html">CommReducerNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bc [...]
 <tr class="separator:a7a679454a48aeb1def1ab92c9f2c923d"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a663cc97035b41c567fd0bb4b90ee2f82"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1CommReducerNode.html#a663cc97035b41c567fd0bb4b90ee2f82">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a663cc97035b41c567fd0bb4b90ee2f82"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1DataProducerNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1DataProducerNode.html
index 16084b9..571789f 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1DataProducerNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1DataProducerNode.html
@@ -127,7 +127,7 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:adf3ea8c7fd0d3112eb86840aff324b10"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classtvm_1_1runtime_1_1String.html">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html#adf3ea8c7fd0d3112eb86840aff324b10">GetNameHint</a> () const =0</td></tr>
 <tr class="memdesc:adf3ea8c7fd0d3112eb86840aff324b10"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the name hint of the data producer.  <a href="#adf3ea8c7fd0d3112eb86840aff324b10">More...</a><br /></td></tr>
 <tr class="separator:adf3ea8c7fd0d3112eb86840aff324b10"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa67efe80a2eac8538728e5e8c3afeb51"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html#aa67efe80a2eac8538728e5e8c3afeb51">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html">DataProducerNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:aa67efe80a2eac8538728e5e8c3afeb51"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html#aa67efe80a2eac8538728e5e8c3afeb51">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html">DataProducerNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b8 [...]
 <tr class="separator:aa67efe80a2eac8538728e5e8c3afeb51"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a0d931fb7641c7e72f7fea25bb8acf9a8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html#a0d931fb7641c7e72f7fea25bb8acf9a8">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a0d931fb7641c7e72f7fea25bb8acf9a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1EvaluateNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1EvaluateNode.html
index 0cb09e3..dbb7404 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1EvaluateNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1EvaluateNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::EvaluateNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a3950633f2ab07c83010e7a489d67d0e2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html#a3950633f2ab07c83010e7a489d67d0e2">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a3950633f2ab07c83010e7a489d67d0e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adee5957be3a1dd8f0b6e7387f4c81d7d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html#adee5957be3a1dd8f0b6e7387f4c81d7d">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html">EvaluateNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:adee5957be3a1dd8f0b6e7387f4c81d7d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html#adee5957be3a1dd8f0b6e7387f4c81d7d">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html">EvaluateNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a34 [...]
 <tr class="separator:adee5957be3a1dd8f0b6e7387f4c81d7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aa24892a4822d2707ca79757aa168435b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html#aa24892a4822d2707ca79757aa168435b">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:aa24892a4822d2707ca79757aa168435b"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1For.html b/docs/api/doxygen/classtvm_1_1tir_1_1For.html
index 3d93892..56ea411 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1For.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1For.html
@@ -114,7 +114,7 @@ Collaboration diagram for tvm::tir::For:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:af0474fb4e02e57b279f18d83eba66636"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1For.html#af0474fb4e02e57b279f18d83eba66636">For</a> (<a class="el" href="classtvm_1_1tir_1_1Var.html">Var</a> loop_var, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="el" href="namespacetvm.html#a9da780393e228969f77aa7550520a582">min</a>, <a class="el" href="classtvm_1_1Pr [...]
+<tr class="memitem:af0474fb4e02e57b279f18d83eba66636"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1For.html#af0474fb4e02e57b279f18d83eba66636">For</a> (<a class="el" href="classtvm_1_1tir_1_1Var.html">Var</a> loop_var, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="el" href="namespacetvm.html#aac2abc149c1a47944c37b560181b15c0">min</a>, <a class="el" href="classtvm_1_1Pr [...]
 <tr class="separator:af0474fb4e02e57b279f18d83eba66636"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a6baff19c34b337cccded0298da10a530"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1For.html#a6baff19c34b337cccded0298da10a530">TVM_DEFINE_OBJECT_REF_METHODS</a> (<a class="el" href="classtvm_1_1tir_1_1For.html">For</a>, <a class="el" href="classtvm_1_1tir_1_1Stmt.html">Stmt</a>, <a class="el" href="classtvm_1_1tir_1_1ForNode.html">ForNode</a>)</td></tr>
 <tr class="separator:a6baff19c34b337cccded0298da10a530"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1ForNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1ForNode.html
index 90c62e7..9edb11f 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1ForNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1ForNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::ForNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a014d871983a05a0c16efd6deb83a7472"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ForNode.html#a014d871983a05a0c16efd6deb83a7472">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a014d871983a05a0c16efd6deb83a7472"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab622625051cbb8b2b8939fa369de4542"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ForNode.html#ab622625051cbb8b2b8939fa369de4542">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1ForNode.html">ForNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:ab622625051cbb8b2b8939fa369de4542"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ForNode.html#ab622625051cbb8b2b8939fa369de4542">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1ForNode.html">ForNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equa [...]
 <tr class="separator:ab622625051cbb8b2b8939fa369de4542"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4af8f73401ef7a083e08b934fca88c1d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ForNode.html#a4af8f73401ef7a083e08b934fca88c1d">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a4af8f73401ef7a083e08b934fca88c1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1IfThenElseNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1IfThenElseNode.html
index 3add9db..3178370 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1IfThenElseNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1IfThenElseNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::IfThenElseNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a2ef091a7dcdd9b8e2727845a347440f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1IfThenElseNode.html#a2ef091a7dcdd9b8e2727845a347440f7">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a2ef091a7dcdd9b8e2727845a347440f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aad170a1bd7dfb883293bc3e659f12629"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1IfThenElseNode.html#aad170a1bd7dfb883293bc3e659f12629">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1IfThenElseNode.html">IfThenElseNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:aad170a1bd7dfb883293bc3e659f12629"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1IfThenElseNode.html#aad170a1bd7dfb883293bc3e659f12629">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1IfThenElseNode.html">IfThenElseNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa5 [...]
 <tr class="separator:aad170a1bd7dfb883293bc3e659f12629"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a7256066989ee7eac23ff8bb30f47b449"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1IfThenElseNode.html#a7256066989ee7eac23ff8bb30f47b449">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a7256066989ee7eac23ff8bb30f47b449"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1IterVarNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1IterVarNode.html
index 39e602f..ff46d7e 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1IterVarNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1IterVarNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::IterVarNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:adec9071918d696818dc32a6a00e02912"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1IterVarNode.html#adec9071918d696818dc32a6a00e02912">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:adec9071918d696818dc32a6a00e02912"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3b209909dba431abf8e3227bdb1d9264"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1IterVarNode.html#a3b209909dba431abf8e3227bdb1d9264">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1IterVarNode.html">IterVarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a3b209909dba431abf8e3227bdb1d9264"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1IterVarNode.html#a3b209909dba431abf8e3227bdb1d9264">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1IterVarNode.html">IterVarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460d [...]
 <tr class="separator:a3b209909dba431abf8e3227bdb1d9264"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9999c87753dd63f5ef156e661fb0b5e8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1IterVarNode.html#a9999c87753dd63f5ef156e661fb0b5e8">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a9999c87753dd63f5ef156e661fb0b5e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1LetNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1LetNode.html
index 6ec7e65..3555881 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1LetNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1LetNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::LetNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:aa152cd4cc5251565371c0ee9330f128f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1LetNode.html#aa152cd4cc5251565371c0ee9330f128f">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:aa152cd4cc5251565371c0ee9330f128f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab1c9d795031c735d4d6526044b6b7007"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1LetNode.html#ab1c9d795031c735d4d6526044b6b7007">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1LetNode.html">LetNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:ab1c9d795031c735d4d6526044b6b7007"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1LetNode.html#ab1c9d795031c735d4d6526044b6b7007">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1LetNode.html">LetNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equa [...]
 <tr class="separator:ab1c9d795031c735d4d6526044b6b7007"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a5c26fcf996aac689188c3075d1286bed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1LetNode.html#a5c26fcf996aac689188c3075d1286bed">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a5c26fcf996aac689188c3075d1286bed"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1LetStmtNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1LetStmtNode.html
index 1b223bf..b013448 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1LetStmtNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1LetStmtNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::LetStmtNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a71dbfcfb3e13a23cd22528b167568e24"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1LetStmtNode.html#a71dbfcfb3e13a23cd22528b167568e24">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a71dbfcfb3e13a23cd22528b167568e24"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4c640ef89fb13700a44a1c61e0b477ea"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1LetStmtNode.html#a4c640ef89fb13700a44a1c61e0b477ea">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1LetStmtNode.html">LetStmtNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a4c640ef89fb13700a44a1c61e0b477ea"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1LetStmtNode.html#a4c640ef89fb13700a44a1c61e0b477ea">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1LetStmtNode.html">LetStmtNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460d [...]
 <tr class="separator:a4c640ef89fb13700a44a1c61e0b477ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a0517cf139df41a3876410b0a37da27b7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1LetStmtNode.html#a0517cf139df41a3876410b0a37da27b7">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a0517cf139df41a3876410b0a37da27b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1LoadNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1LoadNode.html
index 34d246a..f71821c 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1LoadNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1LoadNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::LoadNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:acc4597323aba2761dafaf9a24bb4c0e4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1LoadNode.html#acc4597323aba2761dafaf9a24bb4c0e4">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:acc4597323aba2761dafaf9a24bb4c0e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adbc71528163b57582a742224be58d15c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1LoadNode.html#adbc71528163b57582a742224be58d15c">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1LoadNode.html">LoadNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:adbc71528163b57582a742224be58d15c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1LoadNode.html#adbc71528163b57582a742224be58d15c">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1LoadNode.html">LoadNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">e [...]
 <tr class="separator:adbc71528163b57582a742224be58d15c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afb58f71fc73372de53d375c03d178dba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1LoadNode.html#afb58f71fc73372de53d375c03d178dba">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:afb58f71fc73372de53d375c03d178dba"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1NotNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1NotNode.html
index 59bae9e..96ad5c7 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1NotNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1NotNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::NotNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a82114b9eeaf685c4b6b578118a7d3fcf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1NotNode.html#a82114b9eeaf685c4b6b578118a7d3fcf">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a82114b9eeaf685c4b6b578118a7d3fcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3849a18cd408ba26a793231feb120287"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1NotNode.html#a3849a18cd408ba26a793231feb120287">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1NotNode.html">NotNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a3849a18cd408ba26a793231feb120287"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1NotNode.html#a3849a18cd408ba26a793231feb120287">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1NotNode.html">NotNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equa [...]
 <tr class="separator:a3849a18cd408ba26a793231feb120287"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad33e550eef3dcdf991f58b4b87c617b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1NotNode.html#ad33e550eef3dcdf991f58b4b87c617b3">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ad33e550eef3dcdf991f58b4b87c617b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1OrNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1OrNode.html
index bab96a7..dca3c21 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1OrNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1OrNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::OrNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:adeffc3d1cdf32cefe1e7fab3a6b6f9f9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1OrNode.html#adeffc3d1cdf32cefe1e7fab3a6b6f9f9">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:adeffc3d1cdf32cefe1e7fab3a6b6f9f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af21aa217c579adf7b73f2b9f1ce1dd27"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1OrNode.html#af21aa217c579adf7b73f2b9f1ce1dd27">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1OrNode.html">OrNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:af21aa217c579adf7b73f2b9f1ce1dd27"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1OrNode.html#af21aa217c579adf7b73f2b9f1ce1dd27">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1OrNode.html">OrNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</ [...]
 <tr class="separator:af21aa217c579adf7b73f2b9f1ce1dd27"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a0f4e04760d3ec7f808d8aa51b3607fda"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1OrNode.html#a0f4e04760d3ec7f808d8aa51b3607fda">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a0f4e04760d3ec7f808d8aa51b3607fda"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1PrefetchNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1PrefetchNode.html
index d755078..17e5239 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1PrefetchNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1PrefetchNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::PrefetchNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a491c03fa62a96b66b7ea0c8e9095b98e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html#a491c03fa62a96b66b7ea0c8e9095b98e">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a491c03fa62a96b66b7ea0c8e9095b98e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a40defcee76278429e8c6c3c981206d36"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html#a40defcee76278429e8c6c3c981206d36">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html">PrefetchNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a40defcee76278429e8c6c3c981206d36"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html#a40defcee76278429e8c6c3c981206d36">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html">PrefetchNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a34 [...]
 <tr class="separator:a40defcee76278429e8c6c3c981206d36"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad560931be434382ad0be20bb6bb7b827"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html#ad560931be434382ad0be20bb6bb7b827">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ad560931be434382ad0be20bb6bb7b827"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1PrimFuncNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1PrimFuncNode.html
index ff26e8b..b9823af 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1PrimFuncNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1PrimFuncNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::PrimFuncNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:add7c60c29895497221750e01e54f5023"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1PrimFuncNode.html#add7c60c29895497221750e01e54f5023">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a> *v)</td></tr>
 <tr class="separator:add7c60c29895497221750e01e54f5023"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a424c7818ec81111ec8dc2bff6b0d62e1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1PrimFuncNode.html#a424c7818ec81111ec8dc2bff6b0d62e1">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1PrimFuncNode.html">PrimFuncNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a424c7818ec81111ec8dc2bff6b0d62e1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1PrimFuncNode.html#a424c7818ec81111ec8dc2bff6b0d62e1">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1PrimFuncNode.html">PrimFuncNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a34 [...]
 <tr class="separator:a424c7818ec81111ec8dc2bff6b0d62e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a82faf0ae143826287ecf4b48da4d904f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1PrimFuncNode.html#a82faf0ae143826287ecf4b48da4d904f">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a82faf0ae143826287ecf4b48da4d904f"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1ProducerLoadNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1ProducerLoadNode.html
index c1c08e9..7b65afd 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1ProducerLoadNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1ProducerLoadNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::ProducerLoadNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a33a2282b0d52fef96d976cec8023a024"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ProducerLoadNode.html#a33a2282b0d52fef96d976cec8023a024">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a33a2282b0d52fef96d976cec8023a024"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac1b3a0c75b1567f0a5d8282a6cac0dc9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ProducerLoadNode.html#ac1b3a0c75b1567f0a5d8282a6cac0dc9">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1ProducerLoadNode.html">ProducerLoadNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:ac1b3a0c75b1567f0a5d8282a6cac0dc9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ProducerLoadNode.html#ac1b3a0c75b1567f0a5d8282a6cac0dc9">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1ProducerLoadNode.html">ProducerLoadNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b8 [...]
 <tr class="separator:ac1b3a0c75b1567f0a5d8282a6cac0dc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2d0bc22663f3b55b2b87daf83dc59d34"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ProducerLoadNode.html#a2d0bc22663f3b55b2b87daf83dc59d34">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a2d0bc22663f3b55b2b87daf83dc59d34"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1ProducerRealizeNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1ProducerRealizeNode.html
index ddf6545..eb7805b 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1ProducerRealizeNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1ProducerRealizeNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::ProducerRealizeNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a97e44d47b6cf6e47c459935007699b7f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ProducerRealizeNode.html#a97e44d47b6cf6e47c459935007699b7f">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a97e44d47b6cf6e47c459935007699b7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4e448e678fb39197ade073e17614f8fb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ProducerRealizeNode.html#a4e448e678fb39197ade073e17614f8fb">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1ProducerRealizeNode.html">ProducerRealizeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a4e448e678fb39197ade073e17614f8fb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ProducerRealizeNode.html#a4e448e678fb39197ade073e17614f8fb">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1ProducerRealizeNode.html">ProducerRealizeNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c [...]
 <tr class="separator:a4e448e678fb39197ade073e17614f8fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a56d0294258623c4adc88ea896f20541e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ProducerRealizeNode.html#a56d0294258623c4adc88ea896f20541e">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a56d0294258623c4adc88ea896f20541e"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1ProducerStoreNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1ProducerStoreNode.html
index 15765fe..693025a 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1ProducerStoreNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1ProducerStoreNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::ProducerStoreNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a75e2069d1ddbfd73480ccdfde522e064"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ProducerStoreNode.html#a75e2069d1ddbfd73480ccdfde522e064">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a75e2069d1ddbfd73480ccdfde522e064"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8b3b0b2c7597c05257ecd80a33988d3c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ProducerStoreNode.html#a8b3b0b2c7597c05257ecd80a33988d3c">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1ProducerStoreNode.html">ProducerStoreNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a8b3b0b2c7597c05257ecd80a33988d3c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ProducerStoreNode.html#a8b3b0b2c7597c05257ecd80a33988d3c">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1ProducerStoreNode.html">ProducerStoreNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f1438 [...]
 <tr class="separator:a8b3b0b2c7597c05257ecd80a33988d3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:adcadfaece80e1f513f56c656b35a7921"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ProducerStoreNode.html#adcadfaece80e1f513f56c656b35a7921">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:adcadfaece80e1f513f56c656b35a7921"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1RampNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1RampNode.html
index 22df514..78747ab 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1RampNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1RampNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::RampNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a57d0d4129dc260fc2a79e50ad2dc3e68"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1RampNode.html#a57d0d4129dc260fc2a79e50ad2dc3e68">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a57d0d4129dc260fc2a79e50ad2dc3e68"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aed36222cfc75644cdb8b7619cc9b69eb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1RampNode.html#aed36222cfc75644cdb8b7619cc9b69eb">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1RampNode.html">RampNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:aed36222cfc75644cdb8b7619cc9b69eb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1RampNode.html#aed36222cfc75644cdb8b7619cc9b69eb">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1RampNode.html">RampNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">e [...]
 <tr class="separator:aed36222cfc75644cdb8b7619cc9b69eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a0e2cf22aeaf189ee98c531b7690a36bc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1RampNode.html#a0e2cf22aeaf189ee98c531b7690a36bc">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a0e2cf22aeaf189ee98c531b7690a36bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1ReduceNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1ReduceNode.html
index 8145aaa..8100c8a 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1ReduceNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1ReduceNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::ReduceNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a9afa77e5fe462dd6d75740fb2b504dfa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ReduceNode.html#a9afa77e5fe462dd6d75740fb2b504dfa">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a9afa77e5fe462dd6d75740fb2b504dfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab8d18e8f464db03aa61dd3856952af34"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ReduceNode.html#ab8d18e8f464db03aa61dd3856952af34">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1ReduceNode.html">ReduceNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:ab8d18e8f464db03aa61dd3856952af34"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ReduceNode.html#ab8d18e8f464db03aa61dd3856952af34">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1ReduceNode.html">ReduceNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db23 [...]
 <tr class="separator:ab8d18e8f464db03aa61dd3856952af34"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac4a2c0897d979f63f48425846c2395d9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ReduceNode.html#ac4a2c0897d979f63f48425846c2395d9">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ac4a2c0897d979f63f48425846c2395d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1SelectNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1SelectNode.html
index 14f44b0..2353a5f 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1SelectNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1SelectNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::SelectNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:aefaaf9f769543346665096278c20171f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1SelectNode.html#aefaaf9f769543346665096278c20171f">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:aefaaf9f769543346665096278c20171f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a59b1d0afce6d531401689e068bd1dc57"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1SelectNode.html#a59b1d0afce6d531401689e068bd1dc57">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1SelectNode.html">SelectNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a59b1d0afce6d531401689e068bd1dc57"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1SelectNode.html#a59b1d0afce6d531401689e068bd1dc57">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1SelectNode.html">SelectNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db23 [...]
 <tr class="separator:a59b1d0afce6d531401689e068bd1dc57"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a09494cfb4b80374aed26cc5d4d4c65a7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1SelectNode.html#a09494cfb4b80374aed26cc5d4d4c65a7">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a09494cfb4b80374aed26cc5d4d4c65a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1SeqStmtNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1SeqStmtNode.html
index f84c854..2add1d7 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1SeqStmtNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1SeqStmtNode.html
@@ -123,7 +123,7 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:abb4a377829c6f0449fb371ec2b792871"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3196bba617d63bab596f363ae1f932d1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1SeqStmtNode.html#a3196bba617d63bab596f363ae1f932d1">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a3196bba617d63bab596f363ae1f932d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6605000a8a3a89119ed3e7a2d91018f5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1SeqStmtNode.html#a6605000a8a3a89119ed3e7a2d91018f5">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1SeqStmtNode.html">SeqStmtNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a6605000a8a3a89119ed3e7a2d91018f5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1SeqStmtNode.html#a6605000a8a3a89119ed3e7a2d91018f5">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1SeqStmtNode.html">SeqStmtNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460d [...]
 <tr class="separator:a6605000a8a3a89119ed3e7a2d91018f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4d1cdb3460cdc5c939ea08ff7f8dbe2a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1SeqStmtNode.html#a4d1cdb3460cdc5c939ea08ff7f8dbe2a">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a4d1cdb3460cdc5c939ea08ff7f8dbe2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1ShuffleNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1ShuffleNode.html
index 879c2db..c2be4a5 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1ShuffleNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1ShuffleNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::ShuffleNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:af764cbab54a79f4f7f3d5e1ddd9e1e5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ShuffleNode.html#af764cbab54a79f4f7f3d5e1ddd9e1e5f">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:af764cbab54a79f4f7f3d5e1ddd9e1e5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2e6ed6e12430264b802e5a86d7833080"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ShuffleNode.html#a2e6ed6e12430264b802e5a86d7833080">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1ShuffleNode.html">ShuffleNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a2e6ed6e12430264b802e5a86d7833080"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ShuffleNode.html#a2e6ed6e12430264b802e5a86d7833080">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1ShuffleNode.html">ShuffleNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460d [...]
 <tr class="separator:a2e6ed6e12430264b802e5a86d7833080"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad9b879bb15015dccc8fc93918ba41e29"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1ShuffleNode.html#ad9b879bb15015dccc8fc93918ba41e29">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ad9b879bb15015dccc8fc93918ba41e29"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1SizeVarNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1SizeVarNode.html
index f7b772a..1a43f5c 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1SizeVarNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1SizeVarNode.html
@@ -120,7 +120,7 @@ Public Member Functions</h2></td></tr>
 <tr class="inherit_header pub_methods_classtvm_1_1tir_1_1VarNode"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1tir_1_1VarNode')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1tir_1_1VarNode.html">tvm::tir::VarNode</a></td></tr>
 <tr class="memitem:a77e835b6ba3c6d26609cbc0b05917e96 inherit pub_methods_classtvm_1_1tir_1_1VarNode"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1VarNode.html#a77e835b6ba3c6d26609cbc0b05917e96">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a77e835b6ba3c6d26609cbc0b05917e96 inherit pub_methods_classtvm_1_1tir_1_1VarNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acdb9c51a2ddd95cedd2a18717dfe585f inherit pub_methods_classtvm_1_1tir_1_1VarNode"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1VarNode.html#acdb9c51a2ddd95cedd2a18717dfe585f">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1VarNode.html">VarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:acdb9c51a2ddd95cedd2a18717dfe585f inherit pub_methods_classtvm_1_1tir_1_1VarNode"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1VarNode.html#acdb9c51a2ddd95cedd2a18717dfe585f">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1VarNode.html">VarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacet [...]
 <tr class="separator:acdb9c51a2ddd95cedd2a18717dfe585f inherit pub_methods_classtvm_1_1tir_1_1VarNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad86c6023a45643e8532ac9ef8a4ca910 inherit pub_methods_classtvm_1_1tir_1_1VarNode"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1VarNode.html#ad86c6023a45643e8532ac9ef8a4ca910">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ad86c6023a45643e8532ac9ef8a4ca910 inherit pub_methods_classtvm_1_1tir_1_1VarNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1StoreNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1StoreNode.html
index f47b4b5..e53a93e 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1StoreNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1StoreNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::StoreNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a3f6c20a2767139e3a6555554f1e130a4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1StoreNode.html#a3f6c20a2767139e3a6555554f1e130a4">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a3f6c20a2767139e3a6555554f1e130a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1fdbfaef5042c83fc109a1e53a6cdc74"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1StoreNode.html#a1fdbfaef5042c83fc109a1e53a6cdc74">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1StoreNode.html">StoreNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a1fdbfaef5042c83fc109a1e53a6cdc74"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1StoreNode.html#a1fdbfaef5042c83fc109a1e53a6cdc74">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1StoreNode.html">StoreNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a [...]
 <tr class="separator:a1fdbfaef5042c83fc109a1e53a6cdc74"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a70ef320d87e4f42f7d4abe43d6c9c980"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1StoreNode.html#a70ef320d87e4f42f7d4abe43d6c9c980">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a70ef320d87e4f42f7d4abe43d6c9c980"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1StringImmNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1StringImmNode.html
index 95d0243..24d5950 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1StringImmNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1StringImmNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::StringImmNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:ac01ffc8ae6ef913d1fbc34fb7f23847c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1StringImmNode.html#ac01ffc8ae6ef913d1fbc34fb7f23847c">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:ac01ffc8ae6ef913d1fbc34fb7f23847c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1838338eb7520d37a2a779358521287b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1StringImmNode.html#a1838338eb7520d37a2a779358521287b">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1StringImmNode.html">StringImmNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:a1838338eb7520d37a2a779358521287b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1StringImmNode.html#a1838338eb7520d37a2a779358521287b">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1StringImmNode.html">StringImmNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9 [...]
 <tr class="separator:a1838338eb7520d37a2a779358521287b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9ad186c7d5805d8af02b5d06450051c6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1StringImmNode.html#a9ad186c7d5805d8af02b5d06450051c6">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:a9ad186c7d5805d8af02b5d06450051c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1tir_1_1VarNode.html b/docs/api/doxygen/classtvm_1_1tir_1_1VarNode.html
index d237f6f..4196c0c 100644
--- a/docs/api/doxygen/classtvm_1_1tir_1_1VarNode.html
+++ b/docs/api/doxygen/classtvm_1_1tir_1_1VarNode.html
@@ -118,7 +118,7 @@ Collaboration diagram for tvm::tir::VarNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a77e835b6ba3c6d26609cbc0b05917e96"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1VarNode.html#a77e835b6ba3c6d26609cbc0b05917e96">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a77e835b6ba3c6d26609cbc0b05917e96"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acdb9c51a2ddd95cedd2a18717dfe585f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1VarNode.html#acdb9c51a2ddd95cedd2a18717dfe585f">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1VarNode.html">VarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> equal) const </td></tr>
+<tr class="memitem:acdb9c51a2ddd95cedd2a18717dfe585f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1VarNode.html#acdb9c51a2ddd95cedd2a18717dfe585f">SEqualReduce</a> (const <a class="el" href="classtvm_1_1tir_1_1VarNode.html">VarNode</a> *other, <a class="el" href="classtvm_1_1SEqualReducer.html">SEqualReducer</a> <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equa [...]
 <tr class="separator:acdb9c51a2ddd95cedd2a18717dfe585f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad86c6023a45643e8532ac9ef8a4ca910"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tir_1_1VarNode.html#ad86c6023a45643e8532ac9ef8a4ca910">SHashReduce</a> (<a class="el" href="classtvm_1_1SHashReducer.html">SHashReducer</a> hash_reduce) const </td></tr>
 <tr class="separator:ad86c6023a45643e8532ac9ef8a4ca910"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/api/doxygen/codegen_8h_source.html b/docs/api/doxygen/codegen_8h_source.html
index 5641beb..1e62338 100644
--- a/docs/api/doxygen/codegen_8h_source.html
+++ b/docs/api/doxygen/codegen_8h_source.html
@@ -89,7 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">codegen.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="codegen_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 con [...]
+<a href="codegen_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 con [...]
 <div class="ttc" id="ir_2module_8h_html"><div class="ttname"><a href="ir_2module_8h.html">module.h</a></div><div class="ttdoc">IRModule that holds the functions and type definitions. </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="crt_2packed__func_8h_html_ad869d7c5618f982f6841399c216a234c"><div class="ttname"><a href="crt_2packed__func_8h.html#ad869d7c5618f982f6841399c216a234c">TVMArgs</a></div><div class="ttdeci">struct TVMArgs TVMArgs</div></div>
diff --git a/docs/api/doxygen/constant__utils_8h_source.html b/docs/api/doxygen/constant__utils_8h_source.html
index 9e61bcf..bac8d29 100644
--- a/docs/api/doxygen/constant__utils_8h_source.html
+++ b/docs/api/doxygen/constant__utils_8h_source.html
@@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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_1tir_html_ae8c7db788e840dc1c2ed1f365d5ea829"><div class="ttname"><a href="namespacetvm_1_1tir.html#ae8c7db788e840dc1c2ed1f365d5ea829">tvm::tir::IntImmNode</a></div><div class="ttdeci">tvm::IntImmNode IntImmNode</div><div class="ttdef"><b>Definition:</b> expr.h:47</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 class="ttc" id="namespacetvm_1_1tir_html_a5c414d5e54c099ad7287be302aac8f02"><div class="ttname"><a href="namespacetvm_1_1tir.html#a5c414d5e54c099ad7287be302aac8f02">tvm::tir::is_const_int</a></div><div class="ttdeci">bool is_const_int(const PrimExpr &amp;x, int64_t value)</div><div class="ttdoc">Check whether x is a constant integer expression. </div><div class="ttdef"><b>Definition:</b> op.h:793</div></div>
+<div class="ttc" id="namespacetvm_1_1tir_html_a5c414d5e54c099ad7287be302aac8f02"><div class="ttname"><a href="namespacetvm_1_1tir.html#a5c414d5e54c099ad7287be302aac8f02">tvm::tir::is_const_int</a></div><div class="ttdeci">bool is_const_int(const PrimExpr &amp;x, int64_t value)</div><div class="ttdoc">Check whether x is a constant integer expression. </div><div class="ttdef"><b>Definition:</b> op.h:1048</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:387</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
diff --git a/docs/api/doxygen/cublas_8h_source.html b/docs/api/doxygen/cublas_8h_source.html
index ecbc41e..69f89e7 100644
--- a/docs/api/doxygen/cublas_8h_source.html
+++ b/docs/api/doxygen/cublas_8h_source.html
@@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="detail_2extern_8h_html"><div class="ttname"><a href="detail_2extern_8h.html">extern.h</a></div><div class="ttdoc">Helpers for using external functions. </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="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 class="ttc" id="classtvm_1_1tir_1_1StringImm_html"><div class="ttname"><a href="classtvm_1_1tir_1_1StringImm.html">tvm::tir::StringImm</a></div><div class="ttdoc">Managed reference to StringImmNode. </div><div class="ttdef"><b>Definition:</b> expr.h:75</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1StringImm_html"><div class="ttname"><a href="classtvm_1_1tir_1_1StringImm.html">tvm::tir::StringImm</a></div><div class="ttdoc">Managed reference to StringImmNode. </div><div class="ttdef"><b>Definition:</b> expr.h:76</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/api/doxygen/cuda_2dense_8h_source.html b/docs/api/doxygen/cuda_2dense_8h_source.html
index e6e8f05..fd85fd4 100644
--- a/docs/api/doxygen/cuda_2dense_8h_source.html
+++ b/docs/api/doxygen/cuda_2dense_8h_source.html
@@ -98,13 +98,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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="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="classtvm_1_1te_1_1Operation_html"><div class="ttname"><a href="classtvm_1_1te_1_1Operation.html">tvm::te::Operation</a></div><div class="ttdoc">Operation that produces tensors. </div><div class="ttdef"><b>Definition:</b> tensor.h:48</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_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:289</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:88</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:291</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html_aa026b914ee05f81b6c20130b8905f257"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html#aa026b914ee05f81b6c20130b8905f257">tvm::runtime::Array::push_back</a></div><div class="ttdeci">void push_back(const T &amp;item)</div><div class="ttdoc">push a new item to the back of the list </div><div class="ttdef"><b>Definition:</b> container.h:726</div></div>
 <div class="ttc" id="schedule__pass_8h_html"><div class="ttname"><a href="schedule__pass_8h.html">schedule_pass.h</a></div><div class="ttdoc">Collection of Schedule pass functions. </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_1_1contrib_html_a68c8492ea536608724ef6267b0785054"><div class="ttname"><a href="namespacetvm_1_1topi_1_1contrib.html#a68c8492ea536608724ef6267b0785054">tvm::topi::contrib::cublas_matmul</a></div><div class="ttdeci">Tensor cublas_matmul(const Tensor &amp;lhs, const Tensor &amp;rhs, bool transa, bool transb)</div><div class="ttdoc">Create an op that multiplies lhs and rhs with cuBLAS. </div><div class="ttdef"><b>Definition:</b> cublas.h:46</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a13aaf23f0ab77f1ed4a7d4b7816bf210"><div class="ttname"><a href="namespacetvm_1_1topi.html#a13aaf23f0ab77f1ed4a7d4b7816bf210">tvm::topi::kBroadcast</a></div><div class="ttdeci">constexpr auto kBroadcast</div><div class="ttdef"><b>Definition:</b> tags.h:36</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:443</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:449</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_1_1nn_html_a34e1a8305acf89ef2f745c8d99bf8e89"><div class="ttname"><a href="namespacetvm_1_1topi_1_1nn.html#a34e1a8305acf89ef2f745c8d99bf8e89">tvm::topi::nn::dense</a></div><div class="ttdeci">tvm::te::Tensor dense(const tvm::te::Tensor &amp;data, const tvm::te::Tensor &amp;weight, const tvm::te::Tensor &amp;bias, const DataType &amp;out_dtype)</div><div class="ttdoc">Creates an operation that calculates data * weight^T + bias. </div><div class="t [...]
 <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="classtvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contigious sequence of ObjectRefs. </div><div class="ttdef"><b>Definition:</b> container.h:560</div></div>
diff --git a/docs/api/doxygen/cuda_2injective_8h_source.html b/docs/api/doxygen/cuda_2injective_8h_source.html
index 876c3b7..edf243b 100644
--- a/docs/api/doxygen/cuda_2injective_8h_source.html
+++ b/docs/api/doxygen/cuda_2injective_8h_source.html
@@ -95,10 +95,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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="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="classtvm_1_1Target_html_abed5e5cfb5d36e70ea5eaadef9fb63b2"><div class="ttname"><a href="classtvm_1_1Target.html#abed5e5cfb5d36e70ea5eaadef9fb63b2">tvm::Target::Current</a></div><div class="ttdeci">static tvm::Target Current(bool allow_not_defined=true)</div><div class="ttdoc">Get the current target context from thread local storage. </div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:289</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:291</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html_aa026b914ee05f81b6c20130b8905f257"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html#aa026b914ee05f81b6c20130b8905f257">tvm::runtime::Array::push_back</a></div><div class="ttdeci">void push_back(const T &amp;item)</div><div class="ttdoc">push a new item to the back of the list </div><div class="ttdef"><b>Definition:</b> container.h:726</div></div>
 <div class="ttc" id="schedule__pass_8h_html"><div class="ttname"><a href="schedule__pass_8h.html">schedule_pass.h</a></div><div class="ttdoc">Collection of Schedule pass functions. </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:443</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:449</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_1_1x86_html_afde6f5b6bb1825d127238b9a55a29337"><div class="ttname"><a href="namespacetvm_1_1topi_1_1x86.html#afde6f5b6bb1825d127238b9a55a29337">tvm::topi::x86::schedule_injective_from_existing</a></div><div class="ttdeci">Schedule schedule_injective_from_existing(Schedule sch, const Tensor &amp;out)</div><div class="ttdoc">Updates an existing schedule for the given injective ops. </div><div class="ttdef"><b>Definition:</b> injective.h:47</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contigious sequence of ObjectRefs. </div><div class="ttdef"><b>Definition:</b> container.h:560</div></div>
 <div class="ttc" id="classtvm_1_1te_1_1ComputeOpNode_html"><div class="ttname"><a href="classtvm_1_1te_1_1ComputeOpNode.html">tvm::te::ComputeOpNode</a></div><div class="ttdoc">A Compute op that compute a tensor on certain domain. </div><div class="ttdef"><b>Definition:</b> operation.h:225</div></div>
@@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="namespacetvm_1_1te_html_a9872626811f38606b4e934faa13b5b9f"><div class="ttname"><a href="namespacetvm_1_1te.html#a9872626811f38606b4e934faa13b5b9f">tvm::te::AutoInlineInjective</a></div><div class="ttdeci">void AutoInlineInjective(Schedule sch)</div><div class="ttdoc">To automatically inline operations with injective writes (i.e. writes without reduction or sequential...</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_1_1x86_html_a9ff21a27a270e187c985a93b565232c4"><div class="ttname"><a href="namespacetvm_1_1topi_1_1x86.html#a9ff21a27a270e187c985a93b565232c4">tvm::topi::x86::schedule_injective</a></div><div class="ttdeci">Schedule schedule_injective(const Target &amp;target, const Array&lt; Tensor &gt; &amp;outs)</div><div class="ttdoc">Create an x86 schedule for the given injective ops. </div><div class="ttdef"><b>Definition:</b> injective.h:68</div></div>
 <div class="ttc" id="generic__func_8h_html"><div class="ttname"><a href="generic__func_8h.html">generic_func.h</a></div><div class="ttdoc">Generic function that can be specialzied on a per target basis. </div></div>
-<div class="ttc" id="classtvm_1_1Integer_html"><div class="ttname"><a href="classtvm_1_1Integer.html">tvm::Integer</a></div><div class="ttdoc">Container of constant int that adds more constructors. </div><div class="ttdef"><b>Definition:</b> expr.h:354</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html"><div class="ttname"><a href="classtvm_1_1Integer.html">tvm::Integer</a></div><div class="ttdoc">Container of constant int that adds more constructors. </div><div class="ttdef"><b>Definition:</b> expr.h:356</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/api/doxygen/cuda_2normalization_8h_source.html b/docs/api/doxygen/cuda_2normalization_8h_source.html
index 90d96be..78a0e5a 100644
--- a/docs/api/doxygen/cuda_2normalization_8h_source.html
+++ b/docs/api/doxygen/cuda_2normalization_8h_source.html
@@ -94,11 +94,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="namespacetvm_1_1te_html_a485034766309df280239e0994913b34b"><div class="ttname"><a href="namespacetvm_1_1te.html#a485034766309df280239e0994913b34b">tvm::te::create_schedule</a></div><div class="ttdeci">Schedule create_schedule(Array&lt; Operation &gt; ops)</div><div class="ttdoc">Create a schedule for array of ops(and their dependencies). </div><div class="ttdef"><b>Definition:</b> schedule.h:583</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="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="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:289</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:291</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_1_1nn_html_ac3d8de9144f915a5dd27dcb70c0abdd4"><div class="ttname"><a href="namespacetvm_1_1topi_1_1nn.html#ac3d8de9144f915a5dd27dcb70c0abdd4">tvm::topi::nn::lrn</a></div><div class="ttdeci">Tensor lrn(const Tensor &amp;data, int size, int axis=1, float alpha=0.0001, float beta=0.75, float bias=2, std::string name=&quot;tensor&quot;, std::string tag=kBroadcast)</div><div class="ttdoc">Local response normalization inference operator. </div><div cla [...]
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html_aa026b914ee05f81b6c20130b8905f257"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html#aa026b914ee05f81b6c20130b8905f257">tvm::runtime::Array::push_back</a></div><div class="ttdeci">void push_back(const T &amp;item)</div><div class="ttdoc">push a new item to the back of the list </div><div class="ttdef"><b>Definition:</b> container.h:726</div></div>
 <div class="ttc" id="schedule__pass_8h_html"><div class="ttname"><a href="schedule__pass_8h.html">schedule_pass.h</a></div><div class="ttdoc">Collection of Schedule pass functions. </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:443</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:449</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contigious sequence of ObjectRefs. </div><div class="ttdef"><b>Definition:</b> container.h:560</div></div>
 <div class="ttc" id="classtvm_1_1te_1_1ComputeOpNode_html"><div class="ttname"><a href="classtvm_1_1te_1_1ComputeOpNode.html">tvm::te::ComputeOpNode</a></div><div class="ttdoc">A Compute op that compute a tensor on certain domain. </div><div class="ttdef"><b>Definition:</b> operation.h:225</div></div>
 <div class="ttc" id="classtvm_1_1te_1_1BaseComputeOpNode_html_a21617a643897727c51ded2b7260df4c3"><div class="ttname"><a href="classtvm_1_1te_1_1BaseComputeOpNode.html#a21617a643897727c51ded2b7260df4c3">tvm::te::BaseComputeOpNode::axis</a></div><div class="ttdeci">Array&lt; IterVar &gt; axis</div><div class="ttdoc">IterVar on each axis. </div><div class="ttdef"><b>Definition:</b> operation.h:206</div></div>
diff --git a/docs/api/doxygen/cuda_2pooling_8h_source.html b/docs/api/doxygen/cuda_2pooling_8h_source.html
index 2af7bb0..fc2a082 100644
--- a/docs/api/doxygen/cuda_2pooling_8h_source.html
+++ b/docs/api/doxygen/cuda_2pooling_8h_source.html
@@ -96,12 +96,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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="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="classtvm_1_1te_1_1Operation_html"><div class="ttname"><a href="classtvm_1_1te_1_1Operation.html">tvm::te::Operation</a></div><div class="ttdoc">Operation that produces tensors. </div><div class="ttdef"><b>Definition:</b> tensor.h:48</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:289</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:291</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_1_1rocm_html_a7d6d48e5cbcec1b7cc0a90c7399e2a8a"><div class="ttname"><a href="namespacetvm_1_1topi_1_1rocm.html#a7d6d48e5cbcec1b7cc0a90c7399e2a8a">tvm::topi::rocm::schedule_pool</a></div><div class="ttdeci">Schedule schedule_pool(const Target &amp;target, const Array&lt; Tensor &gt; &amp;outs)</div><div class="ttdoc">Create a rocm schedule for pool. </div><div class="ttdef"><b>Definition:</b> pooling.h:49</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_1_1rocm_html_a45aee34b0000f98aafd958ffe9baebc0"><div class="ttname"><a href="namespacetvm_1_1topi_1_1rocm.html#a45aee34b0000f98aafd958ffe9baebc0">tvm::topi::rocm::schedule_global_pool</a></div><div class="ttdeci">Schedule schedule_global_pool(const Target &amp;target, const Array&lt; Tensor &gt; &amp;outs)</div><div class="ttdoc">Create a rocm schedule for global_pool. </div><div class="ttdef"><b>Definition:</b> pooling.h:61</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html_aa026b914ee05f81b6c20130b8905f257"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html#aa026b914ee05f81b6c20130b8905f257">tvm::runtime::Array::push_back</a></div><div class="ttdeci">void push_back(const T &amp;item)</div><div class="ttdoc">push a new item to the back of the list </div><div class="ttdef"><b>Definition:</b> container.h:726</div></div>
 <div class="ttc" id="schedule__pass_8h_html"><div class="ttname"><a href="schedule__pass_8h.html">schedule_pass.h</a></div><div class="ttdoc">Collection of Schedule pass functions. </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:443</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:449</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_1_1nn_html_a4cfe12ccdb74e687fb328bd047eb74e5"><div class="ttname"><a href="namespacetvm_1_1topi_1_1nn.html#a4cfe12ccdb74e687fb328bd047eb74e5">tvm::topi::nn::pool</a></div><div class="ttdeci">Tensor pool(const Tensor &amp;x, const Array&lt; PrimExpr &gt; &amp;kernel_size, const Array&lt; PrimExpr &gt; &amp;stride_size, const Array&lt; PrimExpr &gt; &amp;padding_size, PoolType pool_type, bool ceil_mode, const std::string &amp;layout=&quot;NCHW&quot [...]
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contigious sequence of ObjectRefs. </div><div class="ttdef"><b>Definition:</b> container.h:560</div></div>
 <div class="ttc" id="classtvm_1_1te_1_1ComputeOpNode_html"><div class="ttname"><a href="classtvm_1_1te_1_1ComputeOpNode.html">tvm::te::ComputeOpNode</a></div><div class="ttdoc">A Compute op that compute a tensor on certain domain. </div><div class="ttdef"><b>Definition:</b> operation.h:225</div></div>
@@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="namespacetvm_1_1topi_html_ad5dcb2721aae4c9b84552b85db6e6cae"><div class="ttname"><a href="namespacetvm_1_1topi.html#ad5dcb2721aae4c9b84552b85db6e6cae">tvm::topi::is_broadcast</a></div><div class="ttdeci">bool is_broadcast(std::string tag)</div><div class="ttdef"><b>Definition:</b> tags.h:46</div></div>
 <div class="ttc" id="tags_8h_html"><div class="ttname"><a href="tags_8h.html">tags.h</a></div><div class="ttdoc">External function interface to rocBLAS libraries. </div></div>
 <div class="ttc" id="generic__func_8h_html"><div class="ttname"><a href="generic__func_8h.html">generic_func.h</a></div><div class="ttdoc">Generic function that can be specialzied on a per target basis. </div></div>
-<div class="ttc" id="classtvm_1_1Integer_html"><div class="ttname"><a href="classtvm_1_1Integer.html">tvm::Integer</a></div><div class="ttdoc">Container of constant int that adds more constructors. </div><div class="ttdef"><b>Definition:</b> expr.h:354</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html"><div class="ttname"><a href="classtvm_1_1Integer.html">tvm::Integer</a></div><div class="ttdoc">Container of constant int that adds more constructors. </div><div class="ttdef"><b>Definition:</b> expr.h:356</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/api/doxygen/cuda_2reduction_8h_source.html b/docs/api/doxygen/cuda_2reduction_8h_source.html
index 9b2b2e3..f212eef 100644
--- a/docs/api/doxygen/cuda_2reduction_8h_source.html
+++ b/docs/api/doxygen/cuda_2reduction_8h_source.html
@@ -101,11 +101,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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="classtvm_1_1te_1_1Operation_html"><div class="ttname"><a href="classtvm_1_1te_1_1Operation.html">tvm::te::Operation</a></div><div class="ttdoc">Operation that produces tensors. </div><div class="ttdef"><b>Definition:</b> tensor.h:48</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a5975401def8848aaa49ae83729263919"><div class="ttname"><a href="namespacetvm_1_1topi.html#a5975401def8848aaa49ae83729263919">tvm::topi::is_injective</a></div><div class="ttdeci">bool is_injective(std::string tag)</div><div class="ttdef"><b>Definition:</b> tags.h:50</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:289</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:291</div></div>
 <div class="ttc" id="classtvm_1_1te_1_1PlaceholderOpNode_html"><div class="ttname"><a href="classtvm_1_1te_1_1PlaceholderOpNode.html">tvm::te::PlaceholderOpNode</a></div><div class="ttdoc">A placeholder op represents an input placeholder. </div><div class="ttdef"><b>Definition:</b> operation.h:151</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html_aa026b914ee05f81b6c20130b8905f257"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html#aa026b914ee05f81b6c20130b8905f257">tvm::runtime::Array::push_back</a></div><div class="ttdeci">void push_back(const T &amp;item)</div><div class="ttdoc">push a new item to the back of the list </div><div class="ttdef"><b>Definition:</b> container.h:726</div></div>
 <div class="ttc" id="schedule__pass_8h_html"><div class="ttname"><a href="schedule__pass_8h.html">schedule_pass.h</a></div><div class="ttdoc">Collection of Schedule pass functions. </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:443</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:449</div></div>
 <div class="ttc" id="classtvm_1_1te_1_1OperationNode_html_a9675fbb905d62de5b86624388acec4b1"><div class="ttname"><a href="classtvm_1_1te_1_1OperationNode.html#a9675fbb905d62de5b86624388acec4b1">tvm::te::OperationNode::InputTensors</a></div><div class="ttdeci">virtual Array&lt; Tensor &gt; InputTensors() const =0</div><div class="ttdoc">List all the input Tensors. </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contigious sequence of ObjectRefs. </div><div class="ttdef"><b>Definition:</b> container.h:560</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html_a4e5ab4d7847d3ed41814e049dc13bc18"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html#a4e5ab4d7847d3ed41814e049dc13bc18">tvm::runtime::Array::size</a></div><div class="ttdeci">size_t size() const </div><div class="ttdef"><b>Definition:</b> container.h:689</div></div>
@@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="namespacetvm_1_1topi_1_1cuda_html_a9009672dab261008d66d4e59d896935f"><div class="ttname"><a href="namespacetvm_1_1topi_1_1cuda.html#a9009672dab261008d66d4e59d896935f">tvm::topi::cuda::TraverseAfterReduce</a></div><div class="ttdeci">void TraverseAfterReduce(const Target &amp;target, Schedule s, Operation op)</div><div class="ttdoc">Schedule a reduce op, then invoke TraverseBeforeReduce on each of the op&amp;#39;s inputs. </div><div class="ttdef"><b>Definition:</b> re [...]
 <div class="ttc" id="classtvm_1_1te_1_1BaseComputeOpNode_html_ad0df643468fc148d80afd7116abdd2ac"><div class="ttname"><a href="classtvm_1_1te_1_1BaseComputeOpNode.html#ad0df643468fc148d80afd7116abdd2ac">tvm::te::BaseComputeOpNode::reduce_axis</a></div><div class="ttdeci">Array&lt; IterVar &gt; reduce_axis</div><div class="ttdoc">IterVar on each reduction axis, if the body is a Reduce. </div><div class="ttdef"><b>Definition:</b> operation.h:208</div></div>
 <div class="ttc" id="generic__func_8h_html"><div class="ttname"><a href="generic__func_8h.html">generic_func.h</a></div><div class="ttdoc">Generic function that can be specialzied on a per target basis. </div></div>
-<div class="ttc" id="classtvm_1_1Integer_html"><div class="ttname"><a href="classtvm_1_1Integer.html">tvm::Integer</a></div><div class="ttdoc">Container of constant int that adds more constructors. </div><div class="ttdef"><b>Definition:</b> expr.h:354</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html"><div class="ttname"><a href="classtvm_1_1Integer.html">tvm::Integer</a></div><div class="ttdoc">Container of constant int that adds more constructors. </div><div class="ttdef"><b>Definition:</b> expr.h:356</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/api/doxygen/cuda_2softmax_8h_source.html b/docs/api/doxygen/cuda_2softmax_8h_source.html
index 98e1468..2313096 100644
--- a/docs/api/doxygen/cuda_2softmax_8h_source.html
+++ b/docs/api/doxygen/cuda_2softmax_8h_source.html
@@ -94,12 +94,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="namespacetvm_1_1te_html_a485034766309df280239e0994913b34b"><div class="ttname"><a href="namespacetvm_1_1te.html#a485034766309df280239e0994913b34b">tvm::te::create_schedule</a></div><div class="ttdeci">Schedule create_schedule(Array&lt; Operation &gt; ops)</div><div class="ttdoc">Create a schedule for array of ops(and their dependencies). </div><div class="ttdef"><b>Definition:</b> schedule.h:583</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="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="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:289</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:291</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_1_1nn_html_aa2cb22c64412c3eacb351c12b883333b"><div class="ttname"><a href="namespacetvm_1_1topi_1_1nn.html#aa2cb22c64412c3eacb351c12b883333b">tvm::topi::nn::softmax</a></div><div class="ttdeci">Tensor softmax(const Tensor &amp;x, int axis=-1, std::string name=&quot;tensor&quot;, std::string tag=&quot;softmax_output&quot;)</div><div class="ttdoc">Softmax activation. </div><div class="ttdef"><b>Definition:</b> softmax.h:50</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_abc1bbf41a8b463d860f7064c604aeef3"><div class="ttname"><a href="namespacetvm_1_1topi.html#abc1bbf41a8b463d860f7064c604aeef3">tvm::topi::exp</a></div><div class="ttdeci">Tensor exp(const Tensor &amp;x, std::string name=&quot;T_&quot;&quot;exp&quot;, std::string tag=kElementWise)</div><div class="ttdef"><b>Definition:</b> elemwise.h:49</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html_aa026b914ee05f81b6c20130b8905f257"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html#aa026b914ee05f81b6c20130b8905f257">tvm::runtime::Array::push_back</a></div><div class="ttdeci">void push_back(const T &amp;item)</div><div class="ttdoc">push a new item to the back of the list </div><div class="ttdef"><b>Definition:</b> container.h:726</div></div>
 <div class="ttc" id="schedule__pass_8h_html"><div class="ttname"><a href="schedule__pass_8h.html">schedule_pass.h</a></div><div class="ttdoc">Collection of Schedule pass functions. </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:443</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:449</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contigious sequence of ObjectRefs. </div><div class="ttdef"><b>Definition:</b> container.h:560</div></div>
 <div class="ttc" id="classtvm_1_1te_1_1ComputeOpNode_html"><div class="ttname"><a href="classtvm_1_1te_1_1ComputeOpNode.html">tvm::te::ComputeOpNode</a></div><div class="ttdoc">A Compute op that compute a tensor on certain domain. </div><div class="ttdef"><b>Definition:</b> operation.h:225</div></div>
 <div class="ttc" id="classtvm_1_1te_1_1BaseComputeOpNode_html_a21617a643897727c51ded2b7260df4c3"><div class="ttname"><a href="classtvm_1_1te_1_1BaseComputeOpNode.html#a21617a643897727c51ded2b7260df4c3">tvm::te::BaseComputeOpNode::axis</a></div><div class="ttdeci">Array&lt; IterVar &gt; axis</div><div class="ttdoc">IterVar on each axis. </div><div class="ttdef"><b>Definition:</b> operation.h:206</div></div>
diff --git a/docs/api/doxygen/data__layout_8h_source.html b/docs/api/doxygen/data__layout_8h_source.html
index 86b2e62..1a351e5 100644
--- a/docs/api/doxygen/data__layout_8h_source.html
+++ b/docs/api/doxygen/data__layout_8h_source.html
@@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1tir_1_1Layout_html_a0fa224417a05bc774c6e4fc8093ca75a"><div class="ttname"><a href="classtvm_1_1tir_1_1Layout.html#a0fa224417a05bc774c6e4fc8093ca75a">tvm::tir::Layout::IndexOf</a></div><div class="ttdeci">int32_t IndexOf(const LayoutAxis &amp;axis) const </div><div class="ttdoc">return the index of the input axis. If it is not found in the layout or the layout is undefined...</div><div class="ttdef"><b>Definition:</b> data_layout.h:224</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1LayoutAxis_html_a0234c6380a757b4a36f4dcba25dc6b21"><div class="ttname"><a href="classtvm_1_1tir_1_1LayoutAxis.html#a0234c6380a757b4a36f4dcba25dc6b21">tvm::tir::LayoutAxis::operator==</a></div><div class="ttdeci">bool operator==(const LayoutAxis &amp;rhs) const </div><div class="ttdef"><b>Definition:</b> data_layout.h:71</div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1VarNode_html_aefe69c9361d4ab7282a9c07efebe4414"><div class="ttname"><a href="classtvm_1_1tir_1_1VarNode.html#aefe69c9361d4ab7282a9c07efebe4414">tvm::tir::VarNode::name_hint</a></div><div class="ttdeci">String name_hint</div><div class="ttdoc">The hint to the variable name. </div><div class="ttdef"><b>Definition:</b> var.h:53</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:289</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1IterVar_html"><div class="ttname"><a href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a></div><div class="ttdoc">Iteration Variable, represents an iteration over an integer interval. </div><div class="ttdef"><b>Definition:</b> var.h:291</div></div>
 <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> loop_state.h:457</div></div>
 <div class="ttc" id="tir_2op_8h_html"><div class="ttname"><a href="tir_2op_8h.html">op.h</a></div><div class="ttdoc">Common operators defined for Expr. </div></div>
 <div class="ttc" id="classtvm_1_1tir_1_1Layout_html_a57a19f7b1c1f3d05d333f6c10272006e"><div class="ttname"><a href="classtvm_1_1tir_1_1Layout.html#a57a19f7b1c1f3d05d333f6c10272006e">tvm::tir::Layout::Contains</a></div><div class="ttdeci">bool Contains(const LayoutAxis &amp;axis) const </div><div class="ttdoc">Whether the layout contains an axis. </div><div class="ttdef"><b>Definition:</b> data_layout.h:247</div></div>
diff --git a/docs/api/doxygen/detail_2broadcast_8h_source.html b/docs/api/doxygen/detail_2broadcast_8h_source.html
index b23085c..ffee207 100644
--- a/docs/api/doxygen/detail_2broadcast_8h_source.html
+++ b/docs/api/doxygen/detail_2broadcast_8h_source.html
@@ -89,17 +89,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">broadcast.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="detail_2broadcast_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"> * o [...]
+<a href="detail_2broadcast_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"> * o [...]
+<div class="ttc" id="namespacetvm_html_aac2abc149c1a47944c37b560181b15c0"><div class="ttname"><a href="namespacetvm.html#aac2abc149c1a47944c37b560181b15c0">tvm::min</a></div><div class="ttdeci">PrimExpr min(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">take minimum of two values </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_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_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:88</div></div>
 <div class="ttc" id="constant__utils_8h_html"><div class="ttname"><a href="constant__utils_8h.html">constant_utils.h</a></div><div class="ttdoc">Utility functions for handling constants in TVM expressions. </div></div>
-<div class="ttc" id="namespacetvm_html_a9da780393e228969f77aa7550520a582"><div class="ttname"><a href="namespacetvm.html#a9da780393e228969f77aa7550520a582">tvm::min</a></div><div class="ttdeci">PrimExpr min(PrimExpr a, PrimExpr b)</div><div class="ttdoc">take minimum of two values </div></div>
+<div class="ttc" id="namespacetvm_html_a0df5ca82d2c566f628ebb2f1e84a3fcb"><div class="ttname"><a href="namespacetvm.html#a0df5ca82d2c566f628ebb2f1e84a3fcb">tvm::max</a></div><div class="ttdeci">PrimExpr max(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">take maximum of two values </div></div>
 <div class="ttc" id="namespacetvm_1_1tir_html_ae8c7db788e840dc1c2ed1f365d5ea829"><div class="ttname"><a href="namespacetvm_1_1tir.html#ae8c7db788e840dc1c2ed1f365d5ea829">tvm::tir::IntImmNode</a></div><div class="ttdeci">tvm::IntImmNode IntImmNode</div><div class="ttdef"><b>Definition:</b> expr.h:47</div></div>
+<div class="ttc" id="namespacetvm_1_1tir_html_aed3f57cf8d1c3546f075701898c5b70f"><div class="ttname"><a href="namespacetvm_1_1tir.html#aed3f57cf8d1c3546f075701898c5b70f">tvm::tir::make_zero</a></div><div class="ttdeci">PrimExpr make_zero(DataType t, Span span=Span())</div><div class="ttdoc">Make a const zero expr. </div><div class="ttdef"><b>Definition:</b> op.h:1107</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_af30c02f3a3f37c7963b3af60fb9c72a1"><div class="ttname"><a href="namespacetvm_1_1topi.html#af30c02f3a3f37c7963b3af60fb9c72a1">tvm::topi::shape</a></div><div class="ttdeci">Tensor shape(const Tensor &amp;src, DataType dtype, const std::string name=&quot;T_shape&quot;, const std::string tag=kInjective)</div><div class="ttdoc">Get the shape of input tensor. </div><div class="ttdef"><b>Definition:</b> transform.h:1504</div></div>
-<div class="ttc" id="namespacetvm_html_ab49bad0808ba033343e72ba37b39af2e"><div class="ttname"><a href="namespacetvm.html#ab49bad0808ba033343e72ba37b39af2e">tvm::max</a></div><div class="ttdeci">PrimExpr max(PrimExpr a, PrimExpr b)</div><div class="ttdoc">take maximum of two values </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="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 class="ttc" id="namespacetvm_1_1tir_html_adc4408508a413fb7f3b2567f8d847dbb"><div class="ttname"><a href="namespacetvm_1_1tir.html#adc4408508a413fb7f3b2567f8d847dbb">tvm::tir::make_zero</a></div><div class="ttdeci">PrimExpr make_zero(DataType t)</div><div class="ttdoc">Make a const zero expr. </div><div class="ttdef"><b>Definition:</b> op.h:852</div></div>
 <div class="ttc" id="namespacetvm_1_1te_html_afe4f57aeb3dd5ae9c0b58135e14d67ca"><div class="ttname"><a href="namespacetvm_1_1te.html#afe4f57aeb3dd5ae9c0b58135e14d67ca">tvm::te::compute</a></div><div class="ttdeci">Tensor compute(Array&lt; PrimExpr &gt; shape, FCompute fcompute, std::string name=&quot;tensor&quot;, std::string tag=&quot;&quot;, Map&lt; String, ObjectRef &gt; attrs={})</div><div class="ttdoc">Construct a new tensor by computing over shape, using the computation rule: resul [...]
 <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:109</div></div>
 </div><!-- fragment --></div><!-- contents -->
diff --git a/docs/api/doxygen/detail_2extern_8h_source.html b/docs/api/doxygen/detail_2extern_8h_source.html
index 50d013d..de82dce 100644
--- a/docs/api/doxygen/detail_2extern_8h_source.html
+++ b/docs/api/doxygen/detail_2extern_8h_source.html
@@ -89,13 +89,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">extern.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="detail_2extern_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 m [...]
+<a href="detail_2extern_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 m [...]
+<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="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="classtvm_1_1tir_1_1Call_html"><div class="ttname"><a href="classtvm_1_1tir_1_1Call.html">tvm::tir::Call</a></div><div class="ttdoc">Managed reference to CallNode. </div><div class="ttdef"><b>Definition:</b> expr.h:913</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1Call_html"><div class="ttname"><a href="classtvm_1_1tir_1_1Call.html">tvm::tir::Call</a></div><div class="ttdoc">Managed reference to CallNode. </div><div class="ttdef"><b>Definition:</b> expr.h:928</div></div>
 <div class="ttc" id="namespacetvm_1_1tir_1_1builtin_html_a2c13c6e4b2f92e17f357665f9f11736c"><div class="ttname"><a href="namespacetvm_1_1tir_1_1builtin.html#a2c13c6e4b2f92e17f357665f9f11736c">tvm::tir::builtin::tvm_call_packed</a></div><div class="ttdeci">const Op &amp; tvm_call_packed()</div><div class="ttdoc">See pesudo code. </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1DataType_html_aebad9f7235dd20af649fb5c2113797b8"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html#aebad9f7235dd20af649fb5c2113797b8">tvm::runtime::DataType::Handle</a></div><div class="ttdeci">static DataType Handle(int bits=64, int lanes=1)</div><div class="ttdoc">Construct a handle type. </div><div class="ttdef"><b>Definition:</b> data_type.h:181</div></div>
 <div class="ttc" id="namespacetvm_1_1tir_1_1builtin_html_a28f99e6dd767482765b854ee9fc71f2c"><div class="ttname"><a href="namespacetvm_1_1tir_1_1builtin.html#a28f99e6dd767482765b854ee9fc71f2c">tvm::tir::builtin::tvm_stack_make_array</a></div><div class="ttdeci">const Op &amp; tvm_stack_make_array()</div><div class="ttdoc">Allocate a NDArray(DLTensor) on stack, return the handle. </div></div>
-<div class="ttc" id="namespacetvm_1_1tir_html_a4ea566597880d04bd62fbec687e338b5"><div class="ttname"><a href="namespacetvm_1_1tir.html#a4ea566597880d04bd62fbec687e338b5">tvm::tir::make_const</a></div><div class="ttdeci">PrimExpr make_const(DataType t, ValueType value)</div><div class="ttdoc">Make a const value with certain data type. </div><div class="ttdef"><b>Definition:</b> op.h:844</div></div>
 <div class="ttc" id="classtvm_1_1te_1_1ExternOp_html"><div class="ttname"><a href="classtvm_1_1te_1_1ExternOp.html">tvm::te::ExternOp</a></div><div class="ttdoc">Managed reference to ExternOpNode. </div><div class="ttdef"><b>Definition:</b> operation.h:458</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_af30c02f3a3f37c7963b3af60fb9c72a1"><div class="ttname"><a href="namespacetvm_1_1topi.html#af30c02f3a3f37c7963b3af60fb9c72a1">tvm::topi::shape</a></div><div class="ttdeci">Tensor shape(const Tensor &amp;src, DataType dtype, const std::string name=&quot;T_shape&quot;, const std::string tag=kInjective)</div><div class="ttdoc">Get the shape of input tensor. </div><div class="ttdef"><b>Definition:</b> transform.h:1504</div></div>
 <div class="ttc" id="namespacetvm_1_1tir_1_1builtin_html_abd540cb73407771ecfb4f78722ce5a1b"><div class="ttname"><a href="namespacetvm_1_1tir_1_1builtin.html#abd540cb73407771ecfb4f78722ce5a1b">tvm::tir::builtin::tvm_stack_make_shape</a></div><div class="ttdeci">const Op &amp; tvm_stack_make_shape()</div><div class="ttdoc">Allocate a shape tuple on stack, return the handle. </div></div>
@@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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 class="ttc" id="builtin_8h_html"><div class="ttname"><a href="builtin_8h.html">builtin.h</a></div><div class="ttdoc">TIR builtin intrinsics. </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:1252</div></div>
-<div class="ttc" id="classtvm_1_1tir_1_1Evaluate_html"><div class="ttname"><a href="classtvm_1_1tir_1_1Evaluate.html">tvm::tir::Evaluate</a></div><div class="ttdoc">Managed reference to EvaluateNode. </div><div class="ttdef"><b>Definition:</b> stmt.h:730</div></div>
+<div class="ttc" id="classtvm_1_1tir_1_1Evaluate_html"><div class="ttname"><a href="classtvm_1_1tir_1_1Evaluate.html">tvm::tir::Evaluate</a></div><div class="ttdoc">Managed reference to EvaluateNode. </div><div class="ttdef"><b>Definition:</b> stmt.h:746</div></div>
 <div class="ttc" id="namespacetvm_html_a41918af1a1dc386388639a9d3ad06c5d"><div class="ttname"><a href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">tvm::DataType</a></div><div class="ttdeci">runtime::DataType DataType</div><div class="ttdef"><b>Definition:</b> data_type.h:382</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1DataType_html_ab45f13dd70d982d9f977c79b6f7fac98"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html#ab45f13dd70d982d9f977c79b6f7fac98">tvm::runtime::DataType::Int</a></div><div class="ttdeci">static DataType Int(int bits, int lanes=1)</div><div class="ttdoc">Construct an int type. </div><div class="ttdef"><b>Definition:</b> data_type.h:154</div></div>
 </div><!-- fragment --></div><!-- contents -->
diff --git a/docs/api/doxygen/device__api_8h_source.html b/docs/api/doxygen/device__api_8h_source.html
index f7fbf04..c117e74 100644
--- a/docs/api/doxygen/device__api_8h_source.html
+++ b/docs/api/doxygen/device__api_8h_source.html
@@ -90,7 +90,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 </div><!--header-->
 <div class="contents">
 <a href="device__api_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 [...]
-<div class="ttc" id="classtvm_1_1runtime_1_1TVMRetValue_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMRetValue.html">tvm::runtime::TVMRetValue</a></div><div class="ttdoc">Return Value container, Unlike TVMArgValue, which only holds reference and do not delete the underlyi...</div><div class="ttdef"><b>Definition:</b> packed_func.h:571</div></div>
+<div class="ttc" id="classtvm_1_1runtime_1_1TVMRetValue_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMRetValue.html">tvm::runtime::TVMRetValue</a></div><div class="ttdoc">Return Value container, Unlike TVMArgValue, which only holds reference and do not delete the underlyi...</div><div class="ttdef"><b>Definition:</b> packed_func.h:573</div></div>
 <div class="ttc" id="namespacetvm_1_1runtime_html_a46fef1ca0ccc05473e9bb0a8c6b66619a69fe0643750b0c49e8b8aefb1cada337"><div class="ttname"><a href="namespacetvm_1_1runtime.html#a46fef1ca0ccc05473e9bb0a8c6b66619a69fe0643750b0c49e8b8aefb1cada337">tvm::runtime::kApiVersion</a></div><div class="ttdef"><b>Definition:</b> device_api.h:49</div></div>
 <div class="ttc" id="c__runtime__api_8h_html_a57cbccb14c35a0e62dbc1b911188fcefacdc33f5efa9ddabe89e886c28d1ff65b"><div class="ttname"><a href="c__runtime__api_8h.html#a57cbccb14c35a0e62dbc1b911188fcefacdc33f5efa9ddabe89e886c28d1ff65b">kDLSDAccel</a></div><div class="ttdef"><b>Definition:</b> c_runtime_api.h:81</div></div>
 <div class="ttc" id="namespacetvm_1_1runtime_html_a2f6f769f6dbbbb24929b7c9f91a48c90"><div class="ttname"><a href="namespacetvm_1_1runtime.html#a2f6f769f6dbbbb24929b7c9f91a48c90">tvm::runtime::kMaxStackAlloca</a></div><div class="ttdeci">constexpr int kMaxStackAlloca</div><div class="ttdoc">Maximum size that can be allocated on stack. </div><div class="ttdef"><b>Definition:</b> device_api.h:59</div></div>
diff --git a/docs/api/doxygen/diagnostic_8h_source.html b/docs/api/doxygen/diagnostic_8h_source.html
index bbaf9d6..a9a348f 100644
--- a/docs/api/doxygen/diagnostic_8h_source.html
+++ b/docs/api/doxygen/diagnostic_8h_source.html
@@ -89,7 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">diagnostic.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="diagnostic_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  [...]
+<a href="diagnostic_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  [...]
 <div class="ttc" id="classtvm_1_1DiagnosticNode_html"><div class="ttname"><a href="classtvm_1_1DiagnosticNode.html">tvm::DiagnosticNode</a></div><div class="ttdoc">A compiler diagnostic message. </div><div class="ttdef"><b>Definition:</b> diagnostic.h:46</div></div>
 <div class="ttc" id="classtvm_1_1DiagnosticNode_html_ac7cfbfb2effb1a19a1802c71d5e47939"><div class="ttname"><a href="classtvm_1_1DiagnosticNode.html#ac7cfbfb2effb1a19a1802c71d5e47939">tvm::DiagnosticNode::level</a></div><div class="ttdeci">DiagnosticLevel level</div><div class="ttdoc">The level. </div><div class="ttdef"><b>Definition:</b> diagnostic.h:49</div></div>
 <div class="ttc" id="classtvm_1_1DiagnosticNode_html_af5469f228f87711ad8bd3f4f78f3bb54"><div class="ttname"><a href="classtvm_1_1DiagnosticNode.html#af5469f228f87711ad8bd3f4f78f3bb54">tvm::DiagnosticNode::span</a></div><div class="ttdeci">Span span</div><div class="ttdoc">The span at which to report an error. </div><div class="ttdef"><b>Definition:</b> diagnostic.h:51</div></div>
@@ -102,6 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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_1DiagnosticBuilder_html_a92d320e1ede24fe5ff47862365002691"><div class="ttname"><a href="classtvm_1_1DiagnosticBuilder.html#a92d320e1ede24fe5ff47862365002691">tvm::DiagnosticBuilder::source_name</a></div><div class="ttdeci">SourceName source_name</div><div class="ttdoc">The source name. </div><div class="ttdef"><b>Definition:</b> diagnostic.h:93</div></div>
 <div class="ttc" id="classtvm_1_1DiagnosticBuilder_html_ab8cb7481e5112445af289832dc718e36"><div class="ttname"><a href="classtvm_1_1DiagnosticBuilder.html#ab8cb7481e5112445af289832dc718e36">tvm::DiagnosticBuilder::DiagnosticBuilder</a></div><div class="ttdeci">DiagnosticBuilder()</div><div class="ttdef"><b>Definition:</b> diagnostic.h:104</div></div>
+<div class="ttc" id="namespacetvm_html_a1c4f14382b85bcfa57d9a3460db2354a"><div class="ttname"><a href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm::equal</a></div><div class="ttdeci">PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">equal </div></div>
 <div class="ttc" id="classtvm_1_1DiagnosticBuilder_html_aaa261651b73b9156793bfce29dfaa26f"><div class="ttname"><a href="classtvm_1_1DiagnosticBuilder.html#aaa261651b73b9156793bfce29dfaa26f">tvm::DiagnosticBuilder::level</a></div><div class="ttdeci">DiagnosticLevel level</div><div class="ttdoc">The level. </div><div class="ttdef"><b>Definition:</b> diagnostic.h:90</div></div>
 <div class="ttc" id="classtvm_1_1DiagnosticContextNode_html"><div class="ttname"><a href="classtvm_1_1DiagnosticContextNode.html">tvm::DiagnosticContextNode</a></div><div class="ttdef"><b>Definition:</b> diagnostic.h:159</div></div>
 <div class="ttc" id="classtvm_1_1DiagnosticNode_html_a83071e01581094effd32fc3c0af54123"><div class="ttname"><a href="classtvm_1_1DiagnosticNode.html#a83071e01581094effd32fc3c0af54123">tvm::DiagnosticNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const DiagnosticNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> diagnostic.h:62</div></div>
@@ -126,7 +127,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1DiagnosticContextNode_html_ada207669f235f6aa8dbf310583a92339"><div class="ttname"><a href="classtvm_1_1DiagnosticContextNode.html#ada207669f235f6aa8dbf310583a92339">tvm::DiagnosticContextNode::diagnostics</a></div><div class="ttdeci">Array&lt; Diagnostic &gt; diagnostics</div><div class="ttdoc">The set of diagnostics to report. </div><div class="ttdef"><b>Definition:</b> diagnostic.h:165</div></div>
 <div class="ttc" id="classtvm_1_1DiagnosticNode_html_a2b30f39283c4f0e114da470b6d6f5ee1"><div class="ttname"><a href="classtvm_1_1DiagnosticNode.html#a2b30f39283c4f0e114da470b6d6f5ee1">tvm::DiagnosticNode::_type_key</a></div><div class="ttdeci">static constexpr const char * _type_key</div><div class="ttdef"><b>Definition:</b> diagnostic.h:67</div></div>
 <div class="ttc" id="classtvm_1_1DiagnosticContextNode_html_aea5532b73702d459a53ee0c358607284"><div class="ttname"><a href="classtvm_1_1DiagnosticContextNode.html#aea5532b73702d459a53ee0c358607284">tvm::DiagnosticContextNode::renderer</a></div><div class="ttdeci">DiagnosticRenderer renderer</div><div class="ttdoc">The renderer set for the context. </div><div class="ttdef"><b>Definition:</b> diagnostic.h:168</div></div>
-<div class="ttc" id="namespacetvm_1_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</div></div>
 <div class="ttc" id="classtvm_1_1IRModule_html"><div class="ttname"><a href="classtvm_1_1IRModule.html">tvm::IRModule</a></div><div class="ttdoc">Managed reference class to IRModuleNode. </div><div class="ttdef"><b>Definition:</b> module.h:280</div></div>
 <div class="ttc" id="classtvm_1_1DiagnosticBuilder_html_a52d9cc3cb33e655c5d82af47daa74c66"><div class="ttname"><a href="classtvm_1_1DiagnosticBuilder.html#a52d9cc3cb33e655c5d82af47daa74c66">tvm::DiagnosticBuilder::span</a></div><div class="ttdeci">Span span</div><div class="ttdoc">The span of the diagnostic. </div><div class="ttdef"><b>Definition:</b> diagnostic.h:96</div></div>
 <div class="ttc" id="classtvm_1_1DiagnosticBuilder_html_a3204dda7b9a0625027f3d7cba87558f7"><div class="ttname"><a href="classtvm_1_1DiagnosticBuilder.html#a3204dda7b9a0625027f3d7cba87558f7">tvm::DiagnosticBuilder::DiagnosticBuilder</a></div><div class="ttdeci">DiagnosticBuilder(const DiagnosticBuilder &amp;builder)</div><div class="ttdef"><b>Definition:</b> diagnostic.h:106</div></div>
diff --git a/docs/api/doxygen/dilate_8h_source.html b/docs/api/doxygen/dilate_8h_source.html
index e18aeea..bba1239 100644
--- a/docs/api/doxygen/dilate_8h_source.html
+++ b/docs/api/doxygen/dilate_8h_source.html
@@ -89,20 +89,20 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">dilate.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="dilate_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 cont [...]
+<a href="dilate_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 cont [...]
+<div class="ttc" id="namespacetvm_1_1tir_html_a1a071208bbbab6b220cf46f5cdccdd86"><div class="ttname"><a href="namespacetvm_1_1tir.html#a1a071208bbbab6b220cf46f5cdccdd86">tvm::tir::make_const</a></div><div class="ttdeci">PrimExpr make_const(DataType t, ValueType value, Span span=Span())</div><div class="ttdoc">Make a const value with certain data type. </div><div class="ttdef"><b>Definition:</b> op.h:1099</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="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="namespacetvm_html_a353217978feabae3575560bf1586885f"><div class="ttname"><a href="namespacetvm.html#a353217978feabae3575560bf1586885f">tvm::if_then_else</a></div><div class="ttdeci">PrimExpr if_then_else(PrimExpr cond, PrimExpr true_value, PrimExpr false_value, Span span=Span())</div><div class="ttdoc">Conditional expression. </div></div>
 <div class="ttc" id="analyzer_8h_html"><div class="ttname"><a href="analyzer_8h.html">analyzer.h</a></div><div class="ttdoc">Algebra expression simplifications. </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a29e22aa45900dad3b6f9f705bb1dc688"><div class="ttname"><a href="namespacetvm_1_1topi.html#a29e22aa45900dad3b6f9f705bb1dc688">tvm::topi::kInjective</a></div><div class="ttdeci">constexpr auto kInjective</div><div class="ttdef"><b>Definition:</b> tags.h:33</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1Analyzer_html_a9b440f852f12ad0a4d8ed5ed97054425"><div class="ttname"><a href="classtvm_1_1arith_1_1Analyzer.html#a9b440f852f12ad0a4d8ed5ed97054425">tvm::arith::Analyzer::Simplify</a></div><div class="ttdeci">PrimExpr Simplify(const PrimExpr &amp;expr, int steps=2)</div><div class="ttdoc">Simplify expr. </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html_aa026b914ee05f81b6c20130b8905f257"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html#aa026b914ee05f81b6c20130b8905f257">tvm::runtime::Array::push_back</a></div><div class="ttdeci">void push_back(const T &amp;item)</div><div class="ttdoc">push a new item to the back of the list </div><div class="ttdef"><b>Definition:</b> container.h:726</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contigious sequence of ObjectRefs. </div><div class="ttdef"><b>Definition:</b> container.h:560</div></div>
+<div class="ttc" id="namespacetvm_html_a8f30aa0685ca52f846843e76a1ad1dc7"><div class="ttname"><a href="namespacetvm.html#a8f30aa0685ca52f846843e76a1ad1dc7">tvm::indexdiv</a></div><div class="ttdeci">PrimExpr indexdiv(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">compute floor(a / b) where a and b are non-negative. </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html_a4e5ab4d7847d3ed41814e049dc13bc18"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html#a4e5ab4d7847d3ed41814e049dc13bc18">tvm::runtime::Array::size</a></div><div class="ttdeci">size_t size() const </div><div class="ttdef"><b>Definition:</b> container.h:689</div></div>
-<div class="ttc" id="namespacetvm_html_a8203d70a5ebf3532370264b000d0d276"><div class="ttname"><a href="namespacetvm.html#a8203d70a5ebf3532370264b000d0d276">tvm::indexdiv</a></div><div class="ttdeci">PrimExpr indexdiv(PrimExpr a, PrimExpr b)</div><div class="ttdoc">compute floor(a / b) where a and b are non-negative. </div></div>
-<div class="ttc" id="namespacetvm_1_1tir_html_a4ea566597880d04bd62fbec687e338b5"><div class="ttname"><a href="namespacetvm_1_1tir.html#a4ea566597880d04bd62fbec687e338b5">tvm::tir::make_const</a></div><div class="ttdeci">PrimExpr make_const(DataType t, ValueType value)</div><div class="ttdoc">Make a const value with certain data type. </div><div class="ttdef"><b>Definition:</b> op.h:844</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="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 class="ttc" id="namespacetvm_html_ad400409d87dc337f8b5fe13e18d363f9"><div class="ttname"><a href="namespacetvm.html#ad400409d87dc337f8b5fe13e18d363f9">tvm::if_then_else</a></div><div class="ttdeci">PrimExpr if_then_else(PrimExpr cond, PrimExpr true_value, PrimExpr false_value)</div><div class="ttdoc">Conditional expression. </div></div>
-<div class="ttc" id="namespacetvm_html_a857781b7243b2f90018f7fe6baf9c30e"><div class="ttname"><a href="namespacetvm.html#a857781b7243b2f90018f7fe6baf9c30e">tvm::indexmod</a></div><div class="ttdeci">PrimExpr indexmod(PrimExpr a, PrimExpr b)</div><div class="ttdoc">compute the remainder floor(a / b) where a and b are non-negative. </div></div>
 <div class="ttc" id="tags_8h_html"><div class="ttname"><a href="tags_8h.html">tags.h</a></div><div class="ttdoc">External function interface to rocBLAS libraries. </div></div>
 <div class="ttc" id="namespacetvm_1_1te_html_afe4f57aeb3dd5ae9c0b58135e14d67ca"><div class="ttname"><a href="namespacetvm_1_1te.html#afe4f57aeb3dd5ae9c0b58135e14d67ca">tvm::te::compute</a></div><div class="ttdeci">Tensor compute(Array&lt; PrimExpr &gt; shape, FCompute fcompute, std::string name=&quot;tensor&quot;, std::string tag=&quot;&quot;, Map&lt; String, ObjectRef &gt; attrs={})</div><div class="ttdoc">Construct a new tensor by computing over shape, using the computation rule: resul [...]
 <div class="ttc" id="namespacetvm_1_1topi_html_a7da4c96db87c1459a2b097b87afd811f"><div class="ttname"><a href="namespacetvm_1_1topi.html#a7da4c96db87c1459a2b097b87afd811f">tvm::topi::cast</a></div><div class="ttdeci">Tensor cast(const Tensor &amp;x, DataType type, std::string name=&quot;T_cast&quot;, std::string tag=kElementWise)</div><div class="ttdoc">Cast each element of x to the given type. If expr is scalar and type is a corresponding vector type...</div><div class="ttdef"><b>Defini [...]
diff --git a/docs/api/doxygen/elemwise_8h_source.html b/docs/api/doxygen/elemwise_8h_source.html
index d5d6bd0..83f5b06 100644
--- a/docs/api/doxygen/elemwise_8h_source.html
+++ b/docs/api/doxygen/elemwise_8h_source.html
@@ -89,23 +89,24 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">elemwise.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="elemwise_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="elemwise_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_1topi_html_aec68ce461f0a1965c27912b9ddb90aa2"><div class="ttname"><a href="namespacetvm_1_1topi.html#aec68ce461f0a1965c27912b9ddb90aa2">tvm::topi::full_like</a></div><div class="ttdeci">Tensor full_like(const Tensor &amp;x, const PrimExpr fill_value, std::string name=&quot;T_full_like&quot;, std::string tag=kElementWise)</div><div class="ttdoc">Creates an operation that construct a tensor with same shape as input tensor, then fill a tensor with...</div [...]
 <div class="ttc" id="namespacetvm_1_1topi_html_af6b3e60333fce92bcf0930e45683a8f6"><div class="ttname"><a href="namespacetvm_1_1topi.html#af6b3e60333fce92bcf0930e45683a8f6">tvm::topi::negative</a></div><div class="ttdeci">Tensor negative(const Tensor &amp;x, std::string name=&quot;T_negative&quot;, std::string tag=kElementWise)</div><div class="ttdoc">Creates an operation that returns the negation of a given tensor. </div><div class="ttdef"><b>Definition:</b> elemwise.h:166</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a53ee5ec6de9d90d96cf54898e890dcc9"><div class="ttname"><a href="namespacetvm_1_1topi.html#a53ee5ec6de9d90d96cf54898e890dcc9">tvm::topi::acos</a></div><div class="ttdeci">Tensor acos(const Tensor &amp;x, std::string name=&quot;T_&quot;&quot;acos&quot;, std::string tag=kElementWise)</div><div class="ttdef"><b>Definition:</b> elemwise.h:66</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a7ac1dc0d99ce93090a4cdf90ab19d4b8"><div class="ttname"><a href="namespacetvm_1_1topi.html#a7ac1dc0d99ce93090a4cdf90ab19d4b8">tvm::topi::minimum</a></div><div class="ttdeci">tvm::PrimExpr minimum(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:316</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_ad05e0e9463b620af2f26f94ca284e915"><div class="ttname"><a href="namespacetvm_1_1topi.html#ad05e0e9463b620af2f26f94ca284e915">tvm::topi::floor</a></div><div class="ttdeci">Tensor floor(const Tensor &amp;x, std::string name=&quot;T_&quot;&quot;floor&quot;, std::string tag=kElementWise)</div><div class="ttdef"><b>Definition:</b> elemwise.h:56</div></div>
+<div class="ttc" id="namespacetvm_1_1tir_html_a1a071208bbbab6b220cf46f5cdccdd86"><div class="ttname"><a href="namespacetvm_1_1tir.html#a1a071208bbbab6b220cf46f5cdccdd86">tvm::tir::make_const</a></div><div class="ttdeci">PrimExpr make_const(DataType t, ValueType value, Span span=Span())</div><div class="ttdoc">Make a const value with certain data type. </div><div class="ttdef"><b>Definition:</b> op.h:1099</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a5c22ce14da6f5589de129861bb06da78"><div class="ttname"><a href="namespacetvm_1_1topi.html#a5c22ce14da6f5589de129861bb06da78">tvm::topi::full</a></div><div class="ttdeci">Tensor full(const Array&lt; PrimExpr &gt; &amp;shape, DataType dtype, const PrimExpr fill_value, std::string name=&quot;T_full&quot;, std::string tag=kElementWise)</div><div class="ttdoc">Creates an operation that fill a tensor with fill_value. </div><div class="ttdef"><b>De [...]
 <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="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="namespacetvm_1_1topi_html_a94c9e58d3a7e9f9a477962897c9df1d7"><div class="ttname"><a href="namespacetvm_1_1topi.html#a94c9e58d3a7e9f9a477962897c9df1d7">tvm::topi::elemwise_sum</a></div><div class="ttdeci">Tensor elemwise_sum(const Array&lt; Tensor &gt; &amp;xs, std::string name=&quot;T_elemwise_sum&quot;, std::string tag=kElementWise)</div><div class="ttdoc">Creates an operation that sum each element of a tensor. </div><div class="ttdef"><b>Definition:</b> elemwise.h: [...]
 <div class="ttc" id="namespacetvm_1_1topi_html_a52d5442416a0ff2a808bf5bb99c8e8c3"><div class="ttname"><a href="namespacetvm_1_1topi.html#a52d5442416a0ff2a808bf5bb99c8e8c3">tvm::topi::fast_tanh_float</a></div><div class="ttdeci">Tensor fast_tanh_float(const Tensor &amp;in, std::string name, std::string tag)</div><div class="ttdoc">Fast_tanh_float implementation from Eigen https://github.com/eigenteam/eigen-git-mirror/blob/master/E...</div><div class="ttdef"><b>Definition:</b> elemwise.h:8 [...]
 <div class="ttc" id="namespacetvm_1_1topi_html_a6ae5383c136d68a21f01df8d15f38da3"><div class="ttname"><a href="namespacetvm_1_1topi.html#a6ae5383c136d68a21f01df8d15f38da3">tvm::topi::log</a></div><div class="ttdeci">Tensor log(const Tensor &amp;x, std::string name=&quot;T_&quot;&quot;log&quot;, std::string tag=kElementWise)</div><div class="ttdef"><b>Definition:</b> elemwise.h:53</div></div>
-<div class="ttc" id="namespacetvm_html_aa058caeda9deceda3d6ffeda347be442"><div class="ttname"><a href="namespacetvm.html#aa058caeda9deceda3d6ffeda347be442">tvm::cast</a></div><div class="ttdeci">PrimExpr cast(const DataType &amp;t, PrimExpr value)</div><div class="ttdoc">cast value to type. </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a0535d4dc9cd63b723cba6f00ea1eccef"><div class="ttname"><a href="namespacetvm_1_1topi.html#a0535d4dc9cd63b723cba6f00ea1eccef">tvm::topi::clip</a></div><div class="ttdeci">Tensor clip(const Tensor &amp;x, const PrimExpr &amp;a_min, const PrimExpr &amp;a_max, std::string name=&quot;T_clip&quot;, std::string tag=kElementWise)</div><div class="ttdoc">Creates an operation that clips each element of a tensor to the interval [a_min, a_max]. </div><d [...]
 <div class="ttc" id="namespacetvm_1_1topi_html_afe4e534c675187a847bfe7a4dc61584e"><div class="ttname"><a href="namespacetvm_1_1topi.html#afe4e534c675187a847bfe7a4dc61584e">tvm::topi::fast_exp_float32</a></div><div class="ttdeci">Tensor fast_exp_float32(const Tensor &amp;_x, std::string name, std::string tag)</div><div class="ttdoc">Fast exponential function implementation. </div><div class="ttdef"><b>Definition:</b> elemwise.h:403</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_abc1bbf41a8b463d860f7064c604aeef3"><div class="ttname"><a href="namespacetvm_1_1topi.html#abc1bbf41a8b463d860f7064c604aeef3">tvm::topi::exp</a></div><div class="ttdeci">Tensor exp(const Tensor &amp;x, std::string name=&quot;T_&quot;&quot;exp&quot;, std::string tag=kElementWise)</div><div class="ttdef"><b>Definition:</b> elemwise.h:49</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a27d7acbeefa41cfaec9b8a397295572a"><div class="ttname"><a href="namespacetvm_1_1topi.html#a27d7acbeefa41cfaec9b8a397295572a">tvm::topi::acosh</a></div><div class="ttdeci">Tensor acosh(const Tensor &amp;x, std::string name=&quot;T_&quot;&quot;acosh&quot;, std::string tag=kElementWise)</div><div class="ttdef"><b>Definition:</b> elemwise.h:67</div></div>
+<div class="ttc" id="namespacetvm_html_a4bfb789a86d95f6241b50fd26f269c28"><div class="ttname"><a href="namespacetvm.html#a4bfb789a86d95f6241b50fd26f269c28">tvm::cast</a></div><div class="ttdeci">PrimExpr cast(const DataType &amp;t, PrimExpr value, Span span=Span())</div><div class="ttdoc">cast value to type. </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a1bb93bc58cd2b65b4d75d6856daf6239"><div class="ttname"><a href="namespacetvm_1_1topi.html#a1bb93bc58cd2b65b4d75d6856daf6239">tvm::topi::erf</a></div><div class="ttdeci">Tensor erf(const Tensor &amp;x, std::string name=&quot;T_&quot;&quot;erf&quot;, std::string tag=kElementWise)</div><div class="ttdef"><b>Definition:</b> elemwise.h:50</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_af580cd1bea6e862f41c7fad4c4c7eea3"><div class="ttname"><a href="namespacetvm_1_1topi.html#af580cd1bea6e862f41c7fad4c4c7eea3">tvm::topi::sign</a></div><div class="ttdeci">Tensor sign(const Tensor &amp;x, std::string name=&quot;T_sign&quot;, std::string tag=kElementWise)</div><div class="ttdoc">Returns the sign of the tensor. </div><div class="ttdef"><b>Definition:</b> elemwise.h:211</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_ae6359efdf50839f448d17f1ce8e64b55"><div class="ttname"><a href="namespacetvm_1_1topi.html#ae6359efdf50839f448d17f1ce8e64b55">tvm::topi::atan</a></div><div class="ttdeci">Tensor atan(const Tensor &amp;x, std::string name=&quot;T_&quot;&quot;atan&quot;, std::string tag=kElementWise)</div><div class="ttdef"><b>Definition:</b> elemwise.h:70</div></div>
@@ -123,7 +124,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html_a4e5ab4d7847d3ed41814e049dc13bc18"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html#a4e5ab4d7847d3ed41814e049dc13bc18">tvm::runtime::Array::size</a></div><div class="ttdeci">size_t size() const </div><div class="ttdef"><b>Definition:</b> container.h:689</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_aeed8d820017900935cc70877f7e327c2"><div class="ttname"><a href="namespacetvm_1_1topi.html#aeed8d820017900935cc70877f7e327c2">tvm::topi::fast_exp</a></div><div class="ttdeci">Tensor fast_exp(const Tensor &amp;x, std::string name=&quot;T_fast_exp&quot;, std::string tag=kElementWise)</div><div class="ttdoc">Fast exponential function implementation. </div><div class="ttdef"><b>Definition:</b> elemwise.h:447</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a99f3fd2edfd74113c83bc9fb98e8aca1"><div class="ttname"><a href="namespacetvm_1_1topi.html#a99f3fd2edfd74113c83bc9fb98e8aca1">tvm::topi::bitwise_not</a></div><div class="ttdeci">Tensor bitwise_not(const Tensor &amp;x, std::string name=&quot;T_bitwise_not&quot;, std::string tag=kElementWise)</div><div class="ttdoc">Creates an operation that returns the bitwise NOT of a given tensor. </div><div class="ttdef"><b>Definition:</b> elemwise.h:196</d [...]
-<div class="ttc" id="namespacetvm_1_1tir_html_a4ea566597880d04bd62fbec687e338b5"><div class="ttname"><a href="namespacetvm_1_1tir.html#a4ea566597880d04bd62fbec687e338b5">tvm::tir::make_const</a></div><div class="ttdeci">PrimExpr make_const(DataType t, ValueType value)</div><div class="ttdoc">Make a const value with certain data type. </div><div class="ttdef"><b>Definition:</b> op.h:844</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_af30c02f3a3f37c7963b3af60fb9c72a1"><div class="ttname"><a href="namespacetvm_1_1topi.html#af30c02f3a3f37c7963b3af60fb9c72a1">tvm::topi::shape</a></div><div class="ttdeci">Tensor shape(const Tensor &amp;src, DataType dtype, const std::string name=&quot;T_shape&quot;, const std::string tag=kInjective)</div><div class="ttdoc">Get the shape of input tensor. </div><div class="ttdef"><b>Definition:</b> transform.h:1504</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_ace1568d4e83cf878685d833d7d772db8"><div class="ttname"><a href="namespacetvm_1_1topi.html#ace1568d4e83cf878685d833d7d772db8">tvm::topi::log10</a></div><div class="ttdeci">Tensor log10(const Tensor &amp;x, std::string name=&quot;T_&quot;&quot;log10&quot;, std::string tag=kElementWise)</div><div class="ttdef"><b>Definition:</b> elemwise.h:55</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a188f69f0e65e2efb4914e458db50b3d8"><div class="ttname"><a href="namespacetvm_1_1topi.html#a188f69f0e65e2efb4914e458db50b3d8">tvm::topi::fast_erf_float32</a></div><div class="ttdeci">Tensor fast_erf_float32(const Tensor &amp;data, std::string name, std::string tag)</div><div class="ttdoc">Fast_tanh_float implementation from Eigen https://github.com/eigenteam/eigen-git-mirror/blob/master/u...</div><div class="ttdef"><b>Definition:</b> elemwise [...]
diff --git a/docs/api/doxygen/env__func_8h_source.html b/docs/api/doxygen/env__func_8h_source.html
index bc766c2..cecb746 100644
--- a/docs/api/doxygen/env__func_8h_source.html
+++ b/docs/api/doxygen/env__func_8h_source.html
@@ -89,8 +89,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">env_func.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="env__func_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="classtvm_1_1runtime_1_1TVMRetValue_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMRetValue.html">tvm::runtime::TVMRetValue</a></div><div class="ttdoc">Return Value container, Unlike TVMArgValue, which only holds reference and do not delete the underlyi...</div><div class="ttdef"><b>Definition:</b> packed_func.h:571</div></div>
+<a href="env__func_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="classtvm_1_1runtime_1_1TVMRetValue_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMRetValue.html">tvm::runtime::TVMRetValue</a></div><div class="ttdoc">Return Value container, Unlike TVMArgValue, which only holds reference and do not delete the underlyi...</div><div class="ttdef"><b>Definition:</b> packed_func.h:573</div></div>
 <div class="ttc" id="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4_html_a2c756d14682b41d9b733673443b782f1"><div class="ttname"><a href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html#a2c756d14682b41d9b733673443b782f1">tvm::TypedEnvFunc&lt; R(Args...)&gt;::operator()</a></div><div class="ttdeci">R operator()(Args...args) const </div><div class="ttdoc">Invoke the function. </div><div class="ttdef"><b>Definition:</b> env_func.h:138</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="classtvm_1_1TypedEnvFunc_html"><div class="ttname"><a href="classtvm_1_1TypedEnvFunc.html">tvm::TypedEnvFunc</a></div><div class="ttdoc">Please refer to TypedEnvFunc&lt;R(Args..)&gt;. </div><div class="ttdef"><b>Definition:</b> env_func.h:104</div></div>
@@ -98,6 +98,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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_1SHashReducer_html"><div class="ttname"><a href="classtvm_1_1SHashReducer.html">tvm::SHashReducer</a></div><div class="ttdoc">A Reducer class to reduce the structural hash value. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:102</div></div>
 <div class="ttc" id="classtvm_1_1EnvFuncNode_html_af8522e9ab96eb5570f1c9f2d9ed0eac2"><div class="ttname"><a href="classtvm_1_1EnvFuncNode.html#af8522e9ab96eb5570f1c9f2d9ed0eac2">tvm::EnvFuncNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> env_func.h:57</div></div>
+<div class="ttc" id="namespacetvm_html_a1c4f14382b85bcfa57d9a3460db2354a"><div class="ttname"><a href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm::equal</a></div><div class="ttdeci">PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">equal </div></div>
 <div class="ttc" id="classtvm_1_1EnvFunc_html"><div class="ttname"><a href="classtvm_1_1EnvFunc.html">tvm::EnvFunc</a></div><div class="ttdoc">Managed reference to EnvFuncNode. </div><div class="ttdef"><b>Definition:</b> env_func.h:72</div></div>
 <div class="ttc" id="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4_html_aab332907b9f98876f441f6403b801187"><div class="ttname"><a href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html#aab332907b9f98876f441f6403b801187">tvm::TypedEnvFunc&lt; R(Args...)&gt;::operator=</a></div><div class="ttdeci">TSelf &amp; operator=(const EnvFunc &amp;other)</div><div class="ttdoc">Assign global function to a TypedEnvFunc. </div><div class="ttdef"><b>Definition:</b> env_func.h:127</div></div>
 <div class="ttc" id="classtvm_1_1EnvFuncNode_html_a1b15e905003c230e45013a922d7d7e37"><div class="ttname"><a href="classtvm_1_1EnvFuncNode.html#a1b15e905003c230e45013a922d7d7e37">tvm::EnvFuncNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const EnvFuncNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> env_func.h:52</div></div>
@@ -111,7 +112,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4_html_a41a6b9014d0feeb628ca7edfd0d26f0b"><div class="ttname"><a href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html#a41a6b9014d0feeb628ca7edfd0d26f0b">tvm::TypedEnvFunc&lt; R(Args...)&gt;::TypedEnvFunc</a></div><div class="ttdeci">TypedEnvFunc()</div><div class="ttdef"><b>Definition:</b> env_func.h:120</div></div>
 <div class="ttc" id="classtvm_1_1EnvFuncNode_html_a5f8074cd3210ba959a2463896acab3be"><div class="ttname"><a href="classtvm_1_1EnvFuncNode.html#a5f8074cd3210ba959a2463896acab3be">tvm::EnvFuncNode::TVM_DECLARE_FINAL_OBJECT_INFO</a></div><div class="ttdeci">TVM_DECLARE_FINAL_OBJECT_INFO(EnvFuncNode, Object)</div></div>
 <div class="ttc" id="classtvm_1_1EnvFuncNode_html_a808b81ced7b01c4955b4994a89bc71a4"><div class="ttname"><a href="classtvm_1_1EnvFuncNode.html#a808b81ced7b01c4955b4994a89bc71a4">tvm::EnvFuncNode::EnvFuncNode</a></div><div class="ttdeci">EnvFuncNode()</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> env_func.h:48</div></div>
-<div class="ttc" id="namespacetvm_1_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</div></div>
 <div class="ttc" id="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4_html_a0d72a6fa7263821c14bcd37837998ed9"><div class="ttname"><a href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html#a0d72a6fa7263821c14bcd37837998ed9">tvm::TypedEnvFunc&lt; R(Args...)&gt;::TypedEnvFunc</a></div><div class="ttdeci">TypedEnvFunc(ObjectPtr&lt; Object &gt; n)</div><div class="ttdef"><b>Definition:</b> env_func.h:121</div></div>
 <div class="ttc" id="classtvm_1_1EnvFunc_html_a80e24e1342c276b1dfecf073b5be45f1"><div class="ttname"><a href="classtvm_1_1EnvFunc.html#a80e24e1342c276b1dfecf073b5be45f1">tvm::EnvFunc::operator()</a></div><div class="ttdeci">runtime::TVMRetValue operator()(Args &amp;&amp;...args) const </div><div class="ttdoc">Invoke the function. </div><div class="ttdef"><b>Definition:</b> env_func.h:84</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1PackedFunc_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1PackedFunc.html">tvm::runtime::PackedFunc</a></div><div class="ttdoc">Packed function is a type-erased function. The arguments are passed by packed format. </div><div class="ttdef"><b>Definition:</b> packed_func.h:75</div></div>
diff --git a/docs/api/doxygen/flatten_8h_source.html b/docs/api/doxygen/flatten_8h_source.html
index acd3abb..806336b 100644
--- a/docs/api/doxygen/flatten_8h_source.html
+++ b/docs/api/doxygen/flatten_8h_source.html
@@ -89,17 +89,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">flatten.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="flatten_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 con [...]
+<a href="flatten_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 con [...]
+<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="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="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_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:88</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a29e22aa45900dad3b6f9f705bb1dc688"><div class="ttname"><a href="namespacetvm_1_1topi.html#a29e22aa45900dad3b6f9f705bb1dc688">tvm::topi::kInjective</a></div><div class="ttdeci">constexpr auto kInjective</div><div class="ttdef"><b>Definition:</b> tags.h:33</div></div>
 <div class="ttc" id="constant__utils_8h_html"><div class="ttname"><a href="constant__utils_8h.html">constant_utils.h</a></div><div class="ttdoc">Utility functions for handling constants in TVM expressions. </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contigious sequence of ObjectRefs. </div><div class="ttdef"><b>Definition:</b> container.h:560</div></div>
-<div class="ttc" id="namespacetvm_html_a8203d70a5ebf3532370264b000d0d276"><div class="ttname"><a href="namespacetvm.html#a8203d70a5ebf3532370264b000d0d276">tvm::indexdiv</a></div><div class="ttdeci">PrimExpr indexdiv(PrimExpr a, PrimExpr b)</div><div class="ttdoc">compute floor(a / b) where a and b are non-negative. </div></div>
+<div class="ttc" id="namespacetvm_html_a8f30aa0685ca52f846843e76a1ad1dc7"><div class="ttname"><a href="namespacetvm.html#a8f30aa0685ca52f846843e76a1ad1dc7">tvm::indexdiv</a></div><div class="ttdeci">PrimExpr indexdiv(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">compute floor(a / b) where a and b are non-negative. </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_1_1nn_html_a6a553de73860c1a295d6ee566a3916b4"><div class="ttname"><a href="namespacetvm_1_1topi_1_1nn.html#a6a553de73860c1a295d6ee566a3916b4">tvm::topi::nn::flatten</a></div><div class="ttdeci">Tensor flatten(const Tensor &amp;x, std::string name=&quot;tensor&quot;, std::string tag=kInjective)</div><div class="ttdoc">Flattens the input tensor into a 2-D tensor by collapsing higher dimensions. This requires the input ...</div><div class="ttdef"><b [...]
 <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="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 class="ttc" id="namespacetvm_html_a857781b7243b2f90018f7fe6baf9c30e"><div class="ttname"><a href="namespacetvm.html#a857781b7243b2f90018f7fe6baf9c30e">tvm::indexmod</a></div><div class="ttdeci">PrimExpr indexmod(PrimExpr a, PrimExpr b)</div><div class="ttdoc">compute the remainder floor(a / b) where a and b are non-negative. </div></div>
 <div class="ttc" id="tags_8h_html"><div class="ttname"><a href="tags_8h.html">tags.h</a></div><div class="ttdoc">External function interface to rocBLAS libraries. </div></div>
 <div class="ttc" id="namespacetvm_1_1te_html_afe4f57aeb3dd5ae9c0b58135e14d67ca"><div class="ttname"><a href="namespacetvm_1_1te.html#afe4f57aeb3dd5ae9c0b58135e14d67ca">tvm::te::compute</a></div><div class="ttdeci">Tensor compute(Array&lt; PrimExpr &gt; shape, FCompute fcompute, std::string name=&quot;tensor&quot;, std::string tag=&quot;&quot;, Map&lt; String, ObjectRef &gt; attrs={})</div><div class="ttdoc">Construct a new tensor by computing over shape, using the computation rule: resul [...]
 <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:109</div></div>
diff --git a/docs/api/doxygen/functions_f.html b/docs/api/doxygen/functions_f.html
index 951db7e..a8492ac 100644
--- a/docs/api/doxygen/functions_f.html
+++ b/docs/api/doxygen/functions_f.html
@@ -322,7 +322,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classtvm_1_1IRModule.html#a59099426f65dbeac227e51f8864e322a">tvm::IRModule</a>
 </li>
 <li>FromMinExtent()
-: <a class="el" href="classtvm_1_1Range.html#aa4ce8d0a20f0a736748c10bdc5e11071">tvm::Range</a>
+: <a class="el" href="classtvm_1_1Range.html#a91e7301ca1d135ca5f8ed199efbb9818">tvm::Range</a>
 </li>
 <li>FromRange()
 : <a class="el" href="classtvm_1_1arith_1_1IntGroupBounds.html#a1ada3993bd9b6500ccd95d97a5c9f17b">tvm::arith::IntGroupBounds</a>
diff --git a/docs/api/doxygen/functions_func_f.html b/docs/api/doxygen/functions_func_f.html
index e102219..b415a6d 100644
--- a/docs/api/doxygen/functions_func_f.html
+++ b/docs/api/doxygen/functions_func_f.html
@@ -238,7 +238,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classtvm_1_1IRModule.html#a59099426f65dbeac227e51f8864e322a">tvm::IRModule</a>
 </li>
 <li>FromMinExtent()
-: <a class="el" href="classtvm_1_1Range.html#aa4ce8d0a20f0a736748c10bdc5e11071">tvm::Range</a>
+: <a class="el" href="classtvm_1_1Range.html#a91e7301ca1d135ca5f8ed199efbb9818">tvm::Range</a>
 </li>
 <li>FromRange()
 : <a class="el" href="classtvm_1_1arith_1_1IntGroupBounds.html#a1ada3993bd9b6500ccd95d97a5c9f17b">tvm::arith::IntGroupBounds</a>
diff --git a/docs/api/doxygen/functions_func_h.html b/docs/api/doxygen/functions_func_h.html
index 46851ae..f1f245d 100644
--- a/docs/api/doxygen/functions_func_h.html
+++ b/docs/api/doxygen/functions_func_h.html
@@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classtvm_1_1runtime_1_1DataType.html#aebad9f7235dd20af649fb5c2113797b8">tvm::runtime::DataType</a>
 </li>
 <li>HardwareParams()
-: <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html#a505cdbf19238fca932953095f8e7e810">tvm::auto_scheduler::HardwareParams</a>
+: <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html#a2902d3e603de5efd1e53ec6c0c4de641">tvm::auto_scheduler::HardwareParams</a>
 </li>
 <li>HasAttrMap()
 : <a class="el" href="classtvm_1_1Op.html#aa6e0dd3175a9ac2687ec92c1c064fa2c">tvm::Op</a>
diff --git a/docs/api/doxygen/functions_func_r.html b/docs/api/doxygen/functions_func_r.html
index b37842b..7c1143d 100644
--- a/docs/api/doxygen/functions_func_r.html
+++ b/docs/api/doxygen/functions_func_r.html
@@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1RandomModel.html#aa456abf1dc91cbf76935189424d8954f">tvm::auto_scheduler::RandomModel</a>
 </li>
 <li>Range()
-: <a class="el" href="classtvm_1_1Range.html#abc08435178fe9ac6ab83db6c9025757c">tvm::Range</a>
+: <a class="el" href="classtvm_1_1Range.html#a9d58cccc53897fee0c80ab1437da1f0f">tvm::Range</a>
 </li>
 <li>RangeNode()
 : <a class="el" href="classtvm_1_1RangeNode.html#ab845f7ed4ed85e360b730df3450d1aab">tvm::RangeNode</a>
diff --git a/docs/api/doxygen/functions_h.html b/docs/api/doxygen/functions_h.html
index 4cc84c0..9f57cd7 100644
--- a/docs/api/doxygen/functions_h.html
+++ b/docs/api/doxygen/functions_h.html
@@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1SearchTaskNode.html#a8f71d815c5608317a1cdba5b4303df12">tvm::auto_scheduler::SearchTaskNode</a>
 </li>
 <li>HardwareParams()
-: <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html#a505cdbf19238fca932953095f8e7e810">tvm::auto_scheduler::HardwareParams</a>
+: <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html#a2902d3e603de5efd1e53ec6c0c4de641">tvm::auto_scheduler::HardwareParams</a>
 </li>
 <li>has_valid
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1ProgramMeasurerNode.html#a372418708e5f377e3b7efd84aa368974">tvm::auto_scheduler::ProgramMeasurerNode</a>
diff --git a/docs/api/doxygen/functions_m.html b/docs/api/doxygen/functions_m.html
index 37b2589..dac69e3 100644
--- a/docs/api/doxygen/functions_m.html
+++ b/docs/api/doxygen/functions_m.html
@@ -192,15 +192,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>max_functions
 : <a class="el" href="structTVMMutableFuncRegistry.html#a41745f8e0f73f8e4fb2074f5b154b49c">TVMMutableFuncRegistry</a>
 </li>
+<li>max_local_memory_per_block
+: <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a2b69e195b9df238a5c80e4cd0857c798">tvm::auto_scheduler::HardwareParamsNode</a>
+</li>
 <li>max_num_bits
 : <a class="el" href="classtvm_1_1MemoryInfoNode.html#ae0b6f9572f77177a08a8a522d1ec2aa4">tvm::MemoryInfoNode</a>
 </li>
 <li>max_output_size
 : <a class="el" href="structtvm_1_1relay_1_1NonMaximumSuppressionAttrs.html#ae82e608687548d085a67285ca9146d2c">tvm::relay::NonMaximumSuppressionAttrs</a>
 </li>
-<li>max_registers_per_block
-: <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#ad55b0e173c411a119c4b082d3c72a6a7">tvm::auto_scheduler::HardwareParamsNode</a>
-</li>
 <li>max_shared_memory_per_block
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a611354f04e68577ceb48d44b8e714b13">tvm::auto_scheduler::HardwareParamsNode</a>
 </li>
diff --git a/docs/api/doxygen/functions_r.html b/docs/api/doxygen/functions_r.html
index 38c8655..e82077b 100644
--- a/docs/api/doxygen/functions_r.html
+++ b/docs/api/doxygen/functions_r.html
@@ -138,10 +138,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1IteratorNode.html#a2751c3164971b3154ffc506e3aebaf91">tvm::auto_scheduler::IteratorNode</a>
 </li>
 <li>Range()
-: <a class="el" href="classtvm_1_1Range.html#abc08435178fe9ac6ab83db6c9025757c">tvm::Range</a>
+: <a class="el" href="classtvm_1_1Range.html#a9d58cccc53897fee0c80ab1437da1f0f">tvm::Range</a>
 </li>
 <li>RangeNode()
-: <a class="el" href="classtvm_1_1RangeNode.html#a6ee2e11a496cc52627354fd90f00e2a0">tvm::RangeNode</a>
+: <a class="el" href="classtvm_1_1RangeNode.html#a4bbc33969cb484c20306da1d2b9fa1fd">tvm::RangeNode</a>
 </li>
 <li>ranges
 : <a class="el" href="classtvm_1_1arith_1_1IntConstraintsNode.html#ab23d4d806766c88b0df69dbfb5ebd63c">tvm::arith::IntConstraintsNode</a>
diff --git a/docs/api/doxygen/functions_s.html b/docs/api/doxygen/functions_s.html
index 0bbd6e3..bc68289 100644
--- a/docs/api/doxygen/functions_s.html
+++ b/docs/api/doxygen/functions_s.html
@@ -641,7 +641,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="structtvm_1_1relay_1_1MultiBoxPriorAttrs.html#ad6d089344fa741021584222ffa70a451">tvm::relay::MultiBoxPriorAttrs</a>
 </li>
 <li>SizeVar()
-: <a class="el" href="classtvm_1_1tir_1_1SizeVar.html#ac470249315d9e395ad581d35dd5dcb05">tvm::tir::SizeVar</a>
+: <a class="el" href="classtvm_1_1tir_1_1SizeVar.html#a0f8cb8a92feb96343939d223db90f7cd">tvm::tir::SizeVar</a>
 </li>
 <li>Slice()
 : <a class="el" href="classtvm_1_1te_1_1Tensor_1_1Slice.html#ab314819e8bcca6421e9a4f33e48578c3">tvm::te::Tensor::Slice</a>
@@ -683,6 +683,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 , <a class="el" href="classtvm_1_1DiagnosticBuilder.html#a52d9cc3cb33e655c5d82af47daa74c66">tvm::DiagnosticBuilder</a>
 , <a class="el" href="classtvm_1_1DiagnosticNode.html#af5469f228f87711ad8bd3f4f78f3bb54">tvm::DiagnosticNode</a>
 , <a class="el" href="classtvm_1_1Error.html#a1bebfe879cb28d2157c4c52691fd93c4">tvm::Error</a>
+, <a class="el" href="classtvm_1_1RangeNode.html#aee167e954efc66eec2b2fecfcfc7e3d5">tvm::RangeNode</a>
 , <a class="el" href="classtvm_1_1relay_1_1RelayNode.html#aa071442f5359c04aef5692334ce784c7">tvm::relay::RelayNode</a>
 </li>
 <li>Span()
@@ -752,7 +753,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 </li>
 <li>Stage()
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1Stage.html#af0643fe8c1298451c9a322f915c48843">tvm::auto_scheduler::Stage</a>
-, <a class="el" href="classtvm_1_1te_1_1Stage.html#a1ecdc9a000be62c9cc26a96d4c33e36e">tvm::te::Stage</a>
+, <a class="el" href="classtvm_1_1te_1_1Stage.html#aa6ace38b6312e42aaf9389c8749ae0a4">tvm::te::Stage</a>
 </li>
 <li>stage_id
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1StepNode.html#afcc7aaf263348f66139307affbfcee09">tvm::auto_scheduler::StepNode</a>
@@ -798,7 +799,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="structtvm_1_1relay_1_1MultiBoxPriorAttrs.html#a312f6999492eb61bf20593a4f30acd35">tvm::relay::MultiBoxPriorAttrs</a>
 </li>
 <li>StmtNode()
-: <a class="el" href="classtvm_1_1tir_1_1StmtNode.html#a79e21b14d3ab57209577bf4a8f694a87">tvm::tir::StmtNode</a>
+: <a class="el" href="classtvm_1_1tir_1_1StmtNode.html#a67693c4e97ae49890ea74605fe1b1f74">tvm::tir::StmtNode</a>
 </li>
 <li>stop
 : <a class="el" href="structtvm_1_1relay_1_1ArangeAttrs.html#a1eadf1f3964ca83dade8edeae7d6d7cf">tvm::relay::ArangeAttrs</a>
@@ -823,7 +824,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="structtvm_1_1auto__scheduler_1_1StageAttributes.html#a9adf0225217392dc39d5cfcf67ead607">tvm::auto_scheduler::StageAttributes</a>
 </li>
 <li>StorageAlignStep()
-: <a class="el" href="classtvm_1_1auto__scheduler_1_1StorageAlignStep.html#af50b7c2f020f8e0a80f5bcc8e559b394">tvm::auto_scheduler::StorageAlignStep</a>
+: <a class="el" href="classtvm_1_1auto__scheduler_1_1StorageAlignStep.html#a99dbb8c55d9e7d78268b6d43fd348bc7">tvm::auto_scheduler::StorageAlignStep</a>
 </li>
 <li>StorageType
 : <a class="el" href="classtvm_1_1runtime_1_1SimpleObjAllocator_1_1ArrayHandler.html#a67e86db3290b1d3bd4aca7e7a2faf187">tvm::runtime::SimpleObjAllocator::ArrayHandler&lt; ArrayType, ElemType &gt;</a>
diff --git a/docs/api/doxygen/functions_v.html b/docs/api/doxygen/functions_v.html
index d759537..b236bf7 100644
--- a/docs/api/doxygen/functions_v.html
+++ b/docs/api/doxygen/functions_v.html
@@ -504,7 +504,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>VisitStmt_()
 : <a class="el" href="classtvm_1_1tir_1_1StmtFunctor_3_01R_07const_01Stmt_01_6n_00_01Args_8_8_8args_08_4.html#ab9a74c747cfee3eea0f5a63793cda9b2">tvm::tir::StmtFunctor&lt; R(const Stmt &amp;n, Args...args)&gt;</a>
 , <a class="el" href="classtvm_1_1tir_1_1StmtMutator.html#afda082108ac22091230cb937086e7a58">tvm::tir::StmtMutator</a>
-, <a class="el" href="classtvm_1_1tir_1_1StmtVisitor.html#a38488c0f8137e12bc195fa2e0a0524c9">tvm::tir::StmtVisitor</a>
+, <a class="el" href="classtvm_1_1tir_1_1StmtVisitor.html#a800d9d3f4b755236e122f0fbf30115df">tvm::tir::StmtVisitor</a>
 </li>
 <li>VisitStmtDefault_()
 : <a class="el" href="classtvm_1_1tir_1_1StmtFunctor_3_01R_07const_01Stmt_01_6n_00_01Args_8_8_8args_08_4.html#aeb08feaffc3f8fb6f6c379ccce9bbd45">tvm::tir::StmtFunctor&lt; R(const Stmt &amp;n, Args...args)&gt;</a>
@@ -518,9 +518,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 , <a class="el" href="classtvm_1_1TypeMutator.html#a84e824911927d98e20a338eab8b75a45">tvm::TypeMutator</a>
 </li>
 <li>VisitType_()
-: <a class="el" href="classtvm_1_1TypeFunctor_3_01R_07const_01Type_01_6n_00_01Args_8_8_8_08_4.html#a4ed63aa95ed7c6a03f12bb0fd13ba868">tvm::TypeFunctor&lt; R(const Type &amp;n, Args...)&gt;</a>
-, <a class="el" href="classtvm_1_1TypeMutator.html#ac694fbe28eb7026d30c5ca5fa2fb4a1a">tvm::TypeMutator</a>
-, <a class="el" href="classtvm_1_1TypeVisitor.html#a82c83b1524502579f56d194138badd3e">tvm::TypeVisitor</a>
+: <a class="el" href="classtvm_1_1TypeFunctor_3_01R_07const_01Type_01_6n_00_01Args_8_8_8_08_4.html#a02a16c27881cb2ab3532cca9ae68c1f5">tvm::TypeFunctor&lt; R(const Type &amp;n, Args...)&gt;</a>
+, <a class="el" href="classtvm_1_1TypeMutator.html#a76915eced75e531e0ca73ad6882bbaae">tvm::TypeMutator</a>
+, <a class="el" href="classtvm_1_1TypeVisitor.html#af92188034706eec6c1ce5c8240f65cc0">tvm::TypeVisitor</a>
 </li>
 <li>VisitTypeDefault_()
 : <a class="el" href="classtvm_1_1TypeFunctor_3_01R_07const_01Type_01_6n_00_01Args_8_8_8_08_4.html#a91553f9e04c39b3821a70ae4f7b0c597">tvm::TypeFunctor&lt; R(const Type &amp;n, Args...)&gt;</a>
diff --git a/docs/api/doxygen/functions_vars_m.html b/docs/api/doxygen/functions_vars_m.html
index a79a1fa..14d8189 100644
--- a/docs/api/doxygen/functions_vars_m.html
+++ b/docs/api/doxygen/functions_vars_m.html
@@ -141,15 +141,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>max_functions
 : <a class="el" href="structTVMMutableFuncRegistry.html#a41745f8e0f73f8e4fb2074f5b154b49c">TVMMutableFuncRegistry</a>
 </li>
+<li>max_local_memory_per_block
+: <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a2b69e195b9df238a5c80e4cd0857c798">tvm::auto_scheduler::HardwareParamsNode</a>
+</li>
 <li>max_num_bits
 : <a class="el" href="classtvm_1_1MemoryInfoNode.html#ae0b6f9572f77177a08a8a522d1ec2aa4">tvm::MemoryInfoNode</a>
 </li>
 <li>max_output_size
 : <a class="el" href="structtvm_1_1relay_1_1NonMaximumSuppressionAttrs.html#ae82e608687548d085a67285ca9146d2c">tvm::relay::NonMaximumSuppressionAttrs</a>
 </li>
-<li>max_registers_per_block
-: <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#ad55b0e173c411a119c4b082d3c72a6a7">tvm::auto_scheduler::HardwareParamsNode</a>
-</li>
 <li>max_shared_memory_per_block
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a611354f04e68577ceb48d44b8e714b13">tvm::auto_scheduler::HardwareParamsNode</a>
 </li>
diff --git a/docs/api/doxygen/functions_vars_s.html b/docs/api/doxygen/functions_vars_s.html
index 886c653..d0ccfa6 100644
--- a/docs/api/doxygen/functions_vars_s.html
+++ b/docs/api/doxygen/functions_vars_s.html
@@ -270,6 +270,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 , <a class="el" href="classtvm_1_1DiagnosticBuilder.html#a52d9cc3cb33e655c5d82af47daa74c66">tvm::DiagnosticBuilder</a>
 , <a class="el" href="classtvm_1_1DiagnosticNode.html#af5469f228f87711ad8bd3f4f78f3bb54">tvm::DiagnosticNode</a>
 , <a class="el" href="classtvm_1_1Error.html#a1bebfe879cb28d2157c4c52691fd93c4">tvm::Error</a>
+, <a class="el" href="classtvm_1_1RangeNode.html#aee167e954efc66eec2b2fecfcfc7e3d5">tvm::RangeNode</a>
 , <a class="el" href="classtvm_1_1relay_1_1RelayNode.html#aa071442f5359c04aef5692334ce784c7">tvm::relay::RelayNode</a>
 , <a class="el" href="classtvm_1_1tir_1_1BufferNode.html#a13fc164e1b65cee741b4895df6316a4a">tvm::tir::BufferNode</a>
 , <a class="el" href="classtvm_1_1tir_1_1CommReducerNode.html#ab1520eb4cd0df4fc3f04e3c81da027cc">tvm::tir::CommReducerNode</a>
diff --git a/docs/api/doxygen/generic__func_8h_source.html b/docs/api/doxygen/generic__func_8h_source.html
index 7cbbc0c..1f170a0 100644
--- a/docs/api/doxygen/generic__func_8h_source.html
+++ b/docs/api/doxygen/generic__func_8h_source.html
@@ -90,7 +90,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 </div><!--header-->
 <div class="contents">
 <a href="generic__func_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 mo [...]
-<div class="ttc" id="classtvm_1_1runtime_1_1TVMRetValue_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMRetValue.html">tvm::runtime::TVMRetValue</a></div><div class="ttdoc">Return Value container, Unlike TVMArgValue, which only holds reference and do not delete the underlyi...</div><div class="ttdef"><b>Definition:</b> packed_func.h:571</div></div>
+<div class="ttc" id="classtvm_1_1runtime_1_1TVMRetValue_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMRetValue.html">tvm::runtime::TVMRetValue</a></div><div class="ttdoc">Return Value container, Unlike TVMArgValue, which only holds reference and do not delete the underlyi...</div><div class="ttdef"><b>Definition:</b> packed_func.h:573</div></div>
 <div class="ttc" id="classtvm_1_1GenericFunc_html"><div class="ttname"><a href="classtvm_1_1GenericFunc.html">tvm::GenericFunc</a></div><div class="ttdoc">Generic function that can be specialized on a per-target basis. </div><div class="ttdef"><b>Definition:</b> generic_func.h:43</div></div>
 <div class="ttc" id="classtvm_1_1GenericFunc_html_a97c34a40c5059bdda64494d61f50602d"><div class="ttname"><a href="classtvm_1_1GenericFunc.html#a97c34a40c5059bdda64494d61f50602d">tvm::GenericFunc::set_default</a></div><div class="ttdeci">GenericFunc &amp; set_default(const runtime::PackedFunc value, bool allow_override=false)</div><div class="ttdoc">Set the default function implementaiton. </div></div>
 <div class="ttc" id="classtvm_1_1GenericFunc_html_a909acecbf2f34f847a34e587a4570dce"><div class="ttname"><a href="classtvm_1_1GenericFunc.html#a909acecbf2f34f847a34e587a4570dce">tvm::GenericFunc::RegisterGenericFunc</a></div><div class="ttdeci">static void RegisterGenericFunc(GenericFunc func, const std::string &amp;name)</div><div class="ttdoc">Add a GenericFunc instance to the registry. </div></div>
@@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1GenericFunc_html_a4a04307dffa174f71cdfb08d1903dec2"><div class="ttname"><a href="classtvm_1_1GenericFunc.html#a4a04307dffa174f71cdfb08d1903dec2">tvm::GenericFunc::operator-&gt;</a></div><div class="ttdeci">GenericFuncNode * operator-&gt;()</div><div class="ttdoc">access the internal node container </div><div class="ttdef"><b>Definition:</b> generic_func.h:151</div></div>
 <div class="ttc" id="target_8h_html"><div class="ttname"><a href="target_8h.html">target.h</a></div><div class="ttdoc">Compilation target object. </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1PackedFunc_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1PackedFunc.html">tvm::runtime::PackedFunc</a></div><div class="ttdoc">Packed function is a type-erased function. The arguments are passed by packed format. </div><div class="ttdef"><b>Definition:</b> packed_func.h:75</div></div>
-<div class="ttc" id="classtvm_1_1runtime_1_1TVMArgsSetter_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMArgsSetter.html">tvm::runtime::TVMArgsSetter</a></div><div class="ttdef"><b>Definition:</b> packed_func.h:1094</div></div>
+<div class="ttc" id="classtvm_1_1runtime_1_1TVMArgsSetter_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMArgsSetter.html">tvm::runtime::TVMArgsSetter</a></div><div class="ttdef"><b>Definition:</b> packed_func.h:1096</div></div>
 <div class="ttc" id="classtvm_1_1GenericFunc_html_a74a6f06af50db51c3ff42fd493c44826"><div class="ttname"><a href="classtvm_1_1GenericFunc.html#a74a6f06af50db51c3ff42fd493c44826">tvm::GenericFunc::Get</a></div><div class="ttdeci">static GenericFunc Get(const std::string &amp;name)</div><div class="ttdoc">Find or register the GenericFunc instance corresponding to the give name. </div></div>
 <div class="ttc" id="packed__func_8h_html"><div class="ttname"><a href="packed__func_8h.html">packed_func.h</a></div><div class="ttdoc">Type-erased function used across TVM API. </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/globals_defs.html b/docs/api/doxygen/globals_defs.html
index a9cfe67..9d33dda 100644
--- a/docs/api/doxygen/globals_defs.html
+++ b/docs/api/doxygen/globals_defs.html
@@ -242,15 +242,24 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>TVM_DEFINE_BINOP_CONST_VAL_OVERLOAD
 : <a class="el" href="tir_2op_8h.html#aabcf618a12e97c38fccecf7351392154">op.h</a>
 </li>
+<li>TVM_DEFINE_BINOP_CONST_VAL_OVERLOAD_SPANNED
+: <a class="el" href="tir_2op_8h.html#a8fc539385c2bb11740d0a6bef19be7b8">op.h</a>
+</li>
 <li>TVM_DEFINE_DEFAULT_COPY_MOVE_AND_ASSIGN
 : <a class="el" href="object_8h.html#a06b57185e07e0065383528eb655fe4d8">object.h</a>
 </li>
 <li>TVM_DEFINE_INT_OP_CONST_VAL_OVERLOAD
 : <a class="el" href="tir_2op_8h.html#a0ad19625381aae20ca7a930260089c47">op.h</a>
 </li>
+<li>TVM_DEFINE_INT_OP_CONST_VAL_OVERLOAD_SPANNED
+: <a class="el" href="tir_2op_8h.html#ac211367ff4e2382caf322a3903f8c629">op.h</a>
+</li>
 <li>TVM_DEFINE_LOGICAL_OP_CONST_VAL_OVERLOAD
 : <a class="el" href="tir_2op_8h.html#ab6a17993efa67183ba992dac29284c80">op.h</a>
 </li>
+<li>TVM_DEFINE_LOGICAL_OP_CONST_VAL_OVERLOAD_SPANNED
+: <a class="el" href="tir_2op_8h.html#a29826503ae15ba83c6bc8e6cbe218a69">op.h</a>
+</li>
 <li>TVM_DEFINE_MUTABLE_OBJECT_REF_METHODS
 : <a class="el" href="object_8h.html#aaaa3dc5b6dc33f84b2d28f9a81267212">object.h</a>
 </li>
diff --git a/docs/api/doxygen/globals_t.html b/docs/api/doxygen/globals_t.html
index e02b2c6..2ca04be 100644
--- a/docs/api/doxygen/globals_t.html
+++ b/docs/api/doxygen/globals_t.html
@@ -177,15 +177,24 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>TVM_DEFINE_BINOP_CONST_VAL_OVERLOAD
 : <a class="el" href="tir_2op_8h.html#aabcf618a12e97c38fccecf7351392154">op.h</a>
 </li>
+<li>TVM_DEFINE_BINOP_CONST_VAL_OVERLOAD_SPANNED
+: <a class="el" href="tir_2op_8h.html#a8fc539385c2bb11740d0a6bef19be7b8">op.h</a>
+</li>
 <li>TVM_DEFINE_DEFAULT_COPY_MOVE_AND_ASSIGN
 : <a class="el" href="object_8h.html#a06b57185e07e0065383528eb655fe4d8">object.h</a>
 </li>
 <li>TVM_DEFINE_INT_OP_CONST_VAL_OVERLOAD
 : <a class="el" href="tir_2op_8h.html#a0ad19625381aae20ca7a930260089c47">op.h</a>
 </li>
+<li>TVM_DEFINE_INT_OP_CONST_VAL_OVERLOAD_SPANNED
+: <a class="el" href="tir_2op_8h.html#ac211367ff4e2382caf322a3903f8c629">op.h</a>
+</li>
 <li>TVM_DEFINE_LOGICAL_OP_CONST_VAL_OVERLOAD
 : <a class="el" href="tir_2op_8h.html#ab6a17993efa67183ba992dac29284c80">op.h</a>
 </li>
+<li>TVM_DEFINE_LOGICAL_OP_CONST_VAL_OVERLOAD_SPANNED
+: <a class="el" href="tir_2op_8h.html#a29826503ae15ba83c6bc8e6cbe218a69">op.h</a>
+</li>
 <li>TVM_DEFINE_MUTABLE_OBJECT_REF_METHODS
 : <a class="el" href="object_8h.html#aaaa3dc5b6dc33f84b2d28f9a81267212">object.h</a>
 </li>
diff --git a/docs/api/doxygen/int__set_8h_source.html b/docs/api/doxygen/int__set_8h_source.html
index 318582f..ea2fdd8 100644
--- a/docs/api/doxygen/int__set_8h_source.html
+++ b/docs/api/doxygen/int__set_8h_source.html
@@ -89,7 +89,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">int_set.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="int__set_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="int__set_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_html_aac2abc149c1a47944c37b560181b15c0"><div class="ttname"><a href="namespacetvm.html#aac2abc149c1a47944c37b560181b15c0">tvm::min</a></div><div class="ttdeci">PrimExpr min(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">take minimum of two values </div></div>
 <div class="ttc" id="namespacetvm_1_1arith_html_aca8806e355ad3dd5f1df9c1eca9aac9d"><div class="ttname"><a href="namespacetvm_1_1arith.html#aca8806e355ad3dd5f1df9c1eca9aac9d">tvm::arith::SignType</a></div><div class="ttdeci">SignType</div><div class="ttdoc">Sign type of an integer expression. </div><div class="ttdef"><b>Definition:</b> int_set.h:48</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IntSetNode_html_ab7cf9086177bae550fac2a09c8f9b397"><div class="ttname"><a href="classtvm_1_1arith_1_1IntSetNode.html#ab7cf9086177bae550fac2a09c8f9b397">tvm::arith::IntSetNode::_type_key</a></div><div class="ttdeci">static constexpr const char * _type_key</div><div class="ttdef"><b>Definition:</b> int_set.h:57</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>
@@ -98,16 +99,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="namespacetvm_1_1arith_html_aca8806e355ad3dd5f1df9c1eca9aac9da5eb70f55e8952b4484fe6c652138ae00"><div class="ttname"><a href="namespacetvm_1_1arith.html#aca8806e355ad3dd5f1df9c1eca9aac9da5eb70f55e8952b4484fe6c652138ae00">tvm::arith::kPositive</a></div><div class="ttdef"><b>Definition:</b> int_set.h:48</div></div>
 <div class="ttc" id="namespacetvm_1_1arith_html_a68a0523bf0384e492ab222d30be9160e"><div class="ttname"><a href="namespacetvm_1_1arith.html#a68a0523bf0384e492ab222d30be9160e">tvm::arith::Union</a></div><div class="ttdeci">IntSet Union(const Array&lt; IntSet &gt; &amp;sets)</div><div class="ttdoc">Create an union set of all sets. </div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IntSetNode_html_a689b913992364a60b3da1bc54ef13170"><div class="ttname"><a href="classtvm_1_1arith_1_1IntSetNode.html#a689b913992364a60b3da1bc54ef13170">tvm::arith::IntSetNode::TVM_DECLARE_BASE_OBJECT_INFO</a></div><div class="ttdeci">TVM_DECLARE_BASE_OBJECT_INFO(IntSetNode, Object)</div></div>
-<div class="ttc" id="namespacetvm_html_a9da780393e228969f77aa7550520a582"><div class="ttname"><a href="namespacetvm.html#a9da780393e228969f77aa7550520a582">tvm::min</a></div><div class="ttdeci">PrimExpr min(PrimExpr a, PrimExpr b)</div><div class="ttdoc">take minimum of two values </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:443</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:449</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IntSetNode_html"><div class="ttname"><a href="classtvm_1_1arith_1_1IntSetNode.html">tvm::arith::IntSetNode</a></div><div class="ttdoc">Base class of all Integer set containers. represent a set of integers in one dimension. </div><div class="ttdef"><b>Definition:</b> int_set.h:55</div></div>
 <div class="ttc" id="namespacetvm_1_1arith_html_a73160d1f944121ad2ef22205dd496fdc"><div class="ttname"><a href="namespacetvm_1_1arith.html#a73160d1f944121ad2ef22205dd496fdc">tvm::arith::EvalSet</a></div><div class="ttdeci">IntSet EvalSet(PrimExpr e, const Map&lt; IterVar, IntSet &gt; &amp;dom_map)</div><div class="ttdoc">Find an symbolic integer set that contains all possible values of e given the domain of each iteratio...</div></div>
 <div class="ttc" id="namespacetvm_1_1arith_html_a0f148f1a1b469a3819e0fe6633b674e4"><div class="ttname"><a href="namespacetvm_1_1arith.html#a0f148f1a1b469a3819e0fe6633b674e4">tvm::arith::ExprIntSetMap</a></div><div class="ttdeci">std::unordered_map&lt; PrimExpr, IntSet, ObjectPtrHash, ObjectPtrEqual &gt; ExprIntSetMap</div><div class="ttdoc">Map from Expr to IntSet. </div><div class="ttdef"><b>Definition:</b> int_set.h:194</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="classtvm_1_1arith_1_1IntSet_html"><div class="ttname"><a href="classtvm_1_1arith_1_1IntSet.html">tvm::arith::IntSet</a></div><div class="ttdoc">Managed reference to IntSetNode. </div><div class="ttdef"><b>Definition:</b> int_set.h:66</div></div>
 <div class="ttc" id="namespacetvm_1_1arith_html_a32c10274dba2e8367f902ad4bb0e152a"><div class="ttname"><a href="namespacetvm_1_1arith.html#a32c10274dba2e8367f902ad4bb0e152a">tvm::arith::ConvertDomMap</a></div><div class="ttdeci">Map&lt; Var, IntSet &gt; ConvertDomMap(const std::unordered_map&lt; const VarNode *, IntSet &gt; &amp;dom_map)</div><div class="ttdoc">Convert std::unordered_map&lt;const VarNode*, IntSet&gt; to Map&lt;Var, IntSet&gt; </div></div>
+<div class="ttc" id="namespacetvm_html_a0df5ca82d2c566f628ebb2f1e84a3fcb"><div class="ttname"><a href="namespacetvm.html#a0df5ca82d2c566f628ebb2f1e84a3fcb">tvm::max</a></div><div class="ttdeci">PrimExpr max(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">take maximum of two values </div></div>
 <div class="ttc" id="object_8h_html_ac6e7295a4999e2c8e4a2c990beca887a"><div class="ttname"><a href="object_8h.html#ac6e7295a4999e2c8e4a2c990beca887a">TVM_DEFINE_OBJECT_REF_METHODS</a></div><div class="ttdeci">#define TVM_DEFINE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)</div><div class="ttdef"><b>Definition:</b> object.h:700</div></div>
-<div class="ttc" id="namespacetvm_html_ab49bad0808ba033343e72ba37b39af2e"><div class="ttname"><a href="namespacetvm.html#ab49bad0808ba033343e72ba37b39af2e">tvm::max</a></div><div class="ttdeci">PrimExpr max(PrimExpr a, PrimExpr b)</div><div class="ttdoc">take maximum of two values </div></div>
 <div class="ttc" id="namespacetvm_1_1arith_html_ad66a987ddb3d8aee69f9175bf412eb8a"><div class="ttname"><a href="namespacetvm_1_1arith.html#ad66a987ddb3d8aee69f9175bf412eb8a">tvm::arith::Intersect</a></div><div class="ttdeci">IntSet Intersect(const Array&lt; IntSet &gt; &amp;sets)</div><div class="ttdoc">Create an union set of all sets. </div></div>
 <div class="ttc" id="namespacetvm_1_1arith_html_aca8806e355ad3dd5f1df9c1eca9aac9da56331fd0b2625f7ce83b369b8a0a6f2a"><div class="ttname"><a href="namespacetvm_1_1arith.html#aca8806e355ad3dd5f1df9c1eca9aac9da56331fd0b2625f7ce83b369b8a0a6f2a">tvm::arith::kNegative</a></div><div class="ttdef"><b>Definition:</b> int_set.h:48</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:1252</div></div>
diff --git a/docs/api/doxygen/int__solver_8h_source.html b/docs/api/doxygen/int__solver_8h_source.html
index da30130..5ba02ea 100644
--- a/docs/api/doxygen/int__solver_8h_source.html
+++ b/docs/api/doxygen/int__solver_8h_source.html
@@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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_1arith_1_1IntConstraintsTransformNode_html_a8ce159fc6db748e5092fa937de3fde53"><div class="ttname"><a href="classtvm_1_1arith_1_1IntConstraintsTransformNode.html#a8ce159fc6db748e5092fa937de3fde53">tvm::arith::IntConstraintsTransformNode::src</a></div><div class="ttdeci">IntConstraints src</div><div class="ttdef"><b>Definition:</b> int_solver.h:211</div></div>
 <div class="ttc" id="namespacetvm_1_1arith_html_a76835a091e20acfbce65f678114c0291"><div class="ttname"><a href="namespacetvm_1_1arith.html#a76835a091e20acfbce65f678114c0291">tvm::arith::kSimplifyRewriteCanonicalRewrite</a></div><div class="ttdeci">constexpr int kSimplifyRewriteCanonicalRewrite</div><div class="ttdef"><b>Definition:</b> int_solver.h:47</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:443</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:449</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IntConstraints_html"><div class="ttname"><a href="classtvm_1_1arith_1_1IntConstraints.html">tvm::arith::IntConstraints</a></div><div class="ttdoc">Managed reference to IntConstraintsNode. </div><div class="ttdef"><b>Definition:</b> int_solver.h:181</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="classtvm_1_1arith_1_1IntConstraintsNode_html_adecd62b78ba2a3fc57778088ff641cf6"><div class="ttname"><a href="classtvm_1_1arith_1_1IntConstraintsNode.html#adecd62b78ba2a3fc57778088ff641cf6">tvm::arith::IntConstraintsNode::variables</a></div><div class="ttdeci">Array&lt; Var &gt; variables</div><div class="ttdef"><b>Definition:</b> int_solver.h:146</div></div>
diff --git a/docs/api/doxygen/ir_2adt_8h_source.html b/docs/api/doxygen/ir_2adt_8h_source.html
index 6988929..97f44ea 100644
--- a/docs/api/doxygen/ir_2adt_8h_source.html
+++ b/docs/api/doxygen/ir_2adt_8h_source.html
@@ -89,7 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">adt.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="ir_2adt_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 con [...]
+<a href="ir_2adt_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 con [...]
 <div class="ttc" id="classtvm_1_1ConstructorNode_html_a1dbaf14ddf82ff3640cf539962955179"><div class="ttname"><a href="classtvm_1_1ConstructorNode.html#a1dbaf14ddf82ff3640cf539962955179">tvm::ConstructorNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const ConstructorNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> adt.h:67</div></div>
 <div class="ttc" id="node_8h_html"><div class="ttname"><a href="node_8h.html">node.h</a></div><div class="ttdoc">Definitions and helper macros for IR/AST nodes. </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>
@@ -99,6 +99,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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_1SHashReducer_html"><div class="ttname"><a href="classtvm_1_1SHashReducer.html">tvm::SHashReducer</a></div><div class="ttdoc">A Reducer class to reduce the structural hash value. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:102</div></div>
 <div class="ttc" id="classtvm_1_1ConstructorNode_html_ad94b373e9c4669fc5d472a9194483d66"><div class="ttname"><a href="classtvm_1_1ConstructorNode.html#ad94b373e9c4669fc5d472a9194483d66">tvm::ConstructorNode::name_hint</a></div><div class="ttdeci">String name_hint</div><div class="ttdoc">The name (only a hint) </div><div class="ttdef"><b>Definition:</b> adt.h:48</div></div>
+<div class="ttc" id="namespacetvm_html_a1c4f14382b85bcfa57d9a3460db2354a"><div class="ttname"><a href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm::equal</a></div><div class="ttdeci">PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">equal </div></div>
 <div class="ttc" id="classtvm_1_1SHashReducer_html_a86a3513ec9866c77c59231663caa28c9"><div class="ttname"><a href="classtvm_1_1SHashReducer.html#a86a3513ec9866c77c59231663caa28c9">tvm::SHashReducer::DefHash</a></div><div class="ttdeci">void DefHash(const ObjectRef &amp;key) const </div><div class="ttdoc">Push hash of key to the current sequence of hash values. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:179</div></div>
 <div class="ttc" id="classtvm_1_1ConstructorNode_html_a7172a526b7d29085678fa01fba20fdf4"><div class="ttname"><a href="classtvm_1_1ConstructorNode.html#a7172a526b7d29085678fa01fba20fdf4">tvm::ConstructorNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> adt.h:73</div></div>
 <div class="ttc" id="classtvm_1_1GlobalTypeVar_html"><div class="ttname"><a href="classtvm_1_1GlobalTypeVar.html">tvm::GlobalTypeVar</a></div><div class="ttdoc">Managed reference to GlobalTypeVarNode. </div><div class="ttdef"><b>Definition:</b> type.h:298</div></div>
@@ -124,7 +125,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1ConstructorNode_html_ab53a12f5a1ab1d262c49c16d189fe27c"><div class="ttname"><a href="classtvm_1_1ConstructorNode.html#ab53a12f5a1ab1d262c49c16d189fe27c">tvm::ConstructorNode::ConstructorNode</a></div><div class="ttdeci">ConstructorNode()</div><div class="ttdef"><b>Definition:</b> adt.h:56</div></div>
 <div class="ttc" id="classtvm_1_1ConstructorNode_html_a671fab9e6add1be16eca6e19efac99c5"><div class="ttname"><a href="classtvm_1_1ConstructorNode.html#a671fab9e6add1be16eca6e19efac99c5">tvm::ConstructorNode::belong_to</a></div><div class="ttdeci">GlobalTypeVar belong_to</div><div class="ttdoc">The datatype the constructor will construct. </div><div class="ttdef"><b>Definition:</b> adt.h:52</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_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</div></div>
 <div class="ttc" id="node_2container_8h_html"><div class="ttname"><a href="node_2container_8h.html">container.h</a></div><div class="ttdoc">Array/Map container in the DSL graph. </div></div>
 <div class="ttc" id="classtvm_1_1TypeDataNode_html_a2fe297fe22375fbc180deb003d142ab9"><div class="ttname"><a href="classtvm_1_1TypeDataNode.html#a2fe297fe22375fbc180deb003d142ab9">tvm::TypeDataNode::header</a></div><div class="ttdeci">GlobalTypeVar header</div><div class="ttdoc">The header is simply the name of the ADT. We adopt nominal typing for ADT definitions; that is...</div><div class="ttdef"><b>Definition:</b> adt.h:108</div></div>
 <div class="ttc" id="classtvm_1_1TypeData_html"><div class="ttname"><a href="classtvm_1_1TypeData.html">tvm::TypeData</a></div><div class="ttdoc">Stores all data for an Algebraic Data Type (ADT). </div><div class="ttdef"><b>Definition:</b> adt.h:147</div></div>
diff --git a/docs/api/doxygen/ir_2attrs_8h_source.html b/docs/api/doxygen/ir_2attrs_8h_source.html
index ca89a2d..a15f12a 100644
--- a/docs/api/doxygen/ir_2attrs_8h_source.html
+++ b/docs/api/doxygen/ir_2attrs_8h_source.html
@@ -89,12 +89,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">attrs.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="ir_2attrs_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 [...]
+<a href="ir_2attrs_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_1AttrError_html_a3285db0171872bc2fdde8243f6e801d9"><div class="ttname"><a href="structtvm_1_1AttrError.html#a3285db0171872bc2fdde8243f6e801d9">tvm::AttrError::AttrError</a></div><div class="ttdeci">AttrError(std::string msg)</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> attrs.h:100</div></div>
 <div class="ttc" id="classtvm_1_1DictAttrsNode_html_a9b325fbc574606d832cca3b483bac572"><div class="ttname"><a href="classtvm_1_1DictAttrsNode.html#a9b325fbc574606d832cca3b483bac572">tvm::DictAttrsNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> attrs.h:210</div></div>
 <div class="ttc" id="structtvm_1_1detail_1_1AttrInitEntry_html_a5608a2a457a397bf11f2be2776ec0653"><div class="ttname"><a href="structtvm_1_1detail_1_1AttrInitEntry.html#a5608a2a457a397bf11f2be2776ec0653">tvm::detail::AttrInitEntry::set_lower_bound</a></div><div class="ttdeci">TSelf &amp; set_lower_bound(const T &amp;begin)</div><div class="ttdef"><b>Definition:</b> attrs.h:366</div></div>
 <div class="ttc" id="structtvm_1_1detail_1_1AttrInitEntry_html_aaba94dddd1e9c367023dbe03e76634bf"><div class="ttname"><a href="structtvm_1_1detail_1_1AttrInitEntry.html#aaba94dddd1e9c367023dbe03e76634bf">tvm::detail::AttrInitEntry::value_missing_</a></div><div class="ttdeci">bool value_missing_</div><div class="ttdef"><b>Definition:</b> attrs.h:342</div></div>
-<div class="ttc" id="classtvm_1_1runtime_1_1TVMRetValue_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMRetValue.html">tvm::runtime::TVMRetValue</a></div><div class="ttdoc">Return Value container, Unlike TVMArgValue, which only holds reference and do not delete the underlyi...</div><div class="ttdef"><b>Definition:</b> packed_func.h:571</div></div>
+<div class="ttc" id="classtvm_1_1runtime_1_1TVMRetValue_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMRetValue.html">tvm::runtime::TVMRetValue</a></div><div class="ttdoc">Return Value container, Unlike TVMArgValue, which only holds reference and do not delete the underlyi...</div><div class="ttdef"><b>Definition:</b> packed_func.h:573</div></div>
 <div class="ttc" id="namespacetvm_1_1detail_html_acb3382242cbf538f64edae13e4ec5a84"><div class="ttname"><a href="namespacetvm_1_1detail.html#acb3382242cbf538f64edae13e4ec5a84">tvm::detail::SetValue&lt; uint64_t &gt;</a></div><div class="ttdeci">void SetValue&lt; uint64_t &gt;(uint64_t *ptr, const TVMArgValue &amp;val)</div><div class="ttdef"><b>Definition:</b> attrs.h:456</div></div>
 <div class="ttc" id="namespacetvm_1_1detail_html_addd17cedbd26f5b4b257d7651ca5b6fe"><div class="ttname"><a href="namespacetvm_1_1detail.html#addd17cedbd26f5b4b257d7651ca5b6fe">tvm::detail::SetValue&lt; bool &gt;</a></div><div class="ttdeci">void SetValue&lt; bool &gt;(bool *ptr, const TVMArgValue &amp;val)</div><div class="ttdef"><b>Definition:</b> attrs.h:460</div></div>
 <div class="ttc" id="namespacetvm_1_1detail_html_a30d53b5033faeae26ad5ec6443376723"><div class="ttname"><a href="namespacetvm_1_1detail.html#a30d53b5033faeae26ad5ec6443376723">tvm::detail::SetValue&lt; DataType &gt;</a></div><div class="ttdeci">void SetValue&lt; DataType &gt;(DataType *ptr, const TVMArgValue &amp;val)</div><div class="ttdef"><b>Definition:</b> attrs.h:418</div></div>
@@ -113,10 +113,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="crt_2packed__func_8h_html_ad869d7c5618f982f6841399c216a234c"><div class="ttname"><a href="crt_2packed__func_8h.html#ad869d7c5618f982f6841399c216a234c">TVMArgs</a></div><div class="ttdeci">struct TVMArgs TVMArgs</div></div>
 <div class="ttc" id="classtvm_1_1BaseAttrsNode_html_a118837841487c80b157dbead88f18513"><div class="ttname"><a href="classtvm_1_1BaseAttrsNode.html#a118837841487c80b157dbead88f18513">tvm::BaseAttrsNode::PrintDocString</a></div><div class="ttdeci">void PrintDocString(std::ostream &amp;os) const </div><div class="ttdoc">Print readible docstring to ostream, add newline. </div><div class="ttdef"><b>Definition:</b> attrs.h:760</div></div>
 <div class="ttc" id="classtvm_1_1SHashReducer_html"><div class="ttname"><a href="classtvm_1_1SHashReducer.html">tvm::SHashReducer</a></div><div class="ttdoc">A Reducer class to reduce the structural hash value. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:102</div></div>
+<div class="ttc" id="namespacetvm_html_a1c4f14382b85bcfa57d9a3460db2354a"><div class="ttname"><a href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm::equal</a></div><div class="ttdeci">PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">equal </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1DataType_html_a3c9ce1627be2550f656cd37b6c698c7da2a59b355bef5ebc40bd78833666197cb"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html#a3c9ce1627be2550f656cd37b6c698c7da2a59b355bef5ebc40bd78833666197cb">tvm::runtime::DataType::kHandle</a></div><div class="ttdef"><b>Definition:</b> data_type.h:55</div></div>
 <div class="ttc" id="structural__equal_8h_html"><div class="ttname"><a href="structural__equal_8h.html">structural_equal.h</a></div><div class="ttdoc">Structural equality comparison. </div></div>
 <div class="ttc" id="structtvm_1_1detail_1_1AttrInitEntry_html_af07c4a3a8f4663ac03ae238ab7b9d791"><div class="ttname"><a href="structtvm_1_1detail_1_1AttrInitEntry.html#af07c4a3a8f4663ac03ae238ab7b9d791">tvm::detail::AttrInitEntry::AttrInitEntry</a></div><div class="ttdeci">AttrInitEntry(AttrInitEntry &amp;&amp;other)</div><div class="ttdef"><b>Definition:</b> attrs.h:346</div></div>
-<div class="ttc" id="classtvm_1_1FloatImmNode_html"><div class="ttname"><a href="classtvm_1_1FloatImmNode.html">tvm::FloatImmNode</a></div><div class="ttdoc">Constant floating point literals in the program. </div><div class="ttdef"><b>Definition:</b> expr.h:278</div></div>
+<div class="ttc" id="classtvm_1_1FloatImmNode_html"><div class="ttname"><a href="classtvm_1_1FloatImmNode.html">tvm::FloatImmNode</a></div><div class="ttdoc">Constant floating point literals in the program. </div><div class="ttdef"><b>Definition:</b> expr.h:279</div></div>
 <div class="ttc" id="namespacetvm_1_1detail_html_a2565d82719660de2ab39178c917d6628"><div class="ttname"><a href="namespacetvm_1_1detail.html#a2565d82719660de2ab39178c917d6628">tvm::detail::SetValue&lt; double &gt;</a></div><div class="ttdeci">void SetValue&lt; double &gt;(double *ptr, const TVMArgValue &amp;val)</div><div class="ttdef"><b>Definition:</b> attrs.h:432</div></div>
 <div class="ttc" id="classtvm_1_1detail_1_1AttrExistVisitor_html_ac6ae7aa3d30f25a953810bcc0d0a938f"><div class="ttname"><a href="classtvm_1_1detail_1_1AttrExistVisitor.html#ac6ae7aa3d30f25a953810bcc0d0a938f">tvm::detail::AttrExistVisitor::exist_</a></div><div class="ttdeci">bool exist_</div><div class="ttdef"><b>Definition:</b> attrs.h:601</div></div>
 <div class="ttc" id="classtvm_1_1detail_1_1AttrDocVisitor_html"><div class="ttname"><a href="classtvm_1_1detail_1_1AttrDocVisitor.html">tvm::detail::AttrDocVisitor</a></div><div class="ttdef"><b>Definition:</b> attrs.h:584</div></div>
@@ -157,7 +158,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="namespacedmlc_html"><div class="ttname"><a href="namespacedmlc.html">dmlc</a></div><div class="ttdef"><b>Definition:</b> serializer.h:33</div></div>
 <div class="ttc" id="classtvm_1_1detail_1_1AttrDocEntry_html_aec039b071d826ab164c5abe123aefaa3"><div class="ttname"><a href="classtvm_1_1detail_1_1AttrDocEntry.html#aec039b071d826ab164c5abe123aefaa3">tvm::detail::AttrDocEntry::set_upper_bound</a></div><div class="ttdeci">TSelf &amp; set_upper_bound(DMLC_ATTRIBUTE_UNUSED T end)</div><div class="ttdef"><b>Definition:</b> attrs.h:576</div></div>
 <div class="ttc" id="classtvm_1_1BaseAttrsNode_html_a225581a40231b2de219da30fced428a2"><div class="ttname"><a href="classtvm_1_1BaseAttrsNode.html#a225581a40231b2de219da30fced428a2">tvm::BaseAttrsNode::~BaseAttrsNode</a></div><div class="ttdeci">virtual ~BaseAttrsNode()</div><div class="ttdoc">virtual destructor </div><div class="ttdef"><b>Definition:</b> attrs.h:144</div></div>
-<div class="ttc" id="classtvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode. </div><div class="ttdef"><b>Definition:</b> expr.h:261</div></div>
+<div class="ttc" id="classtvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode. </div><div class="ttdef"><b>Definition:</b> expr.h:262</div></div>
 <div class="ttc" id="structtvm_1_1detail_1_1AttrNopEntry_html_a370e92bafbada9ba805a52e72881f98b"><div class="ttname"><a href="structtvm_1_1detail_1_1AttrNopEntry.html#a370e92bafbada9ba805a52e72881f98b">tvm::detail::AttrNopEntry::set_default</a></div><div class="ttdeci">TSelf &amp; set_default(DMLC_ATTRIBUTE_UNUSED const T &amp;value)</div><div class="ttdef"><b>Definition:</b> attrs.h:262</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:1178</div></div>
 <div class="ttc" id="classtvm_1_1detail_1_1AttrInitVisitor_html_ac3c800c9249fee195db2a5fa473fe960"><div class="ttname"><a href="classtvm_1_1detail_1_1AttrInitVisitor.html#ac3c800c9249fee195db2a5fa473fe960">tvm::detail::AttrInitVisitor::AttrInitVisitor</a></div><div class="ttdeci">AttrInitVisitor(const char *type_key, FFind ffind)</div><div class="ttdef"><b>Definition:</b> attrs.h:472</div></div>
@@ -169,14 +170,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="structtvm_1_1detail_1_1AttrTriggerNonDefaultEntry_html_ae3ca1012c8502b2d3132cc81530c6c0e"><div class="ttname"><a href="structtvm_1_1detail_1_1AttrTriggerNonDefaultEntry.html#ae3ca1012c8502b2d3132cc81530c6c0e">tvm::detail::AttrTriggerNonDefaultEntry::~AttrTriggerNonDefaultEntry</a></div><div class="ttdeci">~AttrTriggerNonDefaultEntry() DMLC_THROW_EXCEPTION</div><div class="ttdef"><b>Definition:</b> attrs.h:618</div></div>
 <div class="ttc" id="classtvm_1_1AttrsNode_html_ad6cc4d8a955e30b9f55c0b5367ccce38"><div class="ttname"><a href="classtvm_1_1AttrsNode.html#ad6cc4d8a955e30b9f55c0b5367ccce38">tvm::AttrsNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reducer) const </div><div class="ttdef"><b>Definition:</b> attrs.h:736</div></div>
 <div class="ttc" id="classtvm_1_1detail_1_1AttrExistVisitor_html_a42cfd0949c298dea06fb2c4fb39e188d"><div class="ttname"><a href="classtvm_1_1detail_1_1AttrExistVisitor.html#a42cfd0949c298dea06fb2c4fb39e188d">tvm::detail::AttrExistVisitor::key_</a></div><div class="ttdeci">std::string key_</div><div class="ttdef"><b>Definition:</b> attrs.h:600</div></div>
-<div class="ttc" id="classtvm_1_1runtime_1_1String_html_a2ee7733b1c8092383ffab8c67bf8cb20"><div class="ttname"><a href="classtvm_1_1runtime_1_1String.html#a2ee7733b1c8092383ffab8c67bf8cb20">tvm::runtime::String::CanConvertFrom</a></div><div class="ttdeci">static bool CanConvertFrom(const TVMArgValue &amp;val)</div><div class="ttdoc">Check if a TVMArgValue can be converted to String, i.e. it can be std::string or String. </div><div class="ttdef"><b>Definition:</b> packed_func.h:1509</div></div>
+<div class="ttc" id="classtvm_1_1runtime_1_1String_html_a2ee7733b1c8092383ffab8c67bf8cb20"><div class="ttname"><a href="classtvm_1_1runtime_1_1String.html#a2ee7733b1c8092383ffab8c67bf8cb20">tvm::runtime::String::CanConvertFrom</a></div><div class="ttdeci">static bool CanConvertFrom(const TVMArgValue &amp;val)</div><div class="ttdoc">Check if a TVMArgValue can be converted to String, i.e. it can be std::string or String. </div><div class="ttdef"><b>Definition:</b> packed_func.h:1511</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="object_8h_html_af8330e3864503fb7c4133ae4d48fe4a2"><div class="ttname"><a href="object_8h.html#af8330e3864503fb7c4133ae4d48fe4a2">TVM_DEFINE_OBJECT_REF_COW_METHOD</a></div><div class="ttdeci">#define TVM_DEFINE_OBJECT_REF_COW_METHOD(ObjectName)</div><div class="ttdoc">Define CopyOnWrite function in an ObjectRef. </div><div class="ttdef"><b>Definition:</b> object.h:757</div></div>
 <div class="ttc" id="classtvm_1_1AttrsNode_html_af8192054af4e2797953cc7b67625092f"><div class="ttname"><a href="classtvm_1_1AttrsNode.html#af8192054af4e2797953cc7b67625092f">tvm::AttrsNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const DerivedType *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> attrs.h:729</div></div>
 <div class="ttc" id="classtvm_1_1AttrFieldInfoNode_html_aa0e740cddb317c3a74a12302ab531b9b"><div class="ttname"><a href="classtvm_1_1AttrFieldInfoNode.html#aa0e740cddb317c3a74a12302ab531b9b">tvm::AttrFieldInfoNode::type_info</a></div><div class="ttdeci">String type_info</div><div class="ttdoc">type docstring information in str. </div><div class="ttdef"><b>Definition:</b> attrs.h:111</div></div>
 <div class="ttc" id="classtvm_1_1detail_1_1AttrNormalVisitor_html"><div class="ttname"><a href="classtvm_1_1detail_1_1AttrNormalVisitor.html">tvm::detail::AttrNormalVisitor</a></div><div class="ttdef"><b>Definition:</b> attrs.h:276</div></div>
 <div class="ttc" id="object_8h_html_a3aea9b3f65aeb9150c0fa7800e5573c6"><div class="ttname"><a href="object_8h.html#a3aea9b3f65aeb9150c0fa7800e5573c6">TVM_DECLARE_FINAL_OBJECT_INFO</a></div><div class="ttdeci">#define TVM_DECLARE_FINAL_OBJECT_INFO(TypeName, ParentType)</div><div class="ttdoc">helper macro to declare type information in a final class. </div><div class="ttdef"><b>Definition:</b> object.h:658</div></div>
-<div class="ttc" id="namespacetvm_1_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</div></div>
 <div class="ttc" id="structtvm_1_1detail_1_1AttrInitEntry_html_a64eca870988f14379a2c47085cb5a0f2"><div class="ttname"><a href="structtvm_1_1detail_1_1AttrInitEntry.html#a64eca870988f14379a2c47085cb5a0f2">tvm::detail::AttrInitEntry::describe</a></div><div class="ttdeci">TSelf &amp; describe(DMLC_ATTRIBUTE_UNUSED const char *str)</div><div class="ttdef"><b>Definition:</b> attrs.h:396</div></div>
 <div class="ttc" id="classtvm_1_1BaseAttrsNode_html_af145cd54a0d92705871500a675e43abe"><div class="ttname"><a href="classtvm_1_1BaseAttrsNode.html#af145cd54a0d92705871500a675e43abe">tvm::BaseAttrsNode::VisitAttrs</a></div><div class="ttdeci">virtual void VisitAttrs(AttrVisitor *v)</div><div class="ttdef"><b>Definition:</b> attrs.h:146</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:660</div></div>
diff --git a/docs/api/doxygen/ir_2expr_8h_source.html b/docs/api/doxygen/ir_2expr_8h_source.html
index 6b69557..257964e 100644
--- a/docs/api/doxygen/ir_2expr_8h_source.html
+++ b/docs/api/doxygen/ir_2expr_8h_source.html
@@ -89,61 +89,62 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">expr.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="ir_2expr_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_1Integer_html_a4bdb4edd6acf99ecfca13bf34da04fae"><div class="ttname"><a href="classtvm_1_1Integer.html#a4bdb4edd6acf99ecfca13bf34da04fae">tvm::Integer::Integer</a></div><div class="ttdeci">Integer(Enum value)</div><div class="ttdoc">Constructor from enum. </div><div class="ttdef"><b>Definition:</b> expr.h:376</div></div>
+<a href="ir_2expr_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_1Integer_html_a4bdb4edd6acf99ecfca13bf34da04fae"><div class="ttname"><a href="classtvm_1_1Integer.html#a4bdb4edd6acf99ecfca13bf34da04fae">tvm::Integer::Integer</a></div><div class="ttdeci">Integer(Enum value)</div><div class="ttdoc">Constructor from enum. </div><div class="ttdef"><b>Definition:</b> expr.h:378</div></div>
 <div class="ttc" id="namespacetvm_1_1relay_html_af40ca6124bc2e88f2323eeb79d326cc0"><div class="ttname"><a href="namespacetvm_1_1relay.html#af40ca6124bc2e88f2323eeb79d326cc0">tvm::relay::Span</a></div><div class="ttdeci">tvm::Span Span</div><div class="ttdef"><b>Definition:</b> base.h:65</div></div>
 <div class="ttc" id="classtvm_1_1BaseExprNode_html_a0cc4e898dbc3b52d785fc3e515663c61"><div class="ttname"><a href="classtvm_1_1BaseExprNode.html#a0cc4e898dbc3b52d785fc3e515663c61">tvm::BaseExprNode::_type_key</a></div><div class="ttdeci">static constexpr const char * _type_key</div><div class="ttdef"><b>Definition:</b> expr.h:54</div></div>
-<div class="ttc" id="classtvm_1_1FloatImmNode_html_a88ce961273d224831b187d8e9f149e08"><div class="ttname"><a href="classtvm_1_1FloatImmNode.html#a88ce961273d224831b187d8e9f149e08">tvm::FloatImmNode::value</a></div><div class="ttdeci">double value</div><div class="ttdoc">The constant value content. </div><div class="ttdef"><b>Definition:</b> expr.h:281</div></div>
-<div class="ttc" id="classtvm_1_1RangeNode_html_a43d2fb12bb61cf05936a1972d0158b49"><div class="ttname"><a href="classtvm_1_1RangeNode.html#a43d2fb12bb61cf05936a1972d0158b49">tvm::RangeNode::min</a></div><div class="ttdeci">PrimExpr min</div><div class="ttdoc">beginning of the node </div><div class="ttdef"><b>Definition:</b> expr.h:415</div></div>
+<div class="ttc" id="classtvm_1_1FloatImmNode_html_a88ce961273d224831b187d8e9f149e08"><div class="ttname"><a href="classtvm_1_1FloatImmNode.html#a88ce961273d224831b187d8e9f149e08">tvm::FloatImmNode::value</a></div><div class="ttdeci">double value</div><div class="ttdoc">The constant value content. </div><div class="ttdef"><b>Definition:</b> expr.h:282</div></div>
+<div class="ttc" id="classtvm_1_1RangeNode_html_a43d2fb12bb61cf05936a1972d0158b49"><div class="ttname"><a href="classtvm_1_1RangeNode.html#a43d2fb12bb61cf05936a1972d0158b49">tvm::RangeNode::min</a></div><div class="ttdeci">PrimExpr min</div><div class="ttdoc">beginning of the node </div><div class="ttdef"><b>Definition:</b> expr.h:417</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1ObjectPtr_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1ObjectPtr.html">tvm::runtime::ObjectPtr</a></div><div class="ttdoc">A custom smart pointer for Object. </div><div class="ttdef"><b>Definition:</b> object.h:350</div></div>
-<div class="ttc" id="classtvm_1_1Bool_html"><div class="ttname"><a href="classtvm_1_1Bool.html">tvm::Bool</a></div><div class="ttdoc">Boolean constant. </div><div class="ttdef"><b>Definition:</b> expr.h:325</div></div>
-<div class="ttc" id="classtvm_1_1runtime_1_1TVMPODValue___html_a918b5a9ef8fcd65d649c7dd41ff12d9f"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMPODValue__.html#a918b5a9ef8fcd65d649c7dd41ff12d9f">tvm::runtime::TVMPODValue_::AsObjectRef</a></div><div class="ttdeci">TObjectRef AsObjectRef() const </div><div class="ttdef"><b>Definition:</b> packed_func.h:1372</div></div>
+<div class="ttc" id="classtvm_1_1Bool_html"><div class="ttname"><a href="classtvm_1_1Bool.html">tvm::Bool</a></div><div class="ttdoc">Boolean constant. </div><div class="ttdef"><b>Definition:</b> expr.h:327</div></div>
+<div class="ttc" id="classtvm_1_1runtime_1_1TVMPODValue___html_a918b5a9ef8fcd65d649c7dd41ff12d9f"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMPODValue__.html#a918b5a9ef8fcd65d649c7dd41ff12d9f">tvm::runtime::TVMPODValue_::AsObjectRef</a></div><div class="ttdeci">TObjectRef AsObjectRef() const </div><div class="ttdef"><b>Definition:</b> packed_func.h:1374</div></div>
 <div class="ttc" id="node_8h_html"><div class="ttname"><a href="node_8h.html">node.h</a></div><div class="ttdoc">Definitions and helper macros for IR/AST nodes. </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1TVMPODValue___html_a5a799e4197f227549cd641b0e753f9b8"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMPODValue__.html#a5a799e4197f227549cd641b0e753f9b8">tvm::runtime::TVMPODValue_::type_code</a></div><div class="ttdeci">int type_code() const </div><div class="ttdef"><b>Definition:</b> packed_func.h:425</div></div>
-<div class="ttc" id="namespacetvm_html_a002710a4652156a57495e10a09b5d002"><div class="ttname"><a href="namespacetvm.html#a002710a4652156a57495e10a09b5d002">tvm::operator||</a></div><div class="ttdeci">Bool operator||(const Bool &amp;a, bool b)</div><div class="ttdef"><b>Definition:</b> expr.h:335</div></div>
+<div class="ttc" id="namespacetvm_html_a002710a4652156a57495e10a09b5d002"><div class="ttname"><a href="namespacetvm.html#a002710a4652156a57495e10a09b5d002">tvm::operator||</a></div><div class="ttdeci">Bool operator||(const Bool &amp;a, bool b)</div><div class="ttdef"><b>Definition:</b> expr.h:337</div></div>
 <div class="ttc" id="span_8h_html"><div class="ttname"><a href="span_8h.html">span.h</a></div><div class="ttdoc">Span information for debugging purposes. </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1TVMPODValue___html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMPODValue__.html">tvm::runtime::TVMPODValue_</a></div><div class="ttdoc">Internal base class to handle conversion to POD values. </div><div class="ttdef"><b>Definition:</b> packed_func.h:363</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="classtvm_1_1BaseExprNode_html_a13d7d1f1e6f790951caf200cd59c3620"><div class="ttname"><a href="classtvm_1_1BaseExprNode.html#a13d7d1f1e6f790951caf200cd59c3620">tvm::BaseExprNode::_type_has_method_shash_reduce</a></div><div class="ttdeci">static constexpr const bool _type_has_method_shash_reduce</div><div class="ttdef"><b>Definition:</b> expr.h:56</div></div>
-<div class="ttc" id="classtvm_1_1Integer_html_a2d3969d98441b5b2ee5d8a986a56c410"><div class="ttname"><a href="classtvm_1_1Integer.html#a2d3969d98441b5b2ee5d8a986a56c410">tvm::Integer::Integer</a></div><div class="ttdeci">Integer()</div><div class="ttdef"><b>Definition:</b> expr.h:356</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html_a2d3969d98441b5b2ee5d8a986a56c410"><div class="ttname"><a href="classtvm_1_1Integer.html#a2d3969d98441b5b2ee5d8a986a56c410">tvm::Integer::Integer</a></div><div class="ttdeci">Integer()</div><div class="ttdef"><b>Definition:</b> expr.h:358</div></div>
 <div class="ttc" id="classtvm_1_1GlobalVarNode_html_ab82974132026f07d89afcf409a2ca616"><div class="ttname"><a href="classtvm_1_1GlobalVarNode.html#ab82974132026f07d89afcf409a2ca616">tvm::GlobalVarNode::name_hint</a></div><div class="ttdeci">String name_hint</div><div class="ttdoc">The name of the variable, this only acts as a hint. </div><div class="ttdef"><b>Definition:</b> expr.h:194</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_1RangeNode_html_aee167e954efc66eec2b2fecfcfc7e3d5"><div class="ttname"><a href="classtvm_1_1RangeNode.html#aee167e954efc66eec2b2fecfcfc7e3d5">tvm::RangeNode::span</a></div><div class="ttdeci">Span span</div><div class="ttdoc">the location of this range in the source </div><div class="ttdef"><b>Definition:</b> expr.h:421</div></div>
 <div class="ttc" id="classtvm_1_1SHashReducer_html"><div class="ttname"><a href="classtvm_1_1SHashReducer.html">tvm::SHashReducer</a></div><div class="ttdoc">A Reducer class to reduce the structural hash value. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:102</div></div>
 <div class="ttc" id="c__runtime__api_8h_html_a190e81769e805cca153514137a66e793a72d85fbd104ae87b054f93ddd8e1476b"><div class="ttname"><a href="c__runtime__api_8h.html#a190e81769e805cca153514137a66e793a72d85fbd104ae87b054f93ddd8e1476b">kTVMArgInt</a></div><div class="ttdef"><b>Definition:</b> c_runtime_api.h:106</div></div>
-<div class="ttc" id="classtvm_1_1Integer_html_ad71119ff42add763e11fafe4f4194f6a"><div class="ttname"><a href="classtvm_1_1Integer.html#ad71119ff42add763e11fafe4f4194f6a">tvm::Integer::operator==</a></div><div class="ttdeci">Bool operator==(int other) const </div><div class="ttdef"><b>Definition:</b> expr.h:396</div></div>
-<div class="ttc" id="namespacetvm_html_ab66052c86dc52cd20933ee60ca12d3d4"><div class="ttname"><a href="namespacetvm.html#ab66052c86dc52cd20933ee60ca12d3d4">tvm::operator&amp;&amp;</a></div><div class="ttdeci">Bool operator&amp;&amp;(const Bool &amp;a, bool b)</div><div class="ttdef"><b>Definition:</b> expr.h:340</div></div>
-<div class="ttc" id="classtvm_1_1RangeNode_html_a80bd0fe8be559acfacd5e5d90c938b2f"><div class="ttname"><a href="classtvm_1_1RangeNode.html#a80bd0fe8be559acfacd5e5d90c938b2f">tvm::RangeNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> expr.h:431</div></div>
-<div class="ttc" id="classtvm_1_1FloatImmNode_html"><div class="ttname"><a href="classtvm_1_1FloatImmNode.html">tvm::FloatImmNode</a></div><div class="ttdoc">Constant floating point literals in the program. </div><div class="ttdef"><b>Definition:</b> expr.h:278</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html_ad71119ff42add763e11fafe4f4194f6a"><div class="ttname"><a href="classtvm_1_1Integer.html#ad71119ff42add763e11fafe4f4194f6a">tvm::Integer::operator==</a></div><div class="ttdeci">Bool operator==(int other) const </div><div class="ttdef"><b>Definition:</b> expr.h:398</div></div>
+<div class="ttc" id="namespacetvm_html_a1c4f14382b85bcfa57d9a3460db2354a"><div class="ttname"><a href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm::equal</a></div><div class="ttdeci">PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">equal </div></div>
+<div class="ttc" id="namespacetvm_html_ab66052c86dc52cd20933ee60ca12d3d4"><div class="ttname"><a href="namespacetvm.html#ab66052c86dc52cd20933ee60ca12d3d4">tvm::operator&amp;&amp;</a></div><div class="ttdeci">Bool operator&amp;&amp;(const Bool &amp;a, bool b)</div><div class="ttdef"><b>Definition:</b> expr.h:342</div></div>
+<div class="ttc" id="classtvm_1_1RangeNode_html_a80bd0fe8be559acfacd5e5d90c938b2f"><div class="ttname"><a href="classtvm_1_1RangeNode.html#a80bd0fe8be559acfacd5e5d90c938b2f">tvm::RangeNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> expr.h:437</div></div>
+<div class="ttc" id="classtvm_1_1FloatImmNode_html"><div class="ttname"><a href="classtvm_1_1FloatImmNode.html">tvm::FloatImmNode</a></div><div class="ttdoc">Constant floating point literals in the program. </div><div class="ttdef"><b>Definition:</b> expr.h:279</div></div>
 <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> loop_state.h:457</div></div>
-<div class="ttc" id="classtvm_1_1FloatImmNode_html_a7974ef908deb8bcc00e46aa9e0d989b5"><div class="ttname"><a href="classtvm_1_1FloatImmNode.html#a7974ef908deb8bcc00e46aa9e0d989b5">tvm::FloatImmNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> expr.h:292</div></div>
-<div class="ttc" id="classtvm_1_1Integer_html_afc4e496d3fdfd643d04e9d75c0977021"><div class="ttname"><a href="classtvm_1_1Integer.html#afc4e496d3fdfd643d04e9d75c0977021">tvm::Integer::Integer</a></div><div class="ttdeci">Integer(int value, Span span=Span())</div><div class="ttdoc">Construct integer from int value. </div><div class="ttdef"><b>Definition:</b> expr.h:364</div></div>
-<div class="ttc" id="classtvm_1_1Integer_html_ad538a2ae6f636b3ce38fb4162b1c2549"><div class="ttname"><a href="classtvm_1_1Integer.html#ad538a2ae6f636b3ce38fb4162b1c2549">tvm::Integer::operator=</a></div><div class="ttdeci">Integer &amp; operator=(const IntImm &amp;other)</div><div class="ttdoc">Assign an expression to integer. </div><div class="ttdef"><b>Definition:</b> expr.h:384</div></div>
-<div class="ttc" id="classtvm_1_1Integer_html_a962f080ada680921fbfff0846553ec33"><div class="ttname"><a href="classtvm_1_1Integer.html#a962f080ada680921fbfff0846553ec33">tvm::Integer::Integer</a></div><div class="ttdeci">Integer(IntImm other)</div><div class="ttdoc">Construct integer from int imm. </div><div class="ttdef"><b>Definition:</b> expr.h:369</div></div>
-<div class="ttc" id="classtvm_1_1Integer_html_ae395bcab691d3bdd0fc5978fe5addea3"><div class="ttname"><a href="classtvm_1_1Integer.html#ae395bcab691d3bdd0fc5978fe5addea3">tvm::Integer::operator==</a></div><div class="ttdeci">Bool operator==(Enum other) const </div><div class="ttdef"><b>Definition:</b> expr.h:402</div></div>
+<div class="ttc" id="classtvm_1_1FloatImmNode_html_a7974ef908deb8bcc00e46aa9e0d989b5"><div class="ttname"><a href="classtvm_1_1FloatImmNode.html#a7974ef908deb8bcc00e46aa9e0d989b5">tvm::FloatImmNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> expr.h:294</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html_afc4e496d3fdfd643d04e9d75c0977021"><div class="ttname"><a href="classtvm_1_1Integer.html#afc4e496d3fdfd643d04e9d75c0977021">tvm::Integer::Integer</a></div><div class="ttdeci">Integer(int value, Span span=Span())</div><div class="ttdoc">Construct integer from int value. </div><div class="ttdef"><b>Definition:</b> expr.h:366</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html_ad538a2ae6f636b3ce38fb4162b1c2549"><div class="ttname"><a href="classtvm_1_1Integer.html#ad538a2ae6f636b3ce38fb4162b1c2549">tvm::Integer::operator=</a></div><div class="ttdeci">Integer &amp; operator=(const IntImm &amp;other)</div><div class="ttdoc">Assign an expression to integer. </div><div class="ttdef"><b>Definition:</b> expr.h:386</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html_a962f080ada680921fbfff0846553ec33"><div class="ttname"><a href="classtvm_1_1Integer.html#a962f080ada680921fbfff0846553ec33">tvm::Integer::Integer</a></div><div class="ttdeci">Integer(IntImm other)</div><div class="ttdoc">Construct integer from int imm. </div><div class="ttdef"><b>Definition:</b> expr.h:371</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html_ae395bcab691d3bdd0fc5978fe5addea3"><div class="ttname"><a href="classtvm_1_1Integer.html#ae395bcab691d3bdd0fc5978fe5addea3">tvm::Integer::operator==</a></div><div class="ttdeci">Bool operator==(Enum other) const </div><div class="ttdef"><b>Definition:</b> expr.h:404</div></div>
 <div class="ttc" id="classtvm_1_1BaseExpr_html"><div class="ttname"><a href="classtvm_1_1BaseExpr.html">tvm::BaseExpr</a></div><div class="ttdoc">Managed reference to BaseExprNode. </div><div class="ttdef"><b>Definition:</b> expr.h:65</div></div>
 <div class="ttc" id="classtvm_1_1IntImmNode_html"><div class="ttname"><a href="classtvm_1_1IntImmNode.html">tvm::IntImmNode</a></div><div class="ttdoc">Constant integer literals in the program. </div><div class="ttdef"><b>Definition:</b> expr.h:233</div></div>
-<div class="ttc" id="classtvm_1_1RangeNode_html_acd2ddcfab1f591a6c1f2568dd0180845"><div class="ttname"><a href="classtvm_1_1RangeNode.html#acd2ddcfab1f591a6c1f2568dd0180845">tvm::RangeNode::extent</a></div><div class="ttdeci">PrimExpr extent</div><div class="ttdoc">the extend of range </div><div class="ttdef"><b>Definition:</b> expr.h:417</div></div>
-<div class="ttc" id="classtvm_1_1RelayExprNode_html_a89bfd23e109a842d18240277ffaaa130"><div class="ttname"><a href="classtvm_1_1RelayExprNode.html#a89bfd23e109a842d18240277ffaaa130">tvm::RelayExprNode::checked_type</a></div><div class="ttdeci">const Type &amp; checked_type() const </div><div class="ttdef"><b>Definition:</b> expr.h:466</div></div>
-<div class="ttc" id="classtvm_1_1Integer_html_a262bc171fdf52db5f34e3c8446fb81aa"><div class="ttname"><a href="classtvm_1_1Integer.html#a262bc171fdf52db5f34e3c8446fb81aa">tvm::Integer::Integer</a></div><div class="ttdeci">Integer(ObjectPtr&lt; Object &gt; node)</div><div class="ttdoc">constructor from node. </div><div class="ttdef"><b>Definition:</b> expr.h:360</div></div>
-<div class="ttc" id="classtvm_1_1FloatImm_html"><div class="ttname"><a href="classtvm_1_1FloatImm.html">tvm::FloatImm</a></div><div class="ttdoc">Managed reference class to FloatImmNode. </div><div class="ttdef"><b>Definition:</b> expr.h:306</div></div>
+<div class="ttc" id="classtvm_1_1RangeNode_html_acd2ddcfab1f591a6c1f2568dd0180845"><div class="ttname"><a href="classtvm_1_1RangeNode.html#acd2ddcfab1f591a6c1f2568dd0180845">tvm::RangeNode::extent</a></div><div class="ttdeci">PrimExpr extent</div><div class="ttdoc">the extend of range </div><div class="ttdef"><b>Definition:</b> expr.h:419</div></div>
+<div class="ttc" id="classtvm_1_1RelayExprNode_html_a89bfd23e109a842d18240277ffaaa130"><div class="ttname"><a href="classtvm_1_1RelayExprNode.html#a89bfd23e109a842d18240277ffaaa130">tvm::RelayExprNode::checked_type</a></div><div class="ttdeci">const Type &amp; checked_type() const </div><div class="ttdef"><b>Definition:</b> expr.h:474</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html_a262bc171fdf52db5f34e3c8446fb81aa"><div class="ttname"><a href="classtvm_1_1Integer.html#a262bc171fdf52db5f34e3c8446fb81aa">tvm::Integer::Integer</a></div><div class="ttdeci">Integer(ObjectPtr&lt; Object &gt; node)</div><div class="ttdoc">constructor from node. </div><div class="ttdef"><b>Definition:</b> expr.h:362</div></div>
+<div class="ttc" id="classtvm_1_1FloatImm_html"><div class="ttname"><a href="classtvm_1_1FloatImm.html">tvm::FloatImm</a></div><div class="ttdoc">Managed reference class to FloatImmNode. </div><div class="ttdef"><b>Definition:</b> expr.h:308</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="namespacetvm_html_a9da780393e228969f77aa7550520a582"><div class="ttname"><a href="namespacetvm.html#a9da780393e228969f77aa7550520a582">tvm::min</a></div><div class="ttdeci">PrimExpr min(PrimExpr a, PrimExpr b)</div><div class="ttdoc">take minimum of two values </div></div>
-<div class="ttc" id="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01tvm_1_1Bool_01_4_html_a8afe0a2b788c12dcebec930db368f8cc"><div class="ttname"><a href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01tvm_1_1Bool_01_4.html#a8afe0a2b788c12dcebec930db368f8cc">tvm::runtime::PackedFuncValueConverter&lt; tvm::Bool &gt;::From</a></div><div class="ttdeci">static tvm::Bool From(const TVMPODValue_ &amp;val)</div><div class="ttdef"><b>Definition:</b> expr.h:522</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:443</div></div>
+<div class="ttc" id="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01tvm_1_1Bool_01_4_html_a8afe0a2b788c12dcebec930db368f8cc"><div class="ttname"><a href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01tvm_1_1Bool_01_4.html#a8afe0a2b788c12dcebec930db368f8cc">tvm::runtime::PackedFuncValueConverter&lt; tvm::Bool &gt;::From</a></div><div class="ttdeci">static tvm::Bool From(const TVMPODValue_ &amp;val)</div><div class="ttdef"><b>Definition:</b> expr.h:530</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:449</div></div>
 <div class="ttc" id="classtvm_1_1Span_html"><div class="ttname"><a href="classtvm_1_1Span.html">tvm::Span</a></div><div class="ttdef"><b>Definition:</b> span.h:112</div></div>
-<div class="ttc" id="classtvm_1_1RelayExprNode_html_a60c73bac632a728a2a669bb34a1c3008"><div class="ttname"><a href="classtvm_1_1RelayExprNode.html#a60c73bac632a728a2a669bb34a1c3008">tvm::RelayExprNode::type_as</a></div><div class="ttdeci">const TTypeNode * type_as() const </div><div class="ttdoc">Check if the inferred(checked) type of the Expr is backed by a TTypeNode and return it...</div><div class="ttdef"><b>Definition:</b> expr.h:474</div></div>
+<div class="ttc" id="classtvm_1_1RelayExprNode_html_a60c73bac632a728a2a669bb34a1c3008"><div class="ttname"><a href="classtvm_1_1RelayExprNode.html#a60c73bac632a728a2a669bb34a1c3008">tvm::RelayExprNode::type_as</a></div><div class="ttdeci">const TTypeNode * type_as() const </div><div class="ttdoc">Check if the inferred(checked) type of the Expr is backed by a TTypeNode and return it...</div><div class="ttdef"><b>Definition:</b> expr.h:482</div></div>
 <div class="ttc" id="classtvm_1_1BaseExprNode_html_ae3a0760a9f8b1379bc86f13e8bb3a22e"><div class="ttname"><a href="classtvm_1_1BaseExprNode.html#ae3a0760a9f8b1379bc86f13e8bb3a22e">tvm::BaseExprNode::span</a></div><div class="ttdeci">Span span</div><div class="ttdoc">Span that points to the original source code. Reserved debug information. </div><div class="ttdef"><b>Definition:</b> expr.h:52</div></div>
 <div class="ttc" id="classtvm_1_1BaseExprNode_html_a1c4db1562af2034749bc929ed00600a3"><div class="ttname"><a href="classtvm_1_1BaseExprNode.html#a1c4db1562af2034749bc929ed00600a3">tvm::BaseExprNode::_type_child_slots</a></div><div class="ttdeci">static constexpr const uint32_t _type_child_slots</div><div class="ttdef"><b>Definition:</b> expr.h:57</div></div>
 <div class="ttc" id="ir_2type_8h_html"><div class="ttname"><a href="ir_2type_8h.html">type.h</a></div><div class="ttdoc">IR/AST nodes for the unified type system in TVM. </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="classtvm_1_1BaseExprNode_html"><div class="ttname"><a href="classtvm_1_1BaseExprNode.html">tvm::BaseExprNode</a></div><div class="ttdoc">Base type of all the expressions. </div><div class="ttdef"><b>Definition:</b> expr.h:46</div></div>
-<div class="ttc" id="classtvm_1_1RangeNode_html_a6ee2e11a496cc52627354fd90f00e2a0"><div class="ttname"><a href="classtvm_1_1RangeNode.html#a6ee2e11a496cc52627354fd90f00e2a0">tvm::RangeNode::RangeNode</a></div><div class="ttdeci">RangeNode(PrimExpr min, PrimExpr extent)</div><div class="ttdef"><b>Definition:</b> expr.h:420</div></div>
 <div class="ttc" id="namespacetvm_1_1relay_html_a81ac7c3d0824529fddce7849c9c66289"><div class="ttname"><a href="namespacetvm_1_1relay.html#a81ac7c3d0824529fddce7849c9c66289">tvm::relay::GlobalVar</a></div><div class="ttdeci">tvm::GlobalVar GlobalVar</div><div class="ttdef"><b>Definition:</b> expr.h:45</div></div>
-<div class="ttc" id="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01PrimExpr_01_4_html_aa071662c3084d7ad3322351cb44c3dbf"><div class="ttname"><a href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01PrimExpr_01_4.html#aa071662c3084d7ad3322351cb44c3dbf">tvm::runtime::PackedFuncValueConverter&lt; PrimExpr &gt;::From</a></div><div class="ttdeci">static PrimExpr From(const TVMPODValue_ &amp;val)</div><div class="ttdef"><b>Definition:</b> expr.h:492</div></div>
+<div class="ttc" id="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01PrimExpr_01_4_html_aa071662c3084d7ad3322351cb44c3dbf"><div class="ttname"><a href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01PrimExpr_01_4.html#aa071662c3084d7ad3322351cb44c3dbf">tvm::runtime::PackedFuncValueConverter&lt; PrimExpr &gt;::From</a></div><div class="ttdeci">static PrimExpr From(const TVMPODValue_ &amp;val)</div><div class="ttdef"><b>Definition:</b> expr.h:500</div></div>
 <div class="ttc" id="classtvm_1_1BaseExprNode_html_a905dcf65204e877b6ccb977cf375f2a0"><div class="ttname"><a href="classtvm_1_1BaseExprNode.html#a905dcf65204e877b6ccb977cf375f2a0">tvm::BaseExprNode::_type_has_method_sequal_reduce</a></div><div class="ttdeci">static constexpr const bool _type_has_method_sequal_reduce</div><div class="ttdef"><b>Definition:</b> expr.h:55</div></div>
-<div class="ttc" id="classtvm_1_1FloatImmNode_html_a74569b541c1056734fff07a23a05558e"><div class="ttname"><a href="classtvm_1_1FloatImmNode.html#a74569b541c1056734fff07a23a05558e">tvm::FloatImmNode::VisitAttrs</a></div><div class="ttdeci">void VisitAttrs(AttrVisitor *v)</div><div class="ttdef"><b>Definition:</b> expr.h:283</div></div>
-<div class="ttc" id="classtvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode. </div><div class="ttdef"><b>Definition:</b> expr.h:261</div></div>
+<div class="ttc" id="classtvm_1_1FloatImmNode_html_a74569b541c1056734fff07a23a05558e"><div class="ttname"><a href="classtvm_1_1FloatImmNode.html#a74569b541c1056734fff07a23a05558e">tvm::FloatImmNode::VisitAttrs</a></div><div class="ttdeci">void VisitAttrs(AttrVisitor *v)</div><div class="ttdef"><b>Definition:</b> expr.h:284</div></div>
+<div class="ttc" id="classtvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode. </div><div class="ttdef"><b>Definition:</b> expr.h:262</div></div>
 <div class="ttc" id="classtvm_1_1GlobalVar_html"><div class="ttname"><a href="classtvm_1_1GlobalVar.html">tvm::GlobalVar</a></div><div class="ttdoc">Managed reference to GlobalVarNode. </div><div class="ttdef"><b>Definition:</b> expr.h:220</div></div>
+<div class="ttc" id="classtvm_1_1RangeNode_html_a4bbc33969cb484c20306da1d2b9fa1fd"><div class="ttname"><a href="classtvm_1_1RangeNode.html#a4bbc33969cb484c20306da1d2b9fa1fd">tvm::RangeNode::RangeNode</a></div><div class="ttdeci">RangeNode(PrimExpr min, PrimExpr extent, Span span=Span())</div><div class="ttdef"><b>Definition:</b> expr.h:424</div></div>
 <div class="ttc" id="classtvm_1_1GlobalVarNode_html_a17a31708458fb8db6a02c26490718cef"><div class="ttname"><a href="classtvm_1_1GlobalVarNode.html#a17a31708458fb8db6a02c26490718cef">tvm::GlobalVarNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const GlobalVarNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> expr.h:202</div></div>
 <div class="ttc" id="classtvm_1_1IntImmNode_html_a81f4c116ffb5931fdd64639eacad415d"><div class="ttname"><a href="classtvm_1_1IntImmNode.html#a81f4c116ffb5931fdd64639eacad415d">tvm::IntImmNode::value</a></div><div class="ttdeci">int64_t value</div><div class="ttdoc">the Internal value. </div><div class="ttdef"><b>Definition:</b> expr.h:236</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:1178</div></div>
@@ -152,37 +153,36 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1IntImmNode_html_a39ccfd3964e6d132ad8d4e4d544b5949"><div class="ttname"><a href="classtvm_1_1IntImmNode.html#a39ccfd3964e6d132ad8d4e4d544b5949">tvm::IntImmNode::VisitAttrs</a></div><div class="ttdeci">void VisitAttrs(AttrVisitor *v)</div><div class="ttdef"><b>Definition:</b> expr.h:238</div></div>
 <div class="ttc" id="classtvm_1_1SEqualReducer_html_af49dfe588f340f8e44dc245f2cb9a030"><div class="ttname"><a href="classtvm_1_1SEqualReducer.html#af49dfe588f340f8e44dc245f2cb9a030">tvm::SEqualReducer::FreeVarEqualImpl</a></div><div class="ttdeci">bool FreeVarEqualImpl(const runtime::Object *lhs, const runtime::Object *rhs) const </div><div class="ttdoc">Implementation for equality rule of var type objects(e.g. TypeVar, tir::Var). </div><div class="ttdef"><b>Definition:</b> structural_eq [...]
 <div class="ttc" id="classtvm_1_1GlobalVarNode_html_afe504b71e30d8ceb2f0e69249c970080"><div class="ttname"><a href="classtvm_1_1GlobalVarNode.html#afe504b71e30d8ceb2f0e69249c970080">tvm::GlobalVarNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> expr.h:207</div></div>
-<div class="ttc" id="classtvm_1_1FloatImmNode_html_a13156b7fe5e11835246b157987031b7b"><div class="ttname"><a href="classtvm_1_1FloatImmNode.html#a13156b7fe5e11835246b157987031b7b">tvm::FloatImmNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const FloatImmNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> expr.h:288</div></div>
+<div class="ttc" id="classtvm_1_1FloatImmNode_html_a13156b7fe5e11835246b157987031b7b"><div class="ttname"><a href="classtvm_1_1FloatImmNode.html#a13156b7fe5e11835246b157987031b7b">tvm::FloatImmNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const FloatImmNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> expr.h:290</div></div>
 <div class="ttc" id="namespacetvm_1_1relay_html_a661d95f170bca230773914caeef3fe52"><div class="ttname"><a href="namespacetvm_1_1relay.html#a661d95f170bca230773914caeef3fe52">tvm::relay::Type</a></div><div class="ttdeci">tvm::Type Type</div><div class="ttdef"><b>Definition:</b> type.h:47</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1ObjectRef_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></div><div class="ttdoc">Base class of all object reference. </div><div class="ttdef"><b>Definition:</b> object.h:498</div></div>
-<div class="ttc" id="classtvm_1_1Integer_html_a8391d24f722dd3795995f3eebc1129b0"><div class="ttname"><a href="classtvm_1_1Integer.html#a8391d24f722dd3795995f3eebc1129b0">tvm::Integer::operator!=</a></div><div class="ttdeci">Bool operator!=(int other) const </div><div class="ttdef"><b>Definition:</b> expr.h:400</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html_a8391d24f722dd3795995f3eebc1129b0"><div class="ttname"><a href="classtvm_1_1Integer.html#a8391d24f722dd3795995f3eebc1129b0">tvm::Integer::operator!=</a></div><div class="ttdeci">Bool operator!=(int other) const </div><div class="ttdef"><b>Definition:</b> expr.h:402</div></div>
 <div class="ttc" id="classtvm_1_1SHashReducer_html_ab9cf0c638238f55dd5b6f155d65f92ef"><div class="ttname"><a href="classtvm_1_1SHashReducer.html#ab9cf0c638238f55dd5b6f155d65f92ef">tvm::SHashReducer::FreeVarHashImpl</a></div><div class="ttdeci">void FreeVarHashImpl(const runtime::Object *var) const </div><div class="ttdoc">Implementation for hash for a free var. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:185</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="object_8h_html_a3aea9b3f65aeb9150c0fa7800e5573c6"><div class="ttname"><a href="object_8h.html#a3aea9b3f65aeb9150c0fa7800e5573c6">TVM_DECLARE_FINAL_OBJECT_INFO</a></div><div class="ttdeci">#define TVM_DECLARE_FINAL_OBJECT_INFO(TypeName, ParentType)</div><div class="ttdoc">helper macro to declare type information in a final class. </div><div class="ttdef"><b>Definition:</b> object.h:658</div></div>
-<div class="ttc" id="classtvm_1_1Bool_html_a4154ec9cafe292aaecb6884b67f784b4"><div class="ttname"><a href="classtvm_1_1Bool.html#a4154ec9cafe292aaecb6884b67f784b4">tvm::Bool::operator!</a></div><div class="ttdeci">Bool operator!() const </div><div class="ttdef"><b>Definition:</b> expr.h:328</div></div>
-<div class="ttc" id="namespacetvm_1_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</div></div>
+<div class="ttc" id="classtvm_1_1Bool_html_a4154ec9cafe292aaecb6884b67f784b4"><div class="ttname"><a href="classtvm_1_1Bool.html#a4154ec9cafe292aaecb6884b67f784b4">tvm::Bool::operator!</a></div><div class="ttdeci">Bool operator!() const </div><div class="ttdef"><b>Definition:</b> expr.h:330</div></div>
 <div class="ttc" id="node_2container_8h_html"><div class="ttname"><a href="node_2container_8h.html">container.h</a></div><div class="ttdoc">Array/Map container in the DSL graph. </div></div>
-<div class="ttc" id="classtvm_1_1RangeNode_html_ab845f7ed4ed85e360b730df3450d1aab"><div class="ttname"><a href="classtvm_1_1RangeNode.html#ab845f7ed4ed85e360b730df3450d1aab">tvm::RangeNode::RangeNode</a></div><div class="ttdeci">RangeNode()</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> expr.h:419</div></div>
+<div class="ttc" id="classtvm_1_1RangeNode_html_ab845f7ed4ed85e360b730df3450d1aab"><div class="ttname"><a href="classtvm_1_1RangeNode.html#ab845f7ed4ed85e360b730df3450d1aab">tvm::RangeNode::RangeNode</a></div><div class="ttdeci">RangeNode()</div><div class="ttdoc">constructor </div><div class="ttdef"><b>Definition:</b> expr.h:423</div></div>
 <div class="ttc" id="classtvm_1_1PrimExpr_html_a1098008618699c33adfbd19e582f9ffd"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a1098008618699c33adfbd19e582f9ffd">tvm::PrimExpr::dtype</a></div><div class="ttdeci">DataType dtype() const </div><div class="ttdef"><b>Definition:</b> expr.h:123</div></div>
-<div class="ttc" id="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01tvm_1_1Integer_01_4_html_a863930925e7354b87d35fde2ac310124"><div class="ttname"><a href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01tvm_1_1Integer_01_4.html#a863930925e7354b87d35fde2ac310124">tvm::runtime::PackedFuncValueConverter&lt; tvm::Integer &gt;::From</a></div><div class="ttdeci">static tvm::Integer From(const TVMPODValue_ &amp;val)</div><div class="ttdef"><b>Definition:</b> expr.h:509</div></div>
-<div class="ttc" id="classtvm_1_1RangeNode_html_a4922785883bc78fdcdaa8169c85e63c9"><div class="ttname"><a href="classtvm_1_1RangeNode.html#a4922785883bc78fdcdaa8169c85e63c9">tvm::RangeNode::VisitAttrs</a></div><div class="ttdeci">void VisitAttrs(AttrVisitor *v)</div><div class="ttdef"><b>Definition:</b> expr.h:422</div></div>
+<div class="ttc" id="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01tvm_1_1Integer_01_4_html_a863930925e7354b87d35fde2ac310124"><div class="ttname"><a href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01tvm_1_1Integer_01_4.html#a863930925e7354b87d35fde2ac310124">tvm::runtime::PackedFuncValueConverter&lt; tvm::Integer &gt;::From</a></div><div class="ttdeci">static tvm::Integer From(const TVMPODValue_ &amp;val)</div><div class="ttdef"><b>Definition:</b> expr.h:517</div></div>
+<div class="ttc" id="classtvm_1_1RangeNode_html_a4922785883bc78fdcdaa8169c85e63c9"><div class="ttname"><a href="classtvm_1_1RangeNode.html#a4922785883bc78fdcdaa8169c85e63c9">tvm::RangeNode::VisitAttrs</a></div><div class="ttdeci">void VisitAttrs(AttrVisitor *v)</div><div class="ttdef"><b>Definition:</b> expr.h:427</div></div>
 <div class="ttc" id="classtvm_1_1GlobalVarNode_html_a903642f4abfde8fccc0144f97a25751e"><div class="ttname"><a href="classtvm_1_1GlobalVarNode.html#a903642f4abfde8fccc0144f97a25751e">tvm::GlobalVarNode::VisitAttrs</a></div><div class="ttdeci">void VisitAttrs(AttrVisitor *v)</div><div class="ttdef"><b>Definition:</b> expr.h:196</div></div>
 <div class="ttc" id="classtvm_1_1PrimExprNode_html_a95af9234514ec5f11355db41524be7f9"><div class="ttname"><a href="classtvm_1_1PrimExprNode.html#a95af9234514ec5f11355db41524be7f9">tvm::PrimExprNode::dtype</a></div><div class="ttdeci">DataType dtype</div><div class="ttdoc">The runtime data type of the primitive expression. </div><div class="ttdef"><b>Definition:</b> expr.h:98</div></div>
 <div class="ttc" id="c__runtime__api_8h_html_a190e81769e805cca153514137a66e793ada22c3d9c62fa8f40d46e80ce83b96a1"><div class="ttname"><a href="c__runtime__api_8h.html#a190e81769e805cca153514137a66e793ada22c3d9c62fa8f40d46e80ce83b96a1">kTVMNullptr</a></div><div class="ttdef"><b>Definition:</b> c_runtime_api.h:109</div></div>
-<div class="ttc" id="classtvm_1_1IntImmNode_html_a5f94c4f2656fecd870e6c7e3933bf0bb"><div class="ttname"><a href="classtvm_1_1IntImmNode.html#a5f94c4f2656fecd870e6c7e3933bf0bb">tvm::IntImmNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const IntImmNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> expr.h:243</div></div>
-<div class="ttc" id="classtvm_1_1Bool_html_a35cd372573945f0dbb410fe54194c12e"><div class="ttname"><a href="classtvm_1_1Bool.html#a35cd372573945f0dbb410fe54194c12e">tvm::Bool::Bool</a></div><div class="ttdeci">Bool(bool value, Span span=Span())</div><div class="ttdef"><b>Definition:</b> expr.h:327</div></div>
-<div class="ttc" id="classtvm_1_1RangeNode_html_a64d94b3a2f18ab2e946926559c8a6a00"><div class="ttname"><a href="classtvm_1_1RangeNode.html#a64d94b3a2f18ab2e946926559c8a6a00">tvm::RangeNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const RangeNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> expr.h:427</div></div>
+<div class="ttc" id="classtvm_1_1IntImmNode_html_a5f94c4f2656fecd870e6c7e3933bf0bb"><div class="ttname"><a href="classtvm_1_1IntImmNode.html#a5f94c4f2656fecd870e6c7e3933bf0bb">tvm::IntImmNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const IntImmNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> expr.h:244</div></div>
+<div class="ttc" id="classtvm_1_1Bool_html_a35cd372573945f0dbb410fe54194c12e"><div class="ttname"><a href="classtvm_1_1Bool.html#a35cd372573945f0dbb410fe54194c12e">tvm::Bool::Bool</a></div><div class="ttdeci">Bool(bool value, Span span=Span())</div><div class="ttdef"><b>Definition:</b> expr.h:329</div></div>
+<div class="ttc" id="classtvm_1_1RangeNode_html_a64d94b3a2f18ab2e946926559c8a6a00"><div class="ttname"><a href="classtvm_1_1RangeNode.html#a64d94b3a2f18ab2e946926559c8a6a00">tvm::RangeNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const RangeNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> expr.h:433</div></div>
 <div class="ttc" id="classtvm_1_1Type_html"><div class="ttname"><a href="classtvm_1_1Type.html">tvm::Type</a></div><div class="ttdoc">Managed reference to TypeNode. </div><div class="ttdef"><b>Definition:</b> type.h:93</div></div>
 <div class="ttc" id="classtvm_1_1BaseExprNode_html_a831794c879d47c30cdd9cefd4f05d533"><div class="ttname"><a href="classtvm_1_1BaseExprNode.html#a831794c879d47c30cdd9cefd4f05d533">tvm::BaseExprNode::TVM_DECLARE_BASE_OBJECT_INFO</a></div><div class="ttdeci">TVM_DECLARE_BASE_OBJECT_INFO(BaseExprNode, Object)</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:109</div></div>
 <div class="ttc" id="classtvm_1_1GlobalVarNode_html"><div class="ttname"><a href="classtvm_1_1GlobalVarNode.html">tvm::GlobalVarNode</a></div><div class="ttdoc">Global variable that lives in the top-level module. </div><div class="ttdef"><b>Definition:</b> expr.h:191</div></div>
 <div class="ttc" id="classtvm_1_1RelayExprNode_html"><div class="ttname"><a href="classtvm_1_1RelayExprNode.html">tvm::RelayExprNode</a></div><div class="ttdoc">Base node of all non-primitive expressions. </div><div class="ttdef"><b>Definition:</b> expr.h:142</div></div>
-<div class="ttc" id="classtvm_1_1Integer_html_a8924d79df4414d035aafc92310fbc335"><div class="ttname"><a href="classtvm_1_1Integer.html#a8924d79df4414d035aafc92310fbc335">tvm::Integer::operator!=</a></div><div class="ttdeci">Bool operator!=(Enum other) const </div><div class="ttdef"><b>Definition:</b> expr.h:406</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html_a8924d79df4414d035aafc92310fbc335"><div class="ttname"><a href="classtvm_1_1Integer.html#a8924d79df4414d035aafc92310fbc335">tvm::Integer::operator!=</a></div><div class="ttdeci">Bool operator!=(Enum other) const </div><div class="ttdef"><b>Definition:</b> expr.h:408</div></div>
 <div class="ttc" id="object_8h_html_a782d0de62fbf75736e29c1e79c22c7f1"><div class="ttname"><a href="object_8h.html#a782d0de62fbf75736e29c1e79c22c7f1">TVM_DEFINE_NOTNULLABLE_OBJECT_REF_METHODS</a></div><div class="ttdeci">#define TVM_DEFINE_NOTNULLABLE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)</div><div class="ttdef"><b>Definition:</b> object.h:715</div></div>
-<div class="ttc" id="structtvm_1_1runtime_1_1PackedFuncValueConverter_html"><div class="ttname"><a href="structtvm_1_1runtime_1_1PackedFuncValueConverter.html">tvm::runtime::PackedFuncValueConverter</a></div><div class="ttdoc">Type trait to specify special value conversion rules from TVMArgValue and TVMRetValue. </div><div class="ttdef"><b>Definition:</b> packed_func.h:874</div></div>
+<div class="ttc" id="structtvm_1_1runtime_1_1PackedFuncValueConverter_html"><div class="ttname"><a href="structtvm_1_1runtime_1_1PackedFuncValueConverter.html">tvm::runtime::PackedFuncValueConverter</a></div><div class="ttdoc">Type trait to specify special value conversion rules from TVMArgValue and TVMRetValue. </div><div class="ttdef"><b>Definition:</b> packed_func.h:876</div></div>
 <div class="ttc" id="classtvm_1_1PrimExprNode_html"><div class="ttname"><a href="classtvm_1_1PrimExprNode.html">tvm::PrimExprNode</a></div><div class="ttdoc">Base node of all primitive expressions. </div><div class="ttdef"><b>Definition:</b> expr.h:82</div></div>
-<div class="ttc" id="classtvm_1_1Integer_html"><div class="ttname"><a href="classtvm_1_1Integer.html">tvm::Integer</a></div><div class="ttdoc">Container of constant int that adds more constructors. </div><div class="ttdef"><b>Definition:</b> expr.h:354</div></div>
-<div class="ttc" id="classtvm_1_1RangeNode_html"><div class="ttname"><a href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></div><div class="ttdoc">range over one dimension </div><div class="ttdef"><b>Definition:</b> expr.h:412</div></div>
+<div class="ttc" id="classtvm_1_1Integer_html"><div class="ttname"><a href="classtvm_1_1Integer.html">tvm::Integer</a></div><div class="ttdoc">Container of constant int that adds more constructors. </div><div class="ttdef"><b>Definition:</b> expr.h:356</div></div>
+<div class="ttc" id="classtvm_1_1RangeNode_html"><div class="ttname"><a href="classtvm_1_1RangeNode.html">tvm::RangeNode</a></div><div class="ttdoc">range over one dimension </div><div class="ttdef"><b>Definition:</b> expr.h:414</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/api/doxygen/ir_2module_8h_source.html b/docs/api/doxygen/ir_2module_8h_source.html
index af70fd2..a1860f4 100644
--- a/docs/api/doxygen/ir_2module_8h_source.html
+++ b/docs/api/doxygen/ir_2module_8h_source.html
@@ -89,7 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">module.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="ir_2module_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  [...]
+<a href="ir_2module_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  [...]
 <div class="ttc" id="ir_2function_8h_html"><div class="ttname"><a href="ir_2function_8h.html">function.h</a></div><div class="ttdoc">Function nodes. </div></div>
 <div class="ttc" id="classtvm_1_1IRModuleNode_html_affbad8fa2513bd33cf8ac7d95aee132e"><div class="ttname"><a href="classtvm_1_1IRModuleNode.html#affbad8fa2513bd33cf8ac7d95aee132e">tvm::IRModuleNode::VisitAttrs</a></div><div class="ttdeci">void VisitAttrs(AttrVisitor *v)</div><div class="ttdef"><b>Definition:</b> module.h:62</div></div>
 <div class="ttc" id="classtvm_1_1IRModuleNode_html_a4840f698deaffe0e96317a436dfd079f"><div class="ttname"><a href="classtvm_1_1IRModuleNode.html#a4840f698deaffe0e96317a436dfd079f">tvm::IRModuleNode::TVM_DECLARE_FINAL_OBJECT_INFO</a></div><div class="ttdeci">TVM_DECLARE_FINAL_OBJECT_INFO(IRModuleNode, Object)</div></div>
@@ -105,6 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1IRModuleNode_html_a48ba730bc22c3b7ab06fcc79d9f2ec9a"><div class="ttname"><a href="classtvm_1_1IRModuleNode.html#a48ba730bc22c3b7ab06fcc79d9f2ec9a">tvm::IRModuleNode::LookupTypeDef</a></div><div class="ttdeci">TypeData LookupTypeDef(const GlobalTypeVar &amp;var) const </div><div class="ttdoc">Look up a global type definition by its variable. </div></div>
 <div class="ttc" id="classtvm_1_1SHashReducer_html"><div class="ttname"><a href="classtvm_1_1SHashReducer.html">tvm::SHashReducer</a></div><div class="ttdoc">A Reducer class to reduce the structural hash value. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:102</div></div>
 <div class="ttc" id="classtvm_1_1IRModuleNode_html_a8e092c677ea11b29c1f19cf17be930d5"><div class="ttname"><a href="classtvm_1_1IRModuleNode.html#a8e092c677ea11b29c1f19cf17be930d5">tvm::IRModuleNode::Imports</a></div><div class="ttdeci">std::unordered_set&lt; String &gt; Imports() const </div><div class="ttdoc">The set of imported files. </div></div>
+<div class="ttc" id="namespacetvm_html_a1c4f14382b85bcfa57d9a3460db2354a"><div class="ttname"><a href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm::equal</a></div><div class="ttdeci">PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">equal </div></div>
 <div class="ttc" id="classtvm_1_1IRModuleNode_html_aabfd853e7dce2632dd2af0911418e2b1"><div class="ttname"><a href="classtvm_1_1IRModuleNode.html#aabfd853e7dce2632dd2af0911418e2b1">tvm::IRModuleNode::GetGlobalVar</a></div><div class="ttdeci">GlobalVar GetGlobalVar(const String &amp;str) const </div><div class="ttdoc">Lookup a global function by its variable. </div></div>
 <div class="ttc" id="classtvm_1_1GlobalTypeVar_html"><div class="ttname"><a href="classtvm_1_1GlobalTypeVar.html">tvm::GlobalTypeVar</a></div><div class="ttdoc">Managed reference to GlobalTypeVarNode. </div><div class="ttdef"><b>Definition:</b> type.h:298</div></div>
 <div class="ttc" id="source__map_8h_html"><div class="ttname"><a href="source__map_8h.html">source_map.h</a></div><div class="ttdoc">A map from source names to source code. </div></div>
@@ -136,7 +137,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="object_8h_html_af8330e3864503fb7c4133ae4d48fe4a2"><div class="ttname"><a href="object_8h.html#af8330e3864503fb7c4133ae4d48fe4a2">TVM_DEFINE_OBJECT_REF_COW_METHOD</a></div><div class="ttdeci">#define TVM_DEFINE_OBJECT_REF_COW_METHOD(ObjectName)</div><div class="ttdoc">Define CopyOnWrite function in an ObjectRef. </div><div class="ttdef"><b>Definition:</b> object.h:757</div></div>
 <div class="ttc" id="classtvm_1_1IRModuleNode_html_a63b73181faaa31a95e8d71e1cf5b80b2"><div class="ttname"><a href="classtvm_1_1IRModuleNode.html#a63b73181faaa31a95e8d71e1cf5b80b2">tvm::IRModuleNode::UpdateTypeDef</a></div><div class="ttdeci">void UpdateTypeDef(const GlobalTypeVar &amp;var, const TypeData &amp;type)</div><div class="ttdoc">Update a type definition in the global environment. </div></div>
 <div class="ttc" id="classtvm_1_1IRModuleNode_html_a73931fab441b0a8a8866547e504dbe65"><div class="ttname"><a href="classtvm_1_1IRModuleNode.html#a73931fab441b0a8a8866547e504dbe65">tvm::IRModuleNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const IRModuleNode *other, SEqualReducer equal) const </div></div>
-<div class="ttc" id="namespacetvm_1_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</div></div>
 <div class="ttc" id="node_2container_8h_html"><div class="ttname"><a href="node_2container_8h.html">container.h</a></div><div class="ttdoc">Array/Map container in the DSL graph. </div></div>
 <div class="ttc" id="classtvm_1_1IRModuleNode_html_a5e21563666240e1deb1f92807d910268"><div class="ttname"><a href="classtvm_1_1IRModuleNode.html#a5e21563666240e1deb1f92807d910268">tvm::IRModuleNode::Import</a></div><div class="ttdeci">void Import(const String &amp;path)</div><div class="ttdoc">Import Relay code from the file at path. </div></div>
 <div class="ttc" id="classtvm_1_1IRModule_html"><div class="ttname"><a href="classtvm_1_1IRModule.html">tvm::IRModule</a></div><div class="ttdoc">Managed reference class to IRModuleNode. </div><div class="ttdef"><b>Definition:</b> module.h:280</div></div>
diff --git a/docs/api/doxygen/ir_2op_8h_source.html b/docs/api/doxygen/ir_2op_8h_source.html
index bbcdb33..ae331f4 100644
--- a/docs/api/doxygen/ir_2op_8h_source.html
+++ b/docs/api/doxygen/ir_2op_8h_source.html
@@ -89,9 +89,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">op.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="ir_2op_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 cont [...]
+<a href="ir_2op_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 cont [...]
 <div class="ttc" id="classtvm_1_1TypeReporter_html"><div class="ttname"><a href="classtvm_1_1TypeReporter.html">tvm::TypeReporter</a></div><div class="ttdoc">Container class of TypeReporter. </div><div class="ttdef"><b>Definition:</b> type_relation.h:145</div></div>
-<div class="ttc" id="classtvm_1_1runtime_1_1TVMRetValue_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMRetValue.html">tvm::runtime::TVMRetValue</a></div><div class="ttdoc">Return Value container, Unlike TVMArgValue, which only holds reference and do not delete the underlyi...</div><div class="ttdef"><b>Definition:</b> packed_func.h:571</div></div>
+<div class="ttc" id="classtvm_1_1runtime_1_1TVMRetValue_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1TVMRetValue.html">tvm::runtime::TVMRetValue</a></div><div class="ttdoc">Return Value container, Unlike TVMArgValue, which only holds reference and do not delete the underlyi...</div><div class="ttdef"><b>Definition:</b> packed_func.h:573</div></div>
 <div class="ttc" id="classtvm_1_1OpNode_html_a4103a03a5b962b019e8274ddad61dc38"><div class="ttname"><a href="classtvm_1_1OpNode.html#a4103a03a5b962b019e8274ddad61dc38">tvm::OpNode::name</a></div><div class="ttdeci">String name</div><div class="ttdoc">name of the operator </div><div class="ttdef"><b>Definition:</b> op.h:61</div></div>
 <div class="ttc" id="classtvm_1_1TypeRelationNode_html"><div class="ttname"><a href="classtvm_1_1TypeRelationNode.html">tvm::TypeRelationNode</a></div><div class="ttdoc">User defined type relation, it is an input-output relation on types. </div><div class="ttdef"><b>Definition:</b> type_relation.h:185</div></div>
 <div class="ttc" id="classtvm_1_1OpNode_html_ade027d3176f48e7127be6ff08c723306"><div class="ttname"><a href="classtvm_1_1OpNode.html#ade027d3176f48e7127be6ff08c723306">tvm::OpNode::TVM_DECLARE_FINAL_OBJECT_INFO</a></div><div class="ttdeci">TVM_DECLARE_FINAL_OBJECT_INFO(OpNode, RelayExprNode)</div></div>
@@ -105,6 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="type__relation_8h_html"><div class="ttname"><a href="type__relation_8h.html">type_relation.h</a></div><div class="ttdoc">Type relation and function for type inference(checking). </div></div>
 <div class="ttc" id="classtvm_1_1OpNode_html_abe8c1e8f86a4b62187a233174edce575"><div class="ttname"><a href="classtvm_1_1OpNode.html#abe8c1e8f86a4b62187a233174edce575">tvm::OpNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> op.h:108</div></div>
 <div class="ttc" id="classtvm_1_1OpRegEntry_html_a8959989d50f0d2e5f85a87f7041a380f"><div class="ttname"><a href="classtvm_1_1OpRegEntry.html#a8959989d50f0d2e5f85a87f7041a380f">tvm::OpRegEntry::add_argument</a></div><div class="ttdeci">OpRegEntry &amp; add_argument(const std::string &amp;name, const std::string &amp;type, const std::string &amp;description)</div><div class="ttdoc">Add argument information to the function. </div><div class="ttdef"><b>Definition:</b> op.h:381</div></div>
+<div class="ttc" id="namespacetvm_html_a1c4f14382b85bcfa57d9a3460db2354a"><div class="ttname"><a href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm::equal</a></div><div class="ttdeci">PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">equal </div></div>
 <div class="ttc" id="classtvm_1_1Op_html_afde3bc925d4d4c7ea09d4da50fc32c66"><div class="ttname"><a href="classtvm_1_1Op.html#afde3bc925d4d4c7ea09d4da50fc32c66">tvm::Op::Op</a></div><div class="ttdeci">Op()</div><div class="ttdoc">default constructor </div><div class="ttdef"><b>Definition:</b> op.h:168</div></div>
 <div class="ttc" id="classtvm_1_1TypeConstraint_html"><div class="ttname"><a href="classtvm_1_1TypeConstraint.html">tvm::TypeConstraint</a></div><div class="ttdoc">Managed reference to TypeConstraintNode. </div><div class="ttdef"><b>Definition:</b> type.h:388</div></div>
 <div class="ttc" id="classtvm_1_1EnvFunc_html_abd227d214d109e1a196d46a4fbb5beae"><div class="ttname"><a href="classtvm_1_1EnvFunc.html#abd227d214d109e1a196d46a4fbb5beae">tvm::EnvFunc::Get</a></div><div class="ttdeci">static EnvFunc Get(const String &amp;name)</div><div class="ttdoc">Get a global function based on the name. </div></div>
@@ -139,7 +140,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="attr__registry__map_8h_html"><div class="ttname"><a href="attr__registry__map_8h.html">attr_registry_map.h</a></div><div class="ttdoc">Attribute map used in registry. </div></div>
 <div class="ttc" id="classtvm_1_1Op_html_adecc41ad59962134dce22a8211ee19f2"><div class="ttname"><a href="classtvm_1_1Op.html#adecc41ad59962134dce22a8211ee19f2">tvm::Op::operator-&gt;</a></div><div class="ttdeci">const OpNode * operator-&gt;() const </div><div class="ttdoc">access the internal node container </div><div class="ttdef"><b>Definition:</b> op.h:367</div></div>
 <div class="ttc" id="classtvm_1_1OpNode_html_af08bec95b94b4fe302e8c0fe70cab5e9"><div class="ttname"><a href="classtvm_1_1OpNode.html#af08bec95b94b4fe302e8c0fe70cab5e9">tvm::OpNode::description</a></div><div class="ttdeci">String description</div><div class="ttdoc">detailed description of the operator This can be used to generate docstring automatically for the ope...</div><div class="ttdef"><b>Definition:</b> op.h:68</div></div>
-<div class="ttc" id="namespacetvm_1_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</div></div>
 <div class="ttc" id="classtvm_1_1OpRegEntry_html_a31b037ff8212469a337b891c777418c7"><div class="ttname"><a href="classtvm_1_1OpRegEntry.html#a31b037ff8212469a337b891c777418c7">tvm::OpRegEntry::describe</a></div><div class="ttdeci">OpRegEntry &amp; describe(const std::string &amp;descr)</div><div class="ttdoc">setter function during registration Set the description of operator </div><div class="ttdef"><b>Definition:</b> op.h:376</div></div>
 <div class="ttc" id="classtvm_1_1OpNode_html_a4b7f1c6f18ede931328377bb8794c1bc"><div class="ttname"><a href="classtvm_1_1OpNode.html#a4b7f1c6f18ede931328377bb8794c1bc">tvm::OpNode::attrs_type_index</a></div><div class="ttdeci">uint32_t attrs_type_index</div><div class="ttdoc">attribute type index, this field varies in each run and is not exposed to frontend. </div><div class="ttdef"><b>Definition:</b> op.h:80</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Registry_html_aed802ed365a13a9cef9de4e9f601b62a"><div class="ttname"><a href="classtvm_1_1runtime_1_1Registry.html#aed802ed365a13a9cef9de4e9f601b62a">tvm::runtime::Registry::set_body</a></div><div class="ttdeci">Registry &amp; set_body(PackedFunc f)</div><div class="ttdoc">set the body of the function to be f </div></div>
diff --git a/docs/api/doxygen/ir_2type_8h_source.html b/docs/api/doxygen/ir_2type_8h_source.html
index 424173d..65c798e 100644
--- a/docs/api/doxygen/ir_2type_8h_source.html
+++ b/docs/api/doxygen/ir_2type_8h_source.html
@@ -89,7 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">type.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="ir_2type_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="ir_2type_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_1relay_html_af40ca6124bc2e88f2323eeb79d326cc0"><div class="ttname"><a href="namespacetvm_1_1relay.html#af40ca6124bc2e88f2323eeb79d326cc0">tvm::relay::Span</a></div><div class="ttdeci">tvm::Span Span</div><div class="ttdef"><b>Definition:</b> base.h:65</div></div>
 <div class="ttc" id="classtvm_1_1RelayRefTypeNode_html_abe200e4f22df8db45ac083544df1f08f"><div class="ttname"><a href="classtvm_1_1RelayRefTypeNode.html#abe200e4f22df8db45ac083544df1f08f">tvm::RelayRefTypeNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const RelayRefTypeNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> type.h:526</div></div>
 <div class="ttc" id="classtvm_1_1RelayRefTypeNode_html_a70e4a9a304f6cd763ea25168fbea43d4"><div class="ttname"><a href="classtvm_1_1RelayRefTypeNode.html#a70e4a9a304f6cd763ea25168fbea43d4">tvm::RelayRefTypeNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> type.h:530</div></div>
@@ -111,6 +111,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1SHashReducer_html"><div class="ttname"><a href="classtvm_1_1SHashReducer.html">tvm::SHashReducer</a></div><div class="ttdoc">A Reducer class to reduce the structural hash value. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:102</div></div>
 <div class="ttc" id="classtvm_1_1GlobalTypeVarNode_html"><div class="ttname"><a href="classtvm_1_1GlobalTypeVarNode.html">tvm::GlobalTypeVarNode</a></div><div class="ttdoc">A global type variable that is used for defining new types or type aliases. </div><div class="ttdef"><b>Definition:</b> type.h:264</div></div>
 <div class="ttc" id="classtvm_1_1PrimTypeNode_html_ae1ecf23e5d7a4b5338fadcf177d9ef96"><div class="ttname"><a href="classtvm_1_1PrimTypeNode.html#ae1ecf23e5d7a4b5338fadcf177d9ef96">tvm::PrimTypeNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const PrimTypeNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> type.h:115</div></div>
+<div class="ttc" id="namespacetvm_html_a1c4f14382b85bcfa57d9a3460db2354a"><div class="ttname"><a href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm::equal</a></div><div class="ttdeci">PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">equal </div></div>
 <div class="ttc" id="classtvm_1_1PrimTypeNode_html_af08c6e0fed4402ffeed9a6fe69cf9722"><div class="ttname"><a href="classtvm_1_1PrimTypeNode.html#af08c6e0fed4402ffeed9a6fe69cf9722">tvm::PrimTypeNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> type.h:119</div></div>
 <div class="ttc" id="classtvm_1_1TypeConstraint_html"><div class="ttname"><a href="classtvm_1_1TypeConstraint.html">tvm::TypeConstraint</a></div><div class="ttdoc">Managed reference to TypeConstraintNode. </div><div class="ttdef"><b>Definition:</b> type.h:388</div></div>
 <div class="ttc" id="classtvm_1_1IncompleteTypeNode_html_ab5f37175c1fd0dbbbedc2edaa23d33dc"><div class="ttname"><a href="classtvm_1_1IncompleteTypeNode.html#ab5f37175c1fd0dbbbedc2edaa23d33dc">tvm::IncompleteTypeNode::kind</a></div><div class="ttdeci">TypeKind kind</div><div class="ttdoc">kind of the type. </div><div class="ttdef"><b>Definition:</b> type.h:476</div></div>
@@ -163,7 +164,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="object_8h_html_a3aea9b3f65aeb9150c0fa7800e5573c6"><div class="ttname"><a href="object_8h.html#a3aea9b3f65aeb9150c0fa7800e5573c6">TVM_DECLARE_FINAL_OBJECT_INFO</a></div><div class="ttdeci">#define TVM_DECLARE_FINAL_OBJECT_INFO(TypeName, ParentType)</div><div class="ttdoc">helper macro to declare type information in a final class. </div><div class="ttdef"><b>Definition:</b> object.h:658</div></div>
 <div class="ttc" id="classtvm_1_1TypeNode_html_ab02f7d165755f57689f986aca467a7e5"><div class="ttname"><a href="classtvm_1_1TypeNode.html#ab02f7d165755f57689f986aca467a7e5">tvm::TypeNode::_type_has_method_sequal_reduce</a></div><div class="ttdeci">static constexpr const bool _type_has_method_sequal_reduce</div><div class="ttdef"><b>Definition:</b> type.h:83</div></div>
 <div class="ttc" id="data__type_8h_html"><div class="ttname"><a href="data__type_8h.html">data_type.h</a></div></div>
-<div class="ttc" id="namespacetvm_1_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</div></div>
 <div class="ttc" id="node_2container_8h_html"><div class="ttname"><a href="node_2container_8h.html">container.h</a></div><div class="ttdoc">Array/Map container in the DSL graph. </div></div>
 <div class="ttc" id="classtvm_1_1TypeVarNode_html"><div class="ttname"><a href="classtvm_1_1TypeVarNode.html">tvm::TypeVarNode</a></div><div class="ttdoc">Type parameter in functions. </div><div class="ttdef"><b>Definition:</b> type.h:213</div></div>
 <div class="ttc" id="classtvm_1_1PointerTypeNode_html_a36cf8709c3b50510af894bf57161ab75"><div class="ttname"><a href="classtvm_1_1PointerTypeNode.html#a36cf8709c3b50510af894bf57161ab75">tvm::PointerTypeNode::SHashReduce</a></div><div class="ttdeci">void SHashReduce(SHashReducer hash_reduce) const </div><div class="ttdef"><b>Definition:</b> type.h:163</div></div>
diff --git a/docs/api/doxygen/iter__affine__map_8h_source.html b/docs/api/doxygen/iter__affine__map_8h_source.html
index ddcc224..4cf0386 100644
--- a/docs/api/doxygen/iter__affine__map_8h_source.html
+++ b/docs/api/doxygen/iter__affine__map_8h_source.html
@@ -89,7 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">iter_affine_map.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="iter__affine__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"> * o [...]
+<a href="iter__affine__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"> * o [...]
 <div class="ttc" id="classtvm_1_1arith_1_1IterSplitExprNode_html_a4e11baede18e438a30173da6e77067f6"><div class="ttname"><a href="classtvm_1_1arith_1_1IterSplitExprNode.html#a4e11baede18e438a30173da6e77067f6">tvm::arith::IterSplitExprNode::SEqualReduce</a></div><div class="ttdeci">bool SEqualReduce(const IterSplitExprNode *other, SEqualReducer equal) const </div><div class="ttdef"><b>Definition:</b> iter_affine_map.h:165</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IterSplitExpr_html"><div class="ttname"><a href="classtvm_1_1arith_1_1IterSplitExpr.html">tvm::arith::IterSplitExpr</a></div><div class="ttdoc">Managed reference to IterSplitExprNode. </div><div class="ttdef"><b>Definition:</b> iter_affine_map.h:185</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IterSumExprNode_html"><div class="ttname"><a href="classtvm_1_1arith_1_1IterSumExprNode.html">tvm::arith::IterSumExprNode</a></div><div class="ttdoc">Fuse multiple iterators by summing them with scaling. </div><div class="ttdef"><b>Definition:</b> iter_affine_map.h:217</div></div>
@@ -103,6 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <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_1SHashReducer_html"><div class="ttname"><a href="classtvm_1_1SHashReducer.html">tvm::SHashReducer</a></div><div class="ttdoc">A Reducer class to reduce the structural hash value. </div><div class="ttdef"><b>Definition:</b> structural_hash.h:102</div></div>
 <div class="ttc" id="var_8h_html"><div class="ttname"><a href="var_8h.html">var.h</a></div><div class="ttdoc">Variables in the TIR. </div></div>
+<div class="ttc" id="namespacetvm_html_a1c4f14382b85bcfa57d9a3460db2354a"><div class="ttname"><a href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm::equal</a></div><div class="ttdeci">PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">equal </div></div>
 <div class="ttc" id="analyzer_8h_html"><div class="ttname"><a href="analyzer_8h.html">analyzer.h</a></div><div class="ttdoc">Algebra expression simplifications. </div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IterSplitExprNode_html_a93c760bb7a5af0c7c442dc879d7bc55a"><div class="ttname"><a href="classtvm_1_1arith_1_1IterSplitExprNode.html#a93c760bb7a5af0c7c442dc879d7bc55a">tvm::arith::IterSplitExprNode::scale</a></div><div class="ttdeci">PrimExpr scale</div><div class="ttdoc">Additional scale. </div><div class="ttdef"><b>Definition:</b> iter_affine_map.h:155</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IterMarkNode_html_a8b885a675c88e5a5d142fa68bcba048a"><div class="ttname"><a href="classtvm_1_1arith_1_1IterMarkNode.html#a8b885a675c88e5a5d142fa68bcba048a">tvm::arith::IterMarkNode::source</a></div><div class="ttdeci">PrimExpr source</div><div class="ttdoc">The source expression, can either be a IterSumExpr or a Var. </div><div class="ttdef"><b>Definition:</b> iter_affine_map.h:96</div></div>
@@ -127,7 +128,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="object_8h_html_af8330e3864503fb7c4133ae4d48fe4a2"><div class="ttname"><a href="object_8h.html#af8330e3864503fb7c4133ae4d48fe4a2">TVM_DEFINE_OBJECT_REF_COW_METHOD</a></div><div class="ttdeci">#define TVM_DEFINE_OBJECT_REF_COW_METHOD(ObjectName)</div><div class="ttdoc">Define CopyOnWrite function in an ObjectRef. </div><div class="ttdef"><b>Definition:</b> object.h:757</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IterMarkNode_html"><div class="ttname"><a href="classtvm_1_1arith_1_1IterMarkNode.html">tvm::arith::IterMarkNode</a></div><div class="ttdoc">Mark the source as an iterator in [0, extent). </div><div class="ttdef"><b>Definition:</b> iter_affine_map.h:90</div></div>
 <div class="ttc" id="object_8h_html_a3aea9b3f65aeb9150c0fa7800e5573c6"><div class="ttname"><a href="object_8h.html#a3aea9b3f65aeb9150c0fa7800e5573c6">TVM_DECLARE_FINAL_OBJECT_INFO</a></div><div class="ttdeci">#define TVM_DECLARE_FINAL_OBJECT_INFO(TypeName, ParentType)</div><div class="ttdoc">helper macro to declare type information in a final class. </div><div class="ttdef"><b>Definition:</b> object.h:658</div></div>
-<div class="ttc" id="namespacetvm_1_1topi_html_aad662b8455d6393f5bbf54a03c5b5df4"><div class="ttname"><a href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::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:396</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IterMapExprNode_html_ab8a4d68ae04e4269485c18f97cd3db21"><div class="ttname"><a href="classtvm_1_1arith_1_1IterMapExprNode.html#ab8a4d68ae04e4269485c18f97cd3db21">tvm::arith::IterMapExprNode::_type_child_slots</a></div><div class="ttdeci">static constexpr const uint32_t _type_child_slots</div><div class="ttdef"><b>Definition:</b> iter_affine_map.h:71</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IterMapExprNode_html_a3acb5f8da15c333d417702a0175c33f8"><div class="ttname"><a href="classtvm_1_1arith_1_1IterMapExprNode.html#a3acb5f8da15c333d417702a0175c33f8">tvm::arith::IterMapExprNode::TVM_DECLARE_BASE_OBJECT_INFO</a></div><div class="ttdeci">TVM_DECLARE_BASE_OBJECT_INFO(IterMapExprNode, PrimExprNode)</div></div>
 <div class="ttc" id="classtvm_1_1arith_1_1IterMapExpr_html"><div class="ttname"><a href="classtvm_1_1arith_1_1IterMapExpr.html">tvm::arith::IterMapExpr</a></div><div class="ttdoc">Managed reference to IterMapExprNode. </div><div class="ttdef"><b>Definition:</b> iter_affine_map.h:79</div></div>
diff --git a/docs/api/doxygen/local__response__norm_8h_source.html b/docs/api/doxygen/local__response__norm_8h_source.html
index a8b1766..0cd1491 100644
--- a/docs/api/doxygen/local__response__norm_8h_source.html
+++ b/docs/api/doxygen/local__response__norm_8h_source.html
@@ -89,24 +89,24 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">local_response_norm.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="local__response__norm_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="namespacetvm_1_1topi_html_a582bc98a3956894e8e90a3a3da929568"><div class="ttname"><a href="namespacetvm_1_1topi.html#a582bc98a3956894e8e90a3a3da929568">tvm::topi::divide</a></div><div class="ttdeci">tvm::PrimExpr divide(const tvm::PrimExpr &amp;a, const tvm::PrimExpr &amp;b)</div><div class="ttdef"><b>Definition:</b> broadcast.h:239</div></div>
+<a href="local__response__norm_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="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="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="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="namespacetvm_html_a880f0cd15891153430b669f0b4eca2fe"><div class="ttname"><a href="namespacetvm.html#a880f0cd15891153430b669f0b4eca2fe">tvm::pow</a></div><div class="ttdeci">PrimExpr pow(PrimExpr x, PrimExpr y)</div><div class="ttdoc">Calculate power(x, y) </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:88</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_1_1nn_html_ac3d8de9144f915a5dd27dcb70c0abdd4"><div class="ttname"><a href="namespacetvm_1_1topi_1_1nn.html#ac3d8de9144f915a5dd27dcb70c0abdd4">tvm::topi::nn::lrn</a></div><div class="ttdeci">Tensor lrn(const Tensor &amp;data, int size, int axis=1, float alpha=0.0001, float beta=0.75, float bias=2, std::string name=&quot;tensor&quot;, std::string tag=kBroadcast)</div><div class="ttdoc">Local response normalization inference operator. </div><div cla [...]
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html_ab5db2ee9a8be71931324dac552be24c4"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html#ab5db2ee9a8be71931324dac552be24c4">tvm::runtime::Array::Set</a></div><div class="ttdeci">void Set(int64_t i, T value)</div><div class="ttdoc">set i-th element of the array. </div><div class="ttdef"><b>Definition:</b> container.h:857</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a13aaf23f0ab77f1ed4a7d4b7816bf210"><div class="ttname"><a href="namespacetvm_1_1topi.html#a13aaf23f0ab77f1ed4a7d4b7816bf210">tvm::topi::kBroadcast</a></div><div class="ttdeci">constexpr auto kBroadcast</div><div class="ttdef"><b>Definition:</b> tags.h:36</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:443</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:449</div></div>
+<div class="ttc" id="namespacetvm_html_a16f9cd9219b505e2cc05c5a7558ac61f"><div class="ttname"><a href="namespacetvm.html#a16f9cd9219b505e2cc05c5a7558ac61f">tvm::div</a></div><div class="ttdeci">PrimExpr div(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">compute division in C semantics. </div></div>
+<div class="ttc" id="namespacetvm_html_afdad0c0329bd39949ba8d296cfb85d76"><div class="ttname"><a href="namespacetvm.html#afdad0c0329bd39949ba8d296cfb85d76">tvm::sum</a></div><div class="ttdeci">PrimExpr sum(PrimExpr source, Array&lt; tir::IterVar &gt; axis, Array&lt; PrimExpr &gt; init={}, Span span=Span())</div><div class="ttdoc">sum of of source expression over axis </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contigious sequence of ObjectRefs. </div><div class="ttdef"><b>Definition:</b> container.h:560</div></div>
-<div class="ttc" id="namespacetvm_html_a40fcc9952e1ff01a76f3b75dbd368fc1"><div class="ttname"><a href="namespacetvm.html#a40fcc9952e1ff01a76f3b75dbd368fc1">tvm::div</a></div><div class="ttdeci">PrimExpr div(PrimExpr a, PrimExpr b)</div><div class="ttdoc">compute division in C semantics. </div></div>
 <div class="ttc" id="namespacetvm_1_1te_html_aae384e9b73c2271905486e4a74b69265"><div class="ttname"><a href="namespacetvm_1_1te.html#aae384e9b73c2271905486e4a74b69265">tvm::te::reduce_axis</a></div><div class="ttdeci">IterVar reduce_axis(Range dom, std::string name=&quot;rv&quot;)</div><div class="ttdoc">Create a new IterVar for reduction operations. </div></div>
 <div class="ttc" id="namespacetvm_1_1topi_html_a3305d377f96cd20c23032eeada2756d5"><div class="ttname"><a href="namespacetvm_1_1topi.html#a3305d377f96cd20c23032eeada2756d5">tvm::topi::pad</a></div><div class="ttdeci">tvm::te::Tensor pad(const tvm::te::Tensor &amp;t, const tvm::Array&lt; tvm::PrimExpr &gt; &amp;pad_before, tvm::Array&lt; tvm::PrimExpr &gt; pad_after=tvm::Array&lt; tvm::PrimExpr &gt;(), PrimExpr pad_value=PrimExpr(), std::string name=&quot;T_pad&quot;, std::string tag=kElem [...]
 <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="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 class="ttc" id="tags_8h_html"><div class="ttname"><a href="tags_8h.html">tags.h</a></div><div class="ttdoc">External function interface to rocBLAS libraries. </div></div>
 <div class="ttc" id="namespacetvm_1_1te_html_afe4f57aeb3dd5ae9c0b58135e14d67ca"><div class="ttname"><a href="namespacetvm_1_1te.html#afe4f57aeb3dd5ae9c0b58135e14d67ca">tvm::te::compute</a></div><div class="ttdeci">Tensor compute(Array&lt; PrimExpr &gt; shape, FCompute fcompute, std::string name=&quot;tensor&quot;, std::string tag=&quot;&quot;, Map&lt; String, ObjectRef &gt; attrs={})</div><div class="ttdoc">Construct a new tensor by computing over shape, using the computation rule: resul [...]
+<div class="ttc" id="namespacetvm_html_a5f6532d705be039030e980bbbf81b096"><div class="ttname"><a href="namespacetvm.html#a5f6532d705be039030e980bbbf81b096">tvm::pow</a></div><div class="ttdeci">PrimExpr pow(PrimExpr x, PrimExpr y, Span span=Span())</div><div class="ttdoc">Calculate power(x, y) </div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/api/doxygen/mapping_8h_source.html b/docs/api/doxygen/mapping_8h_source.html
index f36718a..99c35f9 100644
--- a/docs/api/doxygen/mapping_8h_source.html
+++ b/docs/api/doxygen/mapping_8h_source.html
@@ -91,7 +91,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="contents">
 <a href="mapping_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 con [...]
 <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="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_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:88</div></div>
 <div class="ttc" id="namespacetvm_1_1topi_1_1nn_html_acaf3bc4e89fc55b8444d2550d25f4f22"><div class="ttname"><a href="namespacetvm_1_1topi_1_1nn.html#acaf3bc4e89fc55b8444d2550d25f4f22">tvm::topi::nn::scale_shift_nhwc</a></div><div class="ttdeci">Tensor scale_shift_nhwc(const Tensor &amp;x, const Tensor &amp;scale, const Tensor &amp;shift, std::string name=&quot;ScaleShift&quot;, std::string tag=kBroadcast)</div><div class="ttdoc">Scale and shift with NHWC order. </div><div class="ttdef">< [...]
 <div class="ttc" id="namespacetvm_1_1topi_1_1nn_html_a07b8a04f27f17af58dd9f18218cfe081"><div class="ttname"><a href="namespacetvm_1_1topi_1_1nn.html#a07b8a04f27f17af58dd9f18218cfe081">tvm::topi::nn::scale_shift_nchw</a></div><div class="ttdeci">Tensor scale_shift_nchw(const Tensor &amp;x, const Tensor &amp;scale, const Tensor &amp;shift, std::string name=&quot;ScaleShift&quot;, std::string tag=kBroadcast)</div><div class="ttdoc">Scale and shift with NCHW order. </div><div class="ttdef">< [...]
 <div class="ttc" id="namespacetvm_1_1topi_html_a13aaf23f0ab77f1ed4a7d4b7816bf210"><div class="ttname"><a href="namespacetvm_1_1topi.html#a13aaf23f0ab77f1ed4a7d4b7816bf210">tvm::topi::kBroadcast</a></div><div class="ttdeci">constexpr auto kBroadcast</div><div class="ttdef"><b>Definition:</b> tags.h:36</div></div>
diff --git a/docs/api/doxygen/namespacemembers.html b/docs/api/doxygen/namespacemembers.html
index b85499a..cbc9182 100644
--- a/docs/api/doxygen/namespacemembers.html
+++ b/docs/api/doxygen/namespacemembers.html
@@ -123,15 +123,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
 <li>abs()
-: <a class="el" href="namespacetvm.html#a84d274191adb24d2acb39064c1fbec52">tvm</a>
+: <a class="el" href="namespacetvm.html#ab2a3c98ef29937defd6accb9b171a940">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a4fc10ed824cfc533c3f22cd682d13467">tvm::topi</a>
 </li>
 <li>acos()
-: <a class="el" href="namespacetvm.html#a3fc8c87ca0b1d1baa2adbcbb2da3869d">tvm</a>
+: <a class="el" href="namespacetvm.html#aa8e1cc91eb14b427e3018836d82e15e6">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a53ee5ec6de9d90d96cf54898e890dcc9">tvm::topi</a>
 </li>
 <li>acosh()
-: <a class="el" href="namespacetvm.html#a867390323ef93eaa05fedc0770b0da0b">tvm</a>
+: <a class="el" href="namespacetvm.html#af38d8633e3508033faa7bd60d8232bfe">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a27d7acbeefa41cfaec9b8a397295572a">tvm::topi</a>
 </li>
 <li>adaptive_pool()
@@ -144,7 +144,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi_1_1nn.html#a3fb74f1c3df6edf17c9a3f1e122f84fe">tvm::topi::nn</a>
 </li>
 <li>add()
-: <a class="el" href="namespacetvm_1_1topi.html#aa7d7e1d5966e6de6b29c902458a421e8">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#ae2794f261657780b2af4208b95d9cfcb">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#aa7d7e1d5966e6de6b29c902458a421e8">tvm::topi</a>
 </li>
 <li>address_of()
 : <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a700b7018f2c1f1fba8b4e28f264d8bbb">tvm::tir::builtin</a>
@@ -156,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a6d9189f6ceb05cf0a309dbe3f2730b16">tvm::topi</a>
 </li>
 <li>all()
-: <a class="el" href="namespacetvm.html#a5bbd93564931490e8854f19c4f610966">tvm</a>
+: <a class="el" href="namespacetvm.html#adeeaff4fb29f75a9da8ff4d67723c693">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ad299ebf7fc4294a1e8391fbfe268dfa5">tvm::topi</a>
 , <a class="el" href="namespacetvm_1_1topi_1_1nn.html#a93ec4d667dc49c109a0ccb16f6c6d05b">tvm::topi::nn</a>
 </li>
@@ -173,7 +174,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#a64e0426cfa5887f11769a057c09ce8ba">tvm::relay::transform</a>
 </li>
 <li>any()
-: <a class="el" href="namespacetvm.html#a1ff6a87d9ea4b883f6ee2ea8611da94c">tvm</a>
+: <a class="el" href="namespacetvm.html#a5efd9942cdee5a56cfc438ba523c04f0">tvm</a>
 </li>
 <li>Any
 : <a class="el" href="namespacetvm_1_1relay.html#abe473e7f103d7aa63b7b09fee09df932">tvm::relay</a>
@@ -212,25 +213,25 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1arith.html#aa4b593dc5d590eab7df2abdca7271b34">tvm::arith</a>
 </li>
 <li>asin()
-: <a class="el" href="namespacetvm.html#a30a9f4cd46514365e7b2ad0fa66ad14a">tvm</a>
+: <a class="el" href="namespacetvm.html#a9eabd3011b72041605ac7475094c87b1">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a545ce84ae38372484e61bee5a7c9f219">tvm::topi</a>
 </li>
 <li>asinh()
-: <a class="el" href="namespacetvm.html#ac20dad5eb9d4bb49ce0b152df3b1db9b">tvm</a>
+: <a class="el" href="namespacetvm.html#a52a4f309e25bcb51c6038f6e3ee931ec">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#aeabe0543c009315fc97b8fb3df92b376">tvm::topi</a>
 </li>
 <li>AsText()
 : <a class="el" href="namespacetvm.html#ad0e4314dd85303aa5e10d452e4c9db54">tvm</a>
 </li>
 <li>atan()
-: <a class="el" href="namespacetvm.html#a0a4e38b4b6d9f7396f2eafa680f98bd8">tvm</a>
+: <a class="el" href="namespacetvm.html#a475b388b9a19d05dca849707d74636a7">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ae6359efdf50839f448d17f1ce8e64b55">tvm::topi</a>
 </li>
 <li>atan2()
-: <a class="el" href="namespacetvm.html#a2def28d20708210b32fd5bfa5cdd6388">tvm</a>
+: <a class="el" href="namespacetvm.html#a350f9808d53b5fd9ad5c4c50bb76d700">tvm</a>
 </li>
 <li>atanh()
-: <a class="el" href="namespacetvm.html#a0071b288214f90cd96aca48a2bc8e277">tvm</a>
+: <a class="el" href="namespacetvm.html#ab72a6b6a2d0c2aa3f6a95f60dc831493">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a0fe91ddd730e2f64fab60e863cfa619b">tvm::topi</a>
 </li>
 <li>AttachType
diff --git a/docs/api/doxygen/namespacemembers_b.html b/docs/api/doxygen/namespacemembers_b.html
index 5497a5f..2d7b466 100644
--- a/docs/api/doxygen/namespacemembers_b.html
+++ b/docs/api/doxygen/namespacemembers_b.html
@@ -154,19 +154,25 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 , <a class="el" href="namespacetvm_1_1relay.html#ad7cfa0b6a4537989b886d47767526726">tvm::relay</a>
 </li>
 <li>bitwise_and()
-: <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a0e633f53c50e14d7e2fc07636a223309">tvm::tir::builtin</a>
-, <a class="el" href="namespacetvm_1_1topi.html#a76eb868ecbe50d90cdf3506aaff34b01">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#acebb0c446b76d5a28c3b1b55f827c86e">tvm</a>
+, <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a0e633f53c50e14d7e2fc07636a223309">tvm::tir::builtin</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a56b9392fff0e4e7977017974affdbb99">tvm::topi</a>
+</li>
+<li>bitwise_neg()
+: <a class="el" href="namespacetvm.html#a3f6d8fba545c2944efc83b57e6190459">tvm</a>
 </li>
 <li>bitwise_not()
 : <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a091ef99dc63f6945588dbb81c968ca15">tvm::tir::builtin</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a99f3fd2edfd74113c83bc9fb98e8aca1">tvm::topi</a>
 </li>
 <li>bitwise_or()
-: <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a5b0f4de023bfe86e9510036028ea1580">tvm::tir::builtin</a>
-, <a class="el" href="namespacetvm_1_1topi.html#a7480497cb7909808004f029fe0b0cdbe">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#aee8d9c7084d8df28bf6f05e0851a557f">tvm</a>
+, <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a5b0f4de023bfe86e9510036028ea1580">tvm::tir::builtin</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a1bb4f1456d810331fc553a666dc673b0">tvm::topi</a>
 </li>
 <li>bitwise_xor()
-: <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a0cd2ac37b80c498ded412572146ecc67">tvm::tir::builtin</a>
+: <a class="el" href="namespacetvm.html#a6c238cafec94d03b8e70688d4cf82642">tvm</a>
+, <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a0cd2ac37b80c498ded412572146ecc67">tvm::tir::builtin</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a4a930738c90d4b4079e02ed4650e9a88">tvm::topi</a>
 </li>
 <li>BoundTypeVars()
@@ -191,7 +197,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir.html#a9ac05a14db42ca73da1d3945e7ce2fd1">tvm::tir</a>
 </li>
 <li>build()
-: <a class="el" href="namespacetvm.html#a67dce8ba3396d28be88593081fc291fb">tvm</a>
+: <a class="el" href="namespacetvm.html#a018d7138c17ef78300ee256f6d348d00">tvm</a>
 </li>
 <li>Build()
 : <a class="el" href="namespacetvm_1_1codegen.html#a0d6322c2dda54a66a3b82022f5f3632c">tvm::codegen</a>
diff --git a/docs/api/doxygen/namespacemembers_c.html b/docs/api/doxygen/namespacemembers_c.html
index b97bcba..f2f7d43 100644
--- a/docs/api/doxygen/namespacemembers_c.html
+++ b/docs/api/doxygen/namespacemembers_c.html
@@ -150,11 +150,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#adcddf150ca7da40e20408928421b0086">tvm::relay::transform</a>
 </li>
 <li>cast()
-: <a class="el" href="namespacetvm.html#aa058caeda9deceda3d6ffeda347be442">tvm</a>
+: <a class="el" href="namespacetvm.html#a4bfb789a86d95f6241b50fd26f269c28">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a7da4c96db87c1459a2b097b87afd811f">tvm::topi</a>
 </li>
 <li>ceil()
-: <a class="el" href="namespacetvm.html#a530307f2fad9f6d196c441309af777b9">tvm</a>
+: <a class="el" href="namespacetvm.html#a5e4738caa6bcd0259af64b25e25dfd93">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a9e664a352d2ac6c680ab3e7110b3f3be">tvm::topi</a>
 </li>
 <li>channel_read_advance
@@ -218,10 +218,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a6f3c749dadc49aa100626ef85a04a66b">tvm::topi</a>
 </li>
 <li>const_false()
-: <a class="el" href="namespacetvm_1_1tir.html#ae11cb5c6f810546e5aa4e08a0684071a">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#a875c28f423ab96ae8f0d21f1263abe14">tvm::tir</a>
 </li>
 <li>const_true()
-: <a class="el" href="namespacetvm_1_1tir.html#ac40c127b53bca09d4c39f806a98dfdf8">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#a8dd84303a9864b5b366835fa628a7824">tvm::tir</a>
 </li>
 <li>ConstantCheck()
 : <a class="el" href="namespacetvm_1_1relay.html#abdade48285a63efffe743e73e41d3b35">tvm::relay</a>
@@ -257,14 +257,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#aa234deedbe456bf561a1b90f2ed94206">tvm::tir::transform</a>
 </li>
 <li>copysign()
-: <a class="el" href="namespacetvm.html#a16224049bce949c53908e05b84ba5eb3">tvm</a>
+: <a class="el" href="namespacetvm.html#a69f67f2d38656a8e663af0912d00cb51">tvm</a>
 </li>
 <li>cos()
-: <a class="el" href="namespacetvm.html#a66fb538aa75f90efb6f5c948920f8f95">tvm</a>
+: <a class="el" href="namespacetvm.html#afdd8659490e81bdc0f2d42b77b882d30">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ae7118de8a9c5387996a8cdf816dd6b90">tvm::topi</a>
 </li>
 <li>cosh()
-: <a class="el" href="namespacetvm.html#a581c9279a40694ab7a5defa179bcad67">tvm</a>
+: <a class="el" href="namespacetvm.html#a41c8855d1e4f7ea1d01e42e6c214f877">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a7ef07ecc87da38b1ffaab0d2443661ca">tvm::topi</a>
 </li>
 <li>crc16_compute()
diff --git a/docs/api/doxygen/namespacemembers_d.html b/docs/api/doxygen/namespacemembers_d.html
index 62a6086..29178bc 100644
--- a/docs/api/doxygen/namespacemembers_d.html
+++ b/docs/api/doxygen/namespacemembers_d.html
@@ -203,7 +203,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi_1_1nn.html#af210f30ef7afb28cd369dacc8f05be68">tvm::topi::nn</a>
 </li>
 <li>div()
-: <a class="el" href="namespacetvm.html#a40fcc9952e1ff01a76f3b75dbd368fc1">tvm</a>
+: <a class="el" href="namespacetvm.html#a16f9cd9219b505e2cc05c5a7558ac61f">tvm</a>
 </li>
 <li>DivAmbiguityError()
 : <a class="el" href="namespacetvm.html#a31e7a3e4a160a1d048e3ba741966f1a8">tvm</a>
@@ -221,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1runtime.html#af9303c49b737675bdab034c4032dcc48">tvm::runtime</a>
 </li>
 <li>DoCommReduce()
-: <a class="el" href="namespacetvm_1_1topi.html#ac6915f9182df309507befb791160507b">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#ab7fb7a9f1651970c4ba04a48acdb695f">tvm::topi</a>
 </li>
 <li>DomainTouched()
 : <a class="el" href="namespacetvm_1_1arith.html#a7641fa29ca6d8941f2696aacccf23998">tvm::arith</a>
diff --git a/docs/api/doxygen/namespacemembers_e.html b/docs/api/doxygen/namespacemembers_e.html
index bc7d413..3121933 100644
--- a/docs/api/doxygen/namespacemembers_e.html
+++ b/docs/api/doxygen/namespacemembers_e.html
@@ -132,10 +132,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi_1_1nn.html#a8d244c196a5a481640cfc610fad3c7db">tvm::topi::nn</a>
 </li>
 <li>equal()
-: <a class="el" href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#ae9f375f83f3ea3a5dfb0357c0d67b863">tvm::topi</a>
 </li>
 <li>erf()
-: <a class="el" href="namespacetvm.html#a78ebcdb32def4b349b37423884a6417a">tvm</a>
+: <a class="el" href="namespacetvm.html#a139870d327497d548e2ef8bddba2f114">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a1bb93bc58cd2b65b4d75d6856daf6239">tvm::topi</a>
 </li>
 <li>Escape
@@ -145,20 +146,20 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#a6e515696ecc9ff4222af99fef361de4e">tvm::relay::transform</a>
 </li>
 <li>EvalSet()
-: <a class="el" href="namespacetvm_1_1arith.html#a4bf945fe43afafbedffad6d5633efad7">tvm::arith</a>
+: <a class="el" href="namespacetvm_1_1arith.html#aa30b03ba03ff9cad2cad7320194dfcbe">tvm::arith</a>
 </li>
 <li>EvalSetForEachSubExpr()
 : <a class="el" href="namespacetvm_1_1arith.html#a8a112f07411c5e1237b0c045ff276ac6">tvm::arith</a>
 </li>
 <li>exp()
-: <a class="el" href="namespacetvm.html#aa21f5c2f67c944561ae4a260a2ed14d2">tvm</a>
+: <a class="el" href="namespacetvm.html#a82be70bd7794abca32473604cbb09569">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#abc1bbf41a8b463d860f7064c604aeef3">tvm::topi</a>
 </li>
 <li>exp10()
-: <a class="el" href="namespacetvm.html#ac760569fe43a52f3f8997461b2ef438a">tvm</a>
+: <a class="el" href="namespacetvm.html#a65b68a0c2cea6c1bbd338585fcdf9fdd">tvm</a>
 </li>
 <li>exp2()
-: <a class="el" href="namespacetvm.html#a21e3a5d7327cf37c6a682525665a0a28">tvm</a>
+: <a class="el" href="namespacetvm.html#a50c4b8aeaf39b357013fc7f62b4a878c">tvm</a>
 </li>
 <li>expand_dims()
 : <a class="el" href="namespacetvm_1_1topi.html#a7ddbd03d0d29a05618a1ef42f717ec9f">tvm::topi</a>
diff --git a/docs/api/doxygen/namespacemembers_f.html b/docs/api/doxygen/namespacemembers_f.html
index d3509bc..1fbb165 100644
--- a/docs/api/doxygen/namespacemembers_f.html
+++ b/docs/api/doxygen/namespacemembers_f.html
@@ -213,7 +213,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir.html#adb123be81447d2871f4c716ce2d1dc00">tvm::tir</a>
 </li>
 <li>floor()
-: <a class="el" href="namespacetvm.html#a45896c89bce01ea68b5a8f3ea37f3079">tvm</a>
+: <a class="el" href="namespacetvm.html#aaff65dde3044433b2220677aedf4855f">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ad05e0e9463b620af2f26f94ca284e915">tvm::topi</a>
 </li>
 <li>floor_divide()
@@ -223,10 +223,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a093080eceeaae43a605b8c4e638c9471">tvm::topi</a>
 </li>
 <li>floordiv()
-: <a class="el" href="namespacetvm.html#a25cb3bf64427a16a93529d0a5c40b6de">tvm</a>
+: <a class="el" href="namespacetvm.html#af347f10e3572adb2d74ba4a53777db2b">tvm</a>
 </li>
 <li>floormod()
-: <a class="el" href="namespacetvm.html#a74b2e0fb912a82f974e2b652f7de8d34">tvm</a>
+: <a class="el" href="namespacetvm.html#a8683adb542beba8ecc69354e50d62ef6">tvm</a>
 </li>
 <li>fma()
 : <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a1e15b04fe89f7899e09e528946aa5bb4">tvm::tir::builtin</a>
@@ -238,7 +238,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#a41656c71a440f1f9c9eae0aa409d2b22">tvm::relay::transform</a>
 </li>
 <li>foldl()
-: <a class="el" href="namespacetvm_1_1tir.html#ab432ffcc9fd4cb4fc0fd1891b141fb9f">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#a6454dd89e85fc29a7e3b8620df90a6f6">tvm::tir</a>
 </li>
 <li>FoldScaleAxis()
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#a73946a29efe8cf6f186a681296c8e943">tvm::relay::transform</a>
@@ -265,7 +265,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir_1_1attr.html#a93d76d80fd7252d66991dc650693c0ef">tvm::tir::attr</a>
 </li>
 <li>FReduce
-: <a class="el" href="namespacetvm_1_1topi.html#a61ff09406948a8ab5d0769819b977900">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#af0e52ef3c0d8e11bf493d5163033cd0d">tvm::topi</a>
 </li>
 <li>FreeTypeVars()
 : <a class="el" href="namespacetvm_1_1relay.html#a446e2b12f3e907336313004c3e0a0c86">tvm::relay</a>
diff --git a/docs/api/doxygen/namespacemembers_func.html b/docs/api/doxygen/namespacemembers_func.html
index b5d6b40..9206feb 100644
--- a/docs/api/doxygen/namespacemembers_func.html
+++ b/docs/api/doxygen/namespacemembers_func.html
@@ -123,15 +123,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
 <li>abs()
-: <a class="el" href="namespacetvm.html#a84d274191adb24d2acb39064c1fbec52">tvm</a>
+: <a class="el" href="namespacetvm.html#ab2a3c98ef29937defd6accb9b171a940">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a4fc10ed824cfc533c3f22cd682d13467">tvm::topi</a>
 </li>
 <li>acos()
-: <a class="el" href="namespacetvm.html#a3fc8c87ca0b1d1baa2adbcbb2da3869d">tvm</a>
+: <a class="el" href="namespacetvm.html#aa8e1cc91eb14b427e3018836d82e15e6">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a53ee5ec6de9d90d96cf54898e890dcc9">tvm::topi</a>
 </li>
 <li>acosh()
-: <a class="el" href="namespacetvm.html#a867390323ef93eaa05fedc0770b0da0b">tvm</a>
+: <a class="el" href="namespacetvm.html#af38d8633e3508033faa7bd60d8232bfe">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a27d7acbeefa41cfaec9b8a397295572a">tvm::topi</a>
 </li>
 <li>adaptive_pool()
@@ -144,7 +144,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi_1_1nn.html#a3fb74f1c3df6edf17c9a3f1e122f84fe">tvm::topi::nn</a>
 </li>
 <li>add()
-: <a class="el" href="namespacetvm_1_1topi.html#aa7d7e1d5966e6de6b29c902458a421e8">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#ae2794f261657780b2af4208b95d9cfcb">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#aa7d7e1d5966e6de6b29c902458a421e8">tvm::topi</a>
 </li>
 <li>address_of()
 : <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a700b7018f2c1f1fba8b4e28f264d8bbb">tvm::tir::builtin</a>
@@ -156,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a6d9189f6ceb05cf0a309dbe3f2730b16">tvm::topi</a>
 </li>
 <li>all()
-: <a class="el" href="namespacetvm.html#a5bbd93564931490e8854f19c4f610966">tvm</a>
+: <a class="el" href="namespacetvm.html#adeeaff4fb29f75a9da8ff4d67723c693">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ad299ebf7fc4294a1e8391fbfe268dfa5">tvm::topi</a>
 , <a class="el" href="namespacetvm_1_1topi_1_1nn.html#a93ec4d667dc49c109a0ccb16f6c6d05b">tvm::topi::nn</a>
 </li>
@@ -170,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#a64e0426cfa5887f11769a057c09ce8ba">tvm::relay::transform</a>
 </li>
 <li>any()
-: <a class="el" href="namespacetvm.html#a1ff6a87d9ea4b883f6ee2ea8611da94c">tvm</a>
+: <a class="el" href="namespacetvm.html#a5efd9942cdee5a56cfc438ba523c04f0">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#afb48d90f345698b1b3417bafa1911504">tvm::topi</a>
 </li>
 <li>arange()
@@ -198,25 +199,25 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1arith.html#aa4b593dc5d590eab7df2abdca7271b34">tvm::arith</a>
 </li>
 <li>asin()
-: <a class="el" href="namespacetvm.html#a30a9f4cd46514365e7b2ad0fa66ad14a">tvm</a>
+: <a class="el" href="namespacetvm.html#a9eabd3011b72041605ac7475094c87b1">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a545ce84ae38372484e61bee5a7c9f219">tvm::topi</a>
 </li>
 <li>asinh()
-: <a class="el" href="namespacetvm.html#ac20dad5eb9d4bb49ce0b152df3b1db9b">tvm</a>
+: <a class="el" href="namespacetvm.html#a52a4f309e25bcb51c6038f6e3ee931ec">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#aeabe0543c009315fc97b8fb3df92b376">tvm::topi</a>
 </li>
 <li>AsText()
 : <a class="el" href="namespacetvm.html#ad0e4314dd85303aa5e10d452e4c9db54">tvm</a>
 </li>
 <li>atan()
-: <a class="el" href="namespacetvm.html#a0a4e38b4b6d9f7396f2eafa680f98bd8">tvm</a>
+: <a class="el" href="namespacetvm.html#a475b388b9a19d05dca849707d74636a7">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ae6359efdf50839f448d17f1ce8e64b55">tvm::topi</a>
 </li>
 <li>atan2()
-: <a class="el" href="namespacetvm.html#a2def28d20708210b32fd5bfa5cdd6388">tvm</a>
+: <a class="el" href="namespacetvm.html#a350f9808d53b5fd9ad5c4c50bb76d700">tvm</a>
 </li>
 <li>atanh()
-: <a class="el" href="namespacetvm.html#a0071b288214f90cd96aca48a2bc8e277">tvm</a>
+: <a class="el" href="namespacetvm.html#ab72a6b6a2d0c2aa3f6a95f60dc831493">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a0fe91ddd730e2f64fab60e863cfa619b">tvm::topi</a>
 </li>
 <li>AttrsWithDefaultValues()
diff --git a/docs/api/doxygen/namespacemembers_func_b.html b/docs/api/doxygen/namespacemembers_func_b.html
index baf31e2..52bd64d 100644
--- a/docs/api/doxygen/namespacemembers_func_b.html
+++ b/docs/api/doxygen/namespacemembers_func_b.html
@@ -148,32 +148,38 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 , <a class="el" href="namespacetvm_1_1relay.html#ad7cfa0b6a4537989b886d47767526726">tvm::relay</a>
 </li>
 <li>bitwise_and()
-: <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a0e633f53c50e14d7e2fc07636a223309">tvm::tir::builtin</a>
-, <a class="el" href="namespacetvm_1_1topi.html#a56b9392fff0e4e7977017974affdbb99">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#acebb0c446b76d5a28c3b1b55f827c86e">tvm</a>
+, <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a0e633f53c50e14d7e2fc07636a223309">tvm::tir::builtin</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a90b5cd49e42355c6ce0d3ab84ee7c41d">tvm::topi</a>
+</li>
+<li>bitwise_neg()
+: <a class="el" href="namespacetvm.html#a3f6d8fba545c2944efc83b57e6190459">tvm</a>
 </li>
 <li>bitwise_not()
 : <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a091ef99dc63f6945588dbb81c968ca15">tvm::tir::builtin</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a99f3fd2edfd74113c83bc9fb98e8aca1">tvm::topi</a>
 </li>
 <li>bitwise_or()
-: <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a5b0f4de023bfe86e9510036028ea1580">tvm::tir::builtin</a>
-, <a class="el" href="namespacetvm_1_1topi.html#a1bb4f1456d810331fc553a666dc673b0">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#aee8d9c7084d8df28bf6f05e0851a557f">tvm</a>
+, <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a5b0f4de023bfe86e9510036028ea1580">tvm::tir::builtin</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a02f9bd3e72b53845603460241c894e57">tvm::topi</a>
 </li>
 <li>bitwise_xor()
-: <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a0cd2ac37b80c498ded412572146ecc67">tvm::tir::builtin</a>
-, <a class="el" href="namespacetvm_1_1topi.html#a4a930738c90d4b4079e02ed4650e9a88">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#acee8a44a486ddb623b69c1e61bcb77fd">tvm</a>
+, <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a0cd2ac37b80c498ded412572146ecc67">tvm::tir::builtin</a>
+, <a class="el" href="namespacetvm_1_1topi.html#ab2162aa07f9ffde1e507c3784337afcc">tvm::topi</a>
 </li>
 <li>BoundTypeVars()
-: <a class="el" href="namespacetvm_1_1relay.html#a1e5aa65b13f8ca172009aa2ff3ba59d6">tvm::relay</a>
+: <a class="el" href="namespacetvm_1_1relay.html#a419979c48a5e37cd969f6fd6d0fead4b">tvm::relay</a>
 </li>
 <li>BoundVars()
-: <a class="el" href="namespacetvm_1_1relay.html#aedcb2b290b4f80292eb34afefc41f0ac">tvm::relay</a>
+: <a class="el" href="namespacetvm_1_1relay.html#a0bcc32688b446d3574932554f6b8c2df">tvm::relay</a>
 </li>
 <li>broadcast_to()
 : <a class="el" href="namespacetvm_1_1topi.html#a545c1404478aba2e2a44c77438da9fd5">tvm::topi</a>
 </li>
 <li>build()
-: <a class="el" href="namespacetvm.html#ab5392acd55c76e34323a71a4052f7bb2">tvm</a>
+: <a class="el" href="namespacetvm.html#a018d7138c17ef78300ee256f6d348d00">tvm</a>
 </li>
 <li>Build()
 : <a class="el" href="namespacetvm_1_1codegen.html#a0d6322c2dda54a66a3b82022f5f3632c">tvm::codegen</a>
diff --git a/docs/api/doxygen/namespacemembers_func_c.html b/docs/api/doxygen/namespacemembers_func_c.html
index fe1dbab..57d7486 100644
--- a/docs/api/doxygen/namespacemembers_func_c.html
+++ b/docs/api/doxygen/namespacemembers_func_c.html
@@ -144,11 +144,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#adcddf150ca7da40e20408928421b0086">tvm::relay::transform</a>
 </li>
 <li>cast()
-: <a class="el" href="namespacetvm.html#aa058caeda9deceda3d6ffeda347be442">tvm</a>
+: <a class="el" href="namespacetvm.html#a4bfb789a86d95f6241b50fd26f269c28">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a7da4c96db87c1459a2b097b87afd811f">tvm::topi</a>
 </li>
 <li>ceil()
-: <a class="el" href="namespacetvm.html#a530307f2fad9f6d196c441309af777b9">tvm</a>
+: <a class="el" href="namespacetvm.html#a5e4738caa6bcd0259af64b25e25dfd93">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a9e664a352d2ac6c680ab3e7110b3f3be">tvm::topi</a>
 </li>
 <li>CheckFeature()
@@ -194,10 +194,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a6f3c749dadc49aa100626ef85a04a66b">tvm::topi</a>
 </li>
 <li>const_false()
-: <a class="el" href="namespacetvm_1_1tir.html#ae11cb5c6f810546e5aa4e08a0684071a">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#a875c28f423ab96ae8f0d21f1263abe14">tvm::tir</a>
 </li>
 <li>const_true()
-: <a class="el" href="namespacetvm_1_1tir.html#ac40c127b53bca09d4c39f806a98dfdf8">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#a8dd84303a9864b5b366835fa628a7824">tvm::tir</a>
 </li>
 <li>ConstantCheck()
 : <a class="el" href="namespacetvm_1_1relay.html#abdade48285a63efffe743e73e41d3b35">tvm::relay</a>
@@ -221,14 +221,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#aa234deedbe456bf561a1b90f2ed94206">tvm::tir::transform</a>
 </li>
 <li>copysign()
-: <a class="el" href="namespacetvm.html#a16224049bce949c53908e05b84ba5eb3">tvm</a>
+: <a class="el" href="namespacetvm.html#a69f67f2d38656a8e663af0912d00cb51">tvm</a>
 </li>
 <li>cos()
-: <a class="el" href="namespacetvm.html#a66fb538aa75f90efb6f5c948920f8f95">tvm</a>
+: <a class="el" href="namespacetvm.html#afdd8659490e81bdc0f2d42b77b882d30">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ae7118de8a9c5387996a8cdf816dd6b90">tvm::topi</a>
 </li>
 <li>cosh()
-: <a class="el" href="namespacetvm.html#a581c9279a40694ab7a5defa179bcad67">tvm</a>
+: <a class="el" href="namespacetvm.html#a41c8855d1e4f7ea1d01e42e6c214f877">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a7ef07ecc87da38b1ffaab0d2443661ca">tvm::topi</a>
 </li>
 <li>crc16_compute()
diff --git a/docs/api/doxygen/namespacemembers_func_d.html b/docs/api/doxygen/namespacemembers_func_d.html
index 1f0724d..b810f2a 100644
--- a/docs/api/doxygen/namespacemembers_func_d.html
+++ b/docs/api/doxygen/namespacemembers_func_d.html
@@ -185,7 +185,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi_1_1nn.html#af210f30ef7afb28cd369dacc8f05be68">tvm::topi::nn</a>
 </li>
 <li>div()
-: <a class="el" href="namespacetvm.html#a1180d1f0ef1d427bad98a89c66d84c0f">tvm</a>
+: <a class="el" href="namespacetvm.html#a9d90476be7c95b4c40fe267fd2af5603">tvm</a>
 </li>
 <li>DivAmbiguityError()
 : <a class="el" href="namespacetvm.html#a31e7a3e4a160a1d048e3ba741966f1a8">tvm</a>
@@ -200,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1runtime.html#af9303c49b737675bdab034c4032dcc48">tvm::runtime</a>
 </li>
 <li>DoCommReduce()
-: <a class="el" href="namespacetvm_1_1topi.html#ac6915f9182df309507befb791160507b">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#ab7fb7a9f1651970c4ba04a48acdb695f">tvm::topi</a>
 </li>
 <li>DomainTouched()
 : <a class="el" href="namespacetvm_1_1arith.html#a7641fa29ca6d8941f2696aacccf23998">tvm::arith</a>
diff --git a/docs/api/doxygen/namespacemembers_func_e.html b/docs/api/doxygen/namespacemembers_func_e.html
index ebd6b93..e57a28a 100644
--- a/docs/api/doxygen/namespacemembers_func_e.html
+++ b/docs/api/doxygen/namespacemembers_func_e.html
@@ -132,30 +132,31 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi_1_1nn.html#a8d244c196a5a481640cfc610fad3c7db">tvm::topi::nn</a>
 </li>
 <li>equal()
-: <a class="el" href="namespacetvm_1_1topi.html#aad662b8455d6393f5bbf54a03c5b5df4">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#ae9f375f83f3ea3a5dfb0357c0d67b863">tvm::topi</a>
 </li>
 <li>erf()
-: <a class="el" href="namespacetvm.html#a78ebcdb32def4b349b37423884a6417a">tvm</a>
+: <a class="el" href="namespacetvm.html#a139870d327497d548e2ef8bddba2f114">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a1bb93bc58cd2b65b4d75d6856daf6239">tvm::topi</a>
 </li>
 <li>EtaExpand()
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#a6e515696ecc9ff4222af99fef361de4e">tvm::relay::transform</a>
 </li>
 <li>EvalSet()
-: <a class="el" href="namespacetvm_1_1arith.html#a4bf945fe43afafbedffad6d5633efad7">tvm::arith</a>
+: <a class="el" href="namespacetvm_1_1arith.html#aa30b03ba03ff9cad2cad7320194dfcbe">tvm::arith</a>
 </li>
 <li>EvalSetForEachSubExpr()
 : <a class="el" href="namespacetvm_1_1arith.html#a8a112f07411c5e1237b0c045ff276ac6">tvm::arith</a>
 </li>
 <li>exp()
-: <a class="el" href="namespacetvm.html#aa21f5c2f67c944561ae4a260a2ed14d2">tvm</a>
+: <a class="el" href="namespacetvm.html#a82be70bd7794abca32473604cbb09569">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#abc1bbf41a8b463d860f7064c604aeef3">tvm::topi</a>
 </li>
 <li>exp10()
-: <a class="el" href="namespacetvm.html#ac760569fe43a52f3f8997461b2ef438a">tvm</a>
+: <a class="el" href="namespacetvm.html#a65b68a0c2cea6c1bbd338585fcdf9fdd">tvm</a>
 </li>
 <li>exp2()
-: <a class="el" href="namespacetvm.html#a21e3a5d7327cf37c6a682525665a0a28">tvm</a>
+: <a class="el" href="namespacetvm.html#a50c4b8aeaf39b357013fc7f62b4a878c">tvm</a>
 </li>
 <li>expand_dims()
 : <a class="el" href="namespacetvm_1_1topi.html#a7ddbd03d0d29a05618a1ef42f717ec9f">tvm::topi</a>
@@ -164,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay.html#abd34311e0bf42aebcf785cfa390a3d5a">tvm::relay</a>
 </li>
 <li>ExprUseVar()
-: <a class="el" href="namespacetvm_1_1tir.html#a56573569b84c79678a7046a9500dbf73">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#a095d1c3c1ce2dc66285ec1a1e4fbacec">tvm::tir</a>
 </li>
 </ul>
 </div><!-- contents -->
diff --git a/docs/api/doxygen/namespacemembers_func_f.html b/docs/api/doxygen/namespacemembers_func_f.html
index 225a68b..1a3a229 100644
--- a/docs/api/doxygen/namespacemembers_func_f.html
+++ b/docs/api/doxygen/namespacemembers_func_f.html
@@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay.html#a91168c24ecbf1cbf719d2ba28841da5c">tvm::relay</a>
 </li>
 <li>floor()
-: <a class="el" href="namespacetvm.html#a45896c89bce01ea68b5a8f3ea37f3079">tvm</a>
+: <a class="el" href="namespacetvm.html#aaff65dde3044433b2220677aedf4855f">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ad05e0e9463b620af2f26f94ca284e915">tvm::topi</a>
 </li>
 <li>floor_divide()
@@ -169,10 +169,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a093080eceeaae43a605b8c4e638c9471">tvm::topi</a>
 </li>
 <li>floordiv()
-: <a class="el" href="namespacetvm.html#a25cb3bf64427a16a93529d0a5c40b6de">tvm</a>
+: <a class="el" href="namespacetvm.html#af347f10e3572adb2d74ba4a53777db2b">tvm</a>
 </li>
 <li>floormod()
-: <a class="el" href="namespacetvm.html#a6993f628929a88cf563461c9dcafb2ae">tvm</a>
+: <a class="el" href="namespacetvm.html#a964496f2d1c20c65f758f46a544d9980">tvm</a>
 </li>
 <li>fma()
 : <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a1e15b04fe89f7899e09e528946aa5bb4">tvm::tir::builtin</a>
@@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#a41656c71a440f1f9c9eae0aa409d2b22">tvm::relay::transform</a>
 </li>
 <li>foldl()
-: <a class="el" href="namespacetvm_1_1tir.html#ab432ffcc9fd4cb4fc0fd1891b141fb9f">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#a6454dd89e85fc29a7e3b8620df90a6f6">tvm::tir</a>
 </li>
 <li>FoldScaleAxis()
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#a73946a29efe8cf6f186a681296c8e943">tvm::relay::transform</a>
diff --git a/docs/api/doxygen/namespacemembers_func_g.html b/docs/api/doxygen/namespacemembers_func_g.html
index 9af16b1..ed36e59 100644
--- a/docs/api/doxygen/namespacemembers_func_g.html
+++ b/docs/api/doxygen/namespacemembers_func_g.html
@@ -192,10 +192,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1te.html#a0de1399717049f2b3582f0344b267d56">tvm::te</a>
 </li>
 <li>greater()
-: <a class="el" href="namespacetvm_1_1topi.html#a99c98f4fa4a36166f6da0985f77ec462">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a5f708bf8051251f44b9550a11ac324fc">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#acf30a8cba376ecf711ba3a4e69060aa1">tvm::topi</a>
 </li>
 <li>greater_equal()
-: <a class="el" href="namespacetvm_1_1topi.html#a4ab87f8165493b3fa0acc00a83c0a2e4">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a77814ef6c0025fba05e32b4cfd1d3e62">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a4ab87f8165493b3fa0acc00a83c0a2e4">tvm::topi</a>
 </li>
 <li>group_conv2d_ngchw()
 : <a class="el" href="namespacetvm_1_1topi.html#a4c2a0e74a45381e899f9ff788365eff0">tvm::topi</a>
diff --git a/docs/api/doxygen/namespacemembers_func_h.html b/docs/api/doxygen/namespacemembers_func_h.html
index 87c4d90..5037a66 100644
--- a/docs/api/doxygen/namespacemembers_func_h.html
+++ b/docs/api/doxygen/namespacemembers_func_h.html
@@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#acd2b8fdd84785388630e2d52a6e3cc54">tvm::tir::transform</a>
 </li>
 <li>hypot()
-: <a class="el" href="namespacetvm.html#a2b99c7295d92bb6acb62276af5bf9dff">tvm</a>
+: <a class="el" href="namespacetvm.html#a28e456d33229a628a312110db8d45b44">tvm</a>
 </li>
 </ul>
 </div><!-- contents -->
diff --git a/docs/api/doxygen/namespacemembers_func_i.html b/docs/api/doxygen/namespacemembers_func_i.html
index e1d6935..c6b0295 100644
--- a/docs/api/doxygen/namespacemembers_func_i.html
+++ b/docs/api/doxygen/namespacemembers_func_i.html
@@ -126,14 +126,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#aa86493f01692ff5ecfdb2d202306854c">tvm::topi</a>
 </li>
 <li>if_then_else()
-: <a class="el" href="namespacetvm.html#ad400409d87dc337f8b5fe13e18d363f9">tvm</a>
+: <a class="el" href="namespacetvm.html#a353217978feabae3575560bf1586885f">tvm</a>
 , <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#ae741e67259cd4b844a8934f2e2704adc">tvm::tir::builtin</a>
 </li>
 <li>indexdiv()
-: <a class="el" href="namespacetvm.html#a8203d70a5ebf3532370264b000d0d276">tvm</a>
+: <a class="el" href="namespacetvm.html#a8f30aa0685ca52f846843e76a1ad1dc7">tvm</a>
 </li>
 <li>indexmod()
-: <a class="el" href="namespacetvm.html#ac4d2991113bb8e0b634e4c83183eb5c1">tvm</a>
+: <a class="el" href="namespacetvm.html#a78b6faac00e9a823e9bcf14e1e02f1f2">tvm</a>
 </li>
 <li>InferBound()
 : <a class="el" href="namespacetvm_1_1te.html#ac0effd02bbddf8ce2cce7073e175ca4c">tvm::te</a>
@@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#a1a4fe2161bf32a60bc2e57debab083ee">tvm::relay::transform</a>
 </li>
 <li>infinity()
-: <a class="el" href="namespacetvm.html#a9bf1977e7bc6f0424f4e87d77d0008ed">tvm</a>
+: <a class="el" href="namespacetvm.html#a8934beb918da0e451d3aab7ccbcd9859">tvm</a>
 </li>
 <li>InjectCopyIntrin()
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#ae70d9af70526908167101609baaf4142">tvm::tir::transform</a>
@@ -205,15 +205,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1runtime.html#adb2ed1227b418f5846d43d3234b52391">tvm::runtime</a>
 </li>
 <li>isfinite()
-: <a class="el" href="namespacetvm.html#a6a48a2b96c995f412390db3ea3b38bd9">tvm</a>
+: <a class="el" href="namespacetvm.html#a096aa20c0df975d089231b2c6fda2e61">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a2075cd14f51f7e5eb6d3466c5dfb9fa6">tvm::topi</a>
 </li>
 <li>isinf()
-: <a class="el" href="namespacetvm.html#a30e728d87aa70f76d7f4a09316c9746d">tvm</a>
+: <a class="el" href="namespacetvm.html#ac06a47be8386f28b313903e174dfe151">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a2769b4e6636c4947973d6e1dea7a1a39">tvm::topi</a>
 </li>
 <li>isnan()
-: <a class="el" href="namespacetvm.html#a8f98d60fdc4526b07c8858d6b0b8d1ee">tvm</a>
+: <a class="el" href="namespacetvm.html#a4a6399430c10dccd79f64222cda011ed">tvm</a>
 , <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a6f53be295396c301082696ca0c113501">tvm::tir::builtin</a>
 , <a class="el" href="namespacetvm_1_1topi.html#acf8aca9718d5c44a8e715c52adb1521a">tvm::topi</a>
 </li>
diff --git a/docs/api/doxygen/namespacemembers_func_l.html b/docs/api/doxygen/namespacemembers_func_l.html
index 5e62a19..f19e07e 100644
--- a/docs/api/doxygen/namespacemembers_func_l.html
+++ b/docs/api/doxygen/namespacemembers_func_l.html
@@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a322ae63444ed4e5fcf7247aa93f8bb7c">tvm::tir::builtin</a>
 </li>
 <li>LargeUIntImm()
-: <a class="el" href="namespacetvm.html#a1b6f1345a0ac2506132b15ec4cbf3599">tvm</a>
+: <a class="el" href="namespacetvm.html#a98a791851ba1a7631e50587ae370b3b8">tvm</a>
 </li>
 <li>layout_transform()
 : <a class="el" href="namespacetvm_1_1topi.html#a8a41a08eee70607889b738946ed97873">tvm::topi</a>
@@ -135,60 +135,66 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#ab6e60251741cca1e811564b2f03a4a5d">tvm::relay::transform</a>
 </li>
 <li>ldexp()
-: <a class="el" href="namespacetvm.html#a90a9e2efafc1994a4cd84a26d74c75c3">tvm</a>
+: <a class="el" href="namespacetvm.html#ac5347541411e75f59758a29596565f63">tvm</a>
 </li>
 <li>leaky_relu()
 : <a class="el" href="namespacetvm_1_1topi.html#a54fc6163dddcf865940e1d030058a2f1">tvm::topi</a>
 </li>
 <li>left_shift()
-: <a class="el" href="namespacetvm_1_1topi.html#a3ebc69f8c9c490dd8fd8d65e784ad0cf">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a6bc108896d74f5f3b5cc3b98e9780e1c">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a46057526edd4bbd0a291edf7f0c863b4">tvm::topi</a>
 </li>
 <li>Legalize()
 : <a class="el" href="namespacetvm_1_1relay_1_1qnn_1_1transform.html#a2323e3c38cc9ae1626cd98295b83e906">tvm::relay::qnn::transform</a>
 , <a class="el" href="namespacetvm_1_1relay_1_1transform.html#aae623a28eda64b60c6ee90edde103891">tvm::relay::transform</a>
 </li>
 <li>less()
-: <a class="el" href="namespacetvm_1_1topi.html#a38c3cd6e6c1739a4704b38e07603504b">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a52fa1dc57423a077eb098960162e7b85">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a28aa974fb51f2e262413811cab7f969e">tvm::topi</a>
 </li>
 <li>less_equal()
-: <a class="el" href="namespacetvm_1_1topi.html#aab3e2cccec9b8e90aa01e64c2587d8d9">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a6dfe80d16a7b4f551c87a8901d366d08">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#aab3e2cccec9b8e90aa01e64c2587d8d9">tvm::topi</a>
 </li>
 <li>LiftAttrScope()
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#a1a6050dba3ac8efbb922ce0477198ab3">tvm::tir::transform</a>
 </li>
 <li>likely()
-: <a class="el" href="namespacetvm.html#ad6ee4c2d41e7e226d1995112cd12e3f1">tvm</a>
+: <a class="el" href="namespacetvm.html#a336b811d7f339f888ad38d2e2657710d">tvm</a>
 , <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a21d1f0395dca5af4a90cdb42c1d1d154">tvm::tir::builtin</a>
 </li>
 <li>LoadJSON()
 : <a class="el" href="namespacetvm.html#afa0a9bdf3997ef4fad45b19fb1a655cd">tvm</a>
 </li>
 <li>log()
-: <a class="el" href="namespacetvm.html#aed9236feb2ab21523cb2dcb0257fe8da">tvm</a>
+: <a class="el" href="namespacetvm.html#ae39f72b12020a4f7ad6b16b66ffdfe1f">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a6ae5383c136d68a21f01df8d15f38da3">tvm::topi</a>
 </li>
 <li>log10()
-: <a class="el" href="namespacetvm.html#a04657a6242778fd95b77df057385e398">tvm</a>
+: <a class="el" href="namespacetvm.html#a16a5aa0300233b6c5fbcc61c424eee30">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ace1568d4e83cf878685d833d7d772db8">tvm::topi</a>
 </li>
 <li>log2()
-: <a class="el" href="namespacetvm.html#aae5edd83ffa099868f2d58a9def0b2b4">tvm</a>
+: <a class="el" href="namespacetvm.html#ac1b3a94a13d11c02d7e79cad2638e74a">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a6846104353a5455dfbf907139f70be9c">tvm::topi</a>
 </li>
 <li>log_softmax()
 : <a class="el" href="namespacetvm_1_1topi_1_1nn.html#ac0e20b6b30ec8296c1f037866d3bf772">tvm::topi::nn</a>
 </li>
 <li>logical_and()
-: <a class="el" href="namespacetvm_1_1topi.html#a81fb1c1bf730c4824470aac242c083ff">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a84d49d8e646e152d2387cc49bc7b2a19">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#add68a44de732dc617eb6c7a09688deaa">tvm::topi</a>
 </li>
 <li>logical_not()
-: <a class="el" href="namespacetvm_1_1topi.html#a16dcf8130b4d437aaedb77dfc8abe15e">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a62955df1df48917116efe39d4cd18fec">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a16dcf8130b4d437aaedb77dfc8abe15e">tvm::topi</a>
 </li>
 <li>logical_or()
-: <a class="el" href="namespacetvm_1_1topi.html#a40dc56569ff5aad86ca82762ffb11180">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a75c5d58f8c58929103903a7352fbe5f1">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a1c75c9fd79ce99a6d97416c996489bb4">tvm::topi</a>
 </li>
 <li>logical_xor()
-: <a class="el" href="namespacetvm_1_1topi.html#af54ebb67c3f03a9ce7082834e0590fb8">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#a6cf49df6704ad86413e274ba59ac7c38">tvm::topi</a>
 </li>
 <li>LoopPartition()
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#a17b0910c03b6f2d462448fa2725c1f5e">tvm::tir::transform</a>
diff --git a/docs/api/doxygen/namespacemembers_func_m.html b/docs/api/doxygen/namespacemembers_func_m.html
index 6c7e752..1aa5e15 100644
--- a/docs/api/doxygen/namespacemembers_func_m.html
+++ b/docs/api/doxygen/namespacemembers_func_m.html
@@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
 <li>make_const()
-: <a class="el" href="namespacetvm_1_1tir.html#a4ea566597880d04bd62fbec687e338b5">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#a1a071208bbbab6b220cf46f5cdccdd86">tvm::tir</a>
 </li>
 <li>make_inplace_array_object()
 : <a class="el" href="namespacetvm_1_1runtime.html#a144496aaff68cd251b6bc0a7b24ca041">tvm::runtime</a>
@@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1runtime.html#a5ca61f3e3dd7af5ee94ed7886f638ee5">tvm::runtime</a>
 </li>
 <li>make_zero()
-: <a class="el" href="namespacetvm_1_1tir.html#adc4408508a413fb7f3b2567f8d847dbb">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#aed3f57cf8d1c3546f075701898c5b70f">tvm::tir</a>
 </li>
 <li>MakeArgmaxReducer()
 : <a class="el" href="namespacetvm_1_1topi.html#a2328ecd4e24c3e5fb6cfb75b21e65536">tvm::topi</a>
@@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a1d3988f52c26cc29967cefa057b79372">tvm::topi</a>
 </li>
 <li>MakeConstScalar()
-: <a class="el" href="namespacetvm_1_1tir.html#af2ca71170aca9d397c2125eb4f55c197">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#a0db485654cd60d43962f532a1b16026c">tvm::tir</a>
 </li>
 <li>MakeDefaultSchedule()
 : <a class="el" href="namespacetvm_1_1topi_1_1x86.html#a7740a46043b6c5514806684970e215b2">tvm::topi::x86</a>
@@ -165,11 +165,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#aead477c6c9d4f4589d22b8acff82040c">tvm::topi</a>
 </li>
 <li>max()
-: <a class="el" href="namespacetvm.html#ab49bad0808ba033343e72ba37b39af2e">tvm</a>
+: <a class="el" href="namespacetvm.html#a0df5ca82d2c566f628ebb2f1e84a3fcb">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a5ba15218e3cb56ec5b92a31b47768ed4">tvm::topi</a>
 </li>
 <li>max_value()
-: <a class="el" href="namespacetvm.html#a2741c5a48b50bf369026a1bbdf02017f">tvm</a>
+: <a class="el" href="namespacetvm.html#a4f1398024c0af23699447ef910b654b8">tvm</a>
 </li>
 <li>MaxConcurrency()
 : <a class="el" href="namespacetvm_1_1runtime_1_1threading.html#af8c1c389a74e67bcc3680555288219f8">tvm::runtime::threading</a>
@@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#afd64bc3e27dfc97002d3add5d7ce4174">tvm::topi</a>
 </li>
 <li>MaxOp()
-: <a class="el" href="namespacetvm_1_1topi.html#ae2b5cdd41be2f6ebaa1adff532863331">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#a38fe82b0db9eab041324da16e532baff">tvm::topi</a>
 </li>
 <li>Merge()
 : <a class="el" href="namespacetvm.html#a9f7aaf104019d274411ce174974dc76b">tvm</a>
@@ -187,23 +187,26 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a453f9f5a35a9852a086ce0228ee22164">tvm::topi</a>
 </li>
 <li>min()
-: <a class="el" href="namespacetvm.html#a7fe0dbe362aac3d4f9c204eeba803d8e">tvm</a>
+: <a class="el" href="namespacetvm.html#aac2abc149c1a47944c37b560181b15c0">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ae488679377c78cd5411b7df11c297673">tvm::topi</a>
 </li>
 <li>min_value()
-: <a class="el" href="namespacetvm.html#a9c126a8dde0d4079713969ca574f172e">tvm</a>
+: <a class="el" href="namespacetvm.html#a3b37fa55ea93d6868751a2441996b072">tvm</a>
 </li>
 <li>minimum()
-: <a class="el" href="namespacetvm_1_1topi.html#ab13b5c1b1698a334add86eac1fc8556e">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#a4c4789fd4f79c41e94600a7e2a19278b">tvm::topi</a>
 </li>
 <li>MinOp()
-: <a class="el" href="namespacetvm_1_1topi.html#a32ceb743c600288d7af6abf980ae31e8">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#aea9a989b0aaa2aef03fe8ee237d8257e">tvm::topi</a>
 </li>
 <li>mod()
 : <a class="el" href="namespacetvm_1_1topi.html#a9dda1b4f2ff957442e0f7be9c063d508">tvm::topi</a>
 </li>
+<li>mul()
+: <a class="el" href="namespacetvm.html#a7a63f5958a0158fc2707f8888bcf13f2">tvm</a>
+</li>
 <li>multiply()
-: <a class="el" href="namespacetvm_1_1topi.html#aa815df31023589b6424a69578e8e18bd">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#aba354eaa7c2451658083aef4b67c1f94">tvm::topi</a>
 </li>
 </ul>
 </div><!-- contents -->
diff --git a/docs/api/doxygen/namespacemembers_func_n.html b/docs/api/doxygen/namespacemembers_func_n.html
index 9431113..09f49fe 100644
--- a/docs/api/doxygen/namespacemembers_func_n.html
+++ b/docs/api/doxygen/namespacemembers_func_n.html
@@ -129,16 +129,20 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a92d2a9f409bae6731c5e5247de0b8c48">tvm::topi</a>
 </li>
 <li>nearbyint()
-: <a class="el" href="namespacetvm.html#a8472b5c842e840063564d4280428ce23">tvm</a>
+: <a class="el" href="namespacetvm.html#ae7826d26d74304ff31ad2cbf278b772c">tvm</a>
+</li>
+<li>neg()
+: <a class="el" href="namespacetvm.html#a5cd85b156fb31f75f91c8a5c012f8a66">tvm</a>
 </li>
 <li>negative()
 : <a class="el" href="namespacetvm_1_1topi.html#af6b3e60333fce92bcf0930e45683a8f6">tvm::topi</a>
 </li>
 <li>nextafter()
-: <a class="el" href="namespacetvm.html#a1088e0c7839baa4c57c80217dd2742ef">tvm</a>
+: <a class="el" href="namespacetvm.html#a96d86ba91e4855c84879ba886465cacf">tvm</a>
 </li>
 <li>not_equal()
-: <a class="el" href="namespacetvm_1_1topi.html#a664e08f7629a1b1fe49dbb688cfa4b8c">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#ac3932d85fd31819eae6a80841296af51">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a19a0d105b4fb3dd7935d7d5d96acebab">tvm::topi</a>
 </li>
 <li>NullValue()
 : <a class="el" href="namespacetvm.html#ab6c242e8ac09beb463fba306948b7f15">tvm</a>
diff --git a/docs/api/doxygen/namespacemembers_func_p.html b/docs/api/doxygen/namespacemembers_func_p.html
index dad9d26..edddc1d 100644
--- a/docs/api/doxygen/namespacemembers_func_p.html
+++ b/docs/api/doxygen/namespacemembers_func_p.html
@@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi_1_1nn.html#a5332db674c357eeaef6f8be48f4a3d6e">tvm::topi::nn</a>
 </li>
 <li>popcount()
-: <a class="el" href="namespacetvm.html#a04551919927933a4265c87809d889577">tvm</a>
+: <a class="el" href="namespacetvm.html#acde00e06bb7d8ccd78f1dd33b966e178">tvm</a>
 , <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a2172690dd21d7fd50a4fd4d696ea7bb2">tvm::tir::builtin</a>
 </li>
 <li>PostOrderRewrite()
@@ -191,7 +191,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 , <a class="el" href="namespacetvm_1_1tir.html#a4b5067fa233d111c9db9cc402ed599c3">tvm::tir</a>
 </li>
 <li>pow()
-: <a class="el" href="namespacetvm.html#a880f0cd15891153430b669f0b4eca2fe">tvm</a>
+: <a class="el" href="namespacetvm.html#a5f6532d705be039030e980bbbf81b096">tvm</a>
 </li>
 <li>power()
 : <a class="el" href="namespacetvm_1_1topi.html#a3bc884285db91e9bd3b4e22ab596063f">tvm::topi</a>
@@ -209,11 +209,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1transform.html#a8cca5b98fb5d34e66444343786d85529">tvm::transform</a>
 </li>
 <li>prod()
-: <a class="el" href="namespacetvm.html#abfe958fd10d2dc2f7004f536aa0e5f2e">tvm</a>
+: <a class="el" href="namespacetvm.html#a32a87ae9eacafb2b5b71b28bcc9ef35e">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a4bc269a40cbdbac3b8b764950820dc8c">tvm::topi</a>
 </li>
 <li>ProdOp()
-: <a class="el" href="namespacetvm_1_1topi.html#a5ad0ffa97748224de362a4801ba91dab">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#af62dd10dd04c1fbf820581b14498de6e">tvm::topi</a>
 </li>
 </ul>
 </div><!-- contents -->
diff --git a/docs/api/doxygen/namespacemembers_func_q.html b/docs/api/doxygen/namespacemembers_func_q.html
index dff1064..94378c9 100644
--- a/docs/api/doxygen/namespacemembers_func_q.html
+++ b/docs/api/doxygen/namespacemembers_func_q.html
@@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
 <li>q_multiply_shift()
-: <a class="el" href="namespacetvm.html#a7022c20876cb3cf611e2f64d005411f5">tvm</a>
+: <a class="el" href="namespacetvm.html#ac788f9eb54a8971596779537afc6c896">tvm</a>
 , <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a0c2ebdcec34d7c79dc8480e5dab8547a">tvm::tir::builtin</a>
 </li>
 </ul>
diff --git a/docs/api/doxygen/namespacemembers_func_r.html b/docs/api/doxygen/namespacemembers_func_r.html
index 3300b66..e83e821 100644
--- a/docs/api/doxygen/namespacemembers_func_r.html
+++ b/docs/api/doxygen/namespacemembers_func_r.html
@@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1te.html#aae384e9b73c2271905486e4a74b69265">tvm::te</a>
 </li>
 <li>reinterpret()
-: <a class="el" href="namespacetvm.html#a2acd72f0adb3d9ae5eede7497b32c139">tvm</a>
+: <a class="el" href="namespacetvm.html#a34084606675cd2c73c6b0f10e1618280">tvm</a>
 , <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a7b555bc5cca2f5e7b26c1037bc0001ce">tvm::tir::builtin</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a25239505894bdae140e53f4abc146f92">tvm::topi</a>
 </li>
@@ -171,7 +171,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#a4fe43327c4454dd05b6e925577443f49">tvm::tir::transform</a>
 </li>
 <li>right_shift()
-: <a class="el" href="namespacetvm_1_1topi.html#aec8705eed0238733dc89e2a34465e9d0">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#ae8ecc0382685a855187bede0c97d93e6">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a9673b9caffb46404b566c3f04a492dfe">tvm::topi</a>
 </li>
 <li>rocblas_batch_matmul()
 : <a class="el" href="namespacetvm_1_1topi_1_1contrib.html#abf1113dd429e1285752b48f62fe12848">tvm::topi::contrib</a>
@@ -180,14 +181,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi_1_1contrib.html#abefad1f2ad083fc038566a9ef6278dff">tvm::topi::contrib</a>
 </li>
 <li>round()
-: <a class="el" href="namespacetvm.html#a660170263d6864b1caa60728619971be">tvm</a>
+: <a class="el" href="namespacetvm.html#a54d9c399c82d7f384ee93f235496ab64">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ac8101cdce02816930697ab74213ff059">tvm::topi</a>
 </li>
 <li>rr_partitioner()
 : <a class="el" href="namespacetvm_1_1support.html#a4dcfaef2dd891a956d23298c943a3fba">tvm::support</a>
 </li>
 <li>rsqrt()
-: <a class="el" href="namespacetvm.html#ae77bc5dc1c2f4bcafcac8ad698b089a5">tvm</a>
+: <a class="el" href="namespacetvm.html#a5196b8d7b5d5453e624ab22d0fefb652">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a87781e08068ff16cbae1356a32331cdc">tvm::topi</a>
 </li>
 <li>RuntimeEnabled()
diff --git a/docs/api/doxygen/namespacemembers_func_s.html b/docs/api/doxygen/namespacemembers_func_s.html
index 38f58c5..760ee39 100644
--- a/docs/api/doxygen/namespacemembers_func_s.html
+++ b/docs/api/doxygen/namespacemembers_func_s.html
@@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir.html#aeb03afda344eb4d3a5d2d3fd4e1d266d">tvm::tir</a>
 </li>
 <li>sigmoid()
-: <a class="el" href="namespacetvm.html#a1bf7732939d615e08d0d991e2f271c42">tvm</a>
+: <a class="el" href="namespacetvm.html#aa048961a5d19e9f32071c1372809ecbd">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a634f2cae777a74898cba19fecb6aa236">tvm::topi</a>
 </li>
 <li>sign()
@@ -250,11 +250,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#add13a2ad7b216ad4683141bbbb4f6943">tvm::relay::transform</a>
 </li>
 <li>sin()
-: <a class="el" href="namespacetvm.html#aeb9b0d266628cfa6c4d254c4e719249a">tvm</a>
+: <a class="el" href="namespacetvm.html#a532ceddde4b8c713b0b1d7e737fcf5fb">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a9324152638ced8a637ca5b0f786823a1">tvm::topi</a>
 </li>
 <li>sinh()
-: <a class="el" href="namespacetvm.html#a8c17ac9dc5cd2be44dd2c3ef23e0e4c9">tvm</a>
+: <a class="el" href="namespacetvm.html#ad828bc801c73df761c58d9f8877d52ee">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a4de8eca3c44c4290a841a34e944471e0">tvm::topi</a>
 </li>
 <li>SkipAssert()
@@ -294,7 +294,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#a4ec5dffb2a177bfd7548be4d974cba71">tvm::tir::transform</a>
 </li>
 <li>sqrt()
-: <a class="el" href="namespacetvm.html#a0a4fcbbd8d9db345d4d7e8bb0a76671a">tvm</a>
+: <a class="el" href="namespacetvm.html#abf978d3e6abd0e3754b853dc4fa9869e">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#afcb5b7f165408d00b0282b4b02c81b01">tvm::topi</a>
 </li>
 <li>squeeze()
@@ -330,14 +330,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>String2DLDataType()
 : <a class="el" href="namespacetvm_1_1runtime.html#a277f104e659f71cd8885744700016341">tvm::runtime</a>
 </li>
+<li>sub()
+: <a class="el" href="namespacetvm.html#af2d75a528d344c6cfcf8b726a6abb7cc">tvm</a>
+</li>
 <li>Substitute()
-: <a class="el" href="namespacetvm_1_1tir.html#a2655d133d1c775d6b63298a65bc0cca2">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#a34ae87f765e4d8230e3572428cdbe3e1">tvm::tir</a>
 </li>
 <li>subtract()
 : <a class="el" href="namespacetvm_1_1topi.html#a3030be37f9db43ef90a5b2cc0997acd6">tvm::topi</a>
 </li>
 <li>sum()
-: <a class="el" href="namespacetvm.html#a913164b4939fc934c2dcedde6e1a674c">tvm</a>
+: <a class="el" href="namespacetvm.html#afdad0c0329bd39949ba8d296cfb85d76">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#abee7c35e8c15e2e61afe35852dfcb252">tvm::topi</a>
 </li>
 </ul>
diff --git a/docs/api/doxygen/namespacemembers_func_t.html b/docs/api/doxygen/namespacemembers_func_t.html
index dce7d2b..95de125 100644
--- a/docs/api/doxygen/namespacemembers_func_t.html
+++ b/docs/api/doxygen/namespacemembers_func_t.html
@@ -126,11 +126,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a11977ea1150d72f563e108b0f3a55228">tvm::topi</a>
 </li>
 <li>tan()
-: <a class="el" href="namespacetvm.html#aaabcd438dbdc57aa6866fde3edaf2d83">tvm</a>
+: <a class="el" href="namespacetvm.html#af99838098788d40c80b402f29b3c2e8c">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a72cecc04f354325be776ee0be38bc898">tvm::topi</a>
 </li>
 <li>tanh()
-: <a class="el" href="namespacetvm.html#ad8a570f4008eb8869504544d7a1cd8ce">tvm</a>
+: <a class="el" href="namespacetvm.html#a12c5457301d8a2c03a2ba1163edd7cee">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a62884820a989f41072a0a16c9c305f7a">tvm::topi</a>
 </li>
 <li>tensordot()
@@ -175,13 +175,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 </li>
 <li>trunc()
 : <a class="el" href="namespacetvm_1_1topi.html#abce0b489827e072452abc0adbd9d1820">tvm::topi</a>
-, <a class="el" href="namespacetvm.html#ae17d5a4cdf12b4da457d4929030592cf">tvm</a>
+, <a class="el" href="namespacetvm.html#a5472f967969aebee254e8e78f2396436">tvm</a>
 </li>
 <li>truncdiv()
-: <a class="el" href="namespacetvm.html#a7bcbff6b886a4fa59b65e7cf05714b49">tvm</a>
+: <a class="el" href="namespacetvm.html#ac62b239b36ad259a118bb20cb78a01a2">tvm</a>
 </li>
 <li>truncmod()
-: <a class="el" href="namespacetvm.html#ae3fd62ca6008d6f20e4845426ec47aa6">tvm</a>
+: <a class="el" href="namespacetvm.html#a2428ea0e23bd9f7218aebd066bb2cd88">tvm</a>
 </li>
 <li>tvm_access_ptr()
 : <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a3e84c73dbbcf7f97008ac84c169feae9">tvm::tir::builtin</a>
diff --git a/docs/api/doxygen/namespacemembers_g.html b/docs/api/doxygen/namespacemembers_g.html
index bbe2d80..5ccf44a 100644
--- a/docs/api/doxygen/namespacemembers_g.html
+++ b/docs/api/doxygen/namespacemembers_g.html
@@ -204,10 +204,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1te.html#a0de1399717049f2b3582f0344b267d56">tvm::te</a>
 </li>
 <li>greater()
-: <a class="el" href="namespacetvm_1_1topi.html#ab35dd0e7cf7caa332e34ac352253d88f">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a5f708bf8051251f44b9550a11ac324fc">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#acf30a8cba376ecf711ba3a4e69060aa1">tvm::topi</a>
 </li>
 <li>greater_equal()
-: <a class="el" href="namespacetvm_1_1topi.html#a7690570d47d66ab60727a4a41ed2f78b">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a78f0e420a400bb38907d21cfeaab8e18">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a60a5cca1ed13f268e12f4a8c6dba48a7">tvm::topi</a>
 </li>
 <li>group_conv2d_ngchw()
 : <a class="el" href="namespacetvm_1_1topi.html#a4c2a0e74a45381e899f9ff788365eff0">tvm::topi</a>
diff --git a/docs/api/doxygen/namespacemembers_h.html b/docs/api/doxygen/namespacemembers_h.html
index a3158cd..7ee58f8 100644
--- a/docs/api/doxygen/namespacemembers_h.html
+++ b/docs/api/doxygen/namespacemembers_h.html
@@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#acd2b8fdd84785388630e2d52a6e3cc54">tvm::tir::transform</a>
 </li>
 <li>hypot()
-: <a class="el" href="namespacetvm.html#a2b99c7295d92bb6acb62276af5bf9dff">tvm</a>
+: <a class="el" href="namespacetvm.html#a28e456d33229a628a312110db8d45b44">tvm</a>
 </li>
 </ul>
 </div><!-- contents -->
diff --git a/docs/api/doxygen/namespacemembers_i.html b/docs/api/doxygen/namespacemembers_i.html
index ca1663f..2cd60a2 100644
--- a/docs/api/doxygen/namespacemembers_i.html
+++ b/docs/api/doxygen/namespacemembers_i.html
@@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#aa86493f01692ff5ecfdb2d202306854c">tvm::topi</a>
 </li>
 <li>if_then_else()
-: <a class="el" href="namespacetvm.html#ad400409d87dc337f8b5fe13e18d363f9">tvm</a>
+: <a class="el" href="namespacetvm.html#a353217978feabae3575560bf1586885f">tvm</a>
 , <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#ae741e67259cd4b844a8934f2e2704adc">tvm::tir::builtin</a>
 </li>
 <li>IncompleteType
@@ -139,13 +139,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1runtime_1_1vm.html#a3597867d2db714bf760876a23d6b7d3d">tvm::runtime::vm</a>
 </li>
 <li>indexdiv()
-: <a class="el" href="namespacetvm.html#af9a4e8a59397e5778c38356129c06110">tvm</a>
+: <a class="el" href="namespacetvm.html#a8e795784bc91d7d0ad50df1d6a849b56">tvm</a>
 </li>
 <li>IndexExpr
 : <a class="el" href="namespacetvm_1_1relay.html#ae153a27d81399fd266b8d598227764c4">tvm::relay</a>
 </li>
 <li>indexmod()
-: <a class="el" href="namespacetvm.html#a857781b7243b2f90018f7fe6baf9c30e">tvm</a>
+: <a class="el" href="namespacetvm.html#ada5ad8338d3144221d8f16380e6c4855">tvm</a>
 </li>
 <li>InferBound()
 : <a class="el" href="namespacetvm_1_1te.html#ac0effd02bbddf8ce2cce7073e175ca4c">tvm::te</a>
@@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#a1a4fe2161bf32a60bc2e57debab083ee">tvm::relay::transform</a>
 </li>
 <li>infinity()
-: <a class="el" href="namespacetvm.html#a9bf1977e7bc6f0424f4e87d77d0008ed">tvm</a>
+: <a class="el" href="namespacetvm.html#a8934beb918da0e451d3aab7ccbcd9859">tvm</a>
 </li>
 <li>InjectCopyIntrin()
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#ae70d9af70526908167101609baaf4142">tvm::tir::transform</a>
@@ -220,15 +220,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1runtime.html#adb2ed1227b418f5846d43d3234b52391">tvm::runtime</a>
 </li>
 <li>isfinite()
-: <a class="el" href="namespacetvm.html#a6a48a2b96c995f412390db3ea3b38bd9">tvm</a>
+: <a class="el" href="namespacetvm.html#a096aa20c0df975d089231b2c6fda2e61">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a2075cd14f51f7e5eb6d3466c5dfb9fa6">tvm::topi</a>
 </li>
 <li>isinf()
-: <a class="el" href="namespacetvm.html#a30e728d87aa70f76d7f4a09316c9746d">tvm</a>
+: <a class="el" href="namespacetvm.html#ac06a47be8386f28b313903e174dfe151">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a2769b4e6636c4947973d6e1dea7a1a39">tvm::topi</a>
 </li>
 <li>isnan()
-: <a class="el" href="namespacetvm.html#a8f98d60fdc4526b07c8858d6b0b8d1ee">tvm</a>
+: <a class="el" href="namespacetvm.html#a4a6399430c10dccd79f64222cda011ed">tvm</a>
 , <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a6f53be295396c301082696ca0c113501">tvm::tir::builtin</a>
 , <a class="el" href="namespacetvm_1_1topi.html#acf8aca9718d5c44a8e715c52adb1521a">tvm::topi</a>
 </li>
diff --git a/docs/api/doxygen/namespacemembers_l.html b/docs/api/doxygen/namespacemembers_l.html
index 1dc2581..148844a 100644
--- a/docs/api/doxygen/namespacemembers_l.html
+++ b/docs/api/doxygen/namespacemembers_l.html
@@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a322ae63444ed4e5fcf7247aa93f8bb7c">tvm::tir::builtin</a>
 </li>
 <li>LargeUIntImm()
-: <a class="el" href="namespacetvm.html#a1b6f1345a0ac2506132b15ec4cbf3599">tvm</a>
+: <a class="el" href="namespacetvm.html#a98a791851ba1a7631e50587ae370b3b8">tvm</a>
 </li>
 <li>layout_transform()
 : <a class="el" href="namespacetvm_1_1topi.html#a8a41a08eee70607889b738946ed97873">tvm::topi</a>
@@ -138,60 +138,66 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#ab6e60251741cca1e811564b2f03a4a5d">tvm::relay::transform</a>
 </li>
 <li>ldexp()
-: <a class="el" href="namespacetvm.html#a90a9e2efafc1994a4cd84a26d74c75c3">tvm</a>
+: <a class="el" href="namespacetvm.html#ac5347541411e75f59758a29596565f63">tvm</a>
 </li>
 <li>leaky_relu()
 : <a class="el" href="namespacetvm_1_1topi.html#a54fc6163dddcf865940e1d030058a2f1">tvm::topi</a>
 </li>
 <li>left_shift()
-: <a class="el" href="namespacetvm_1_1topi.html#a46057526edd4bbd0a291edf7f0c863b4">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#ad4fceb4266c6e7644fa373eacf73359f">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a46057526edd4bbd0a291edf7f0c863b4">tvm::topi</a>
 </li>
 <li>Legalize()
 : <a class="el" href="namespacetvm_1_1relay_1_1qnn_1_1transform.html#a2323e3c38cc9ae1626cd98295b83e906">tvm::relay::qnn::transform</a>
 , <a class="el" href="namespacetvm_1_1relay_1_1transform.html#aae623a28eda64b60c6ee90edde103891">tvm::relay::transform</a>
 </li>
 <li>less()
-: <a class="el" href="namespacetvm_1_1topi.html#a3a904391f0b94919d15f43ba9d0e0564">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a52fa1dc57423a077eb098960162e7b85">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a28aa974fb51f2e262413811cab7f969e">tvm::topi</a>
 </li>
 <li>less_equal()
-: <a class="el" href="namespacetvm_1_1topi.html#aab3e2cccec9b8e90aa01e64c2587d8d9">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a59f1a9bebe7948e2570b8c01386253d4">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#aab3e2cccec9b8e90aa01e64c2587d8d9">tvm::topi</a>
 </li>
 <li>LiftAttrScope()
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#a1a6050dba3ac8efbb922ce0477198ab3">tvm::tir::transform</a>
 </li>
 <li>likely()
-: <a class="el" href="namespacetvm.html#ad6ee4c2d41e7e226d1995112cd12e3f1">tvm</a>
+: <a class="el" href="namespacetvm.html#a336b811d7f339f888ad38d2e2657710d">tvm</a>
 , <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a21d1f0395dca5af4a90cdb42c1d1d154">tvm::tir::builtin</a>
 </li>
 <li>LoadJSON()
 : <a class="el" href="namespacetvm.html#afa0a9bdf3997ef4fad45b19fb1a655cd">tvm</a>
 </li>
 <li>log()
-: <a class="el" href="namespacetvm.html#aed9236feb2ab21523cb2dcb0257fe8da">tvm</a>
+: <a class="el" href="namespacetvm.html#ae39f72b12020a4f7ad6b16b66ffdfe1f">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a6ae5383c136d68a21f01df8d15f38da3">tvm::topi</a>
 </li>
 <li>log10()
-: <a class="el" href="namespacetvm.html#a04657a6242778fd95b77df057385e398">tvm</a>
+: <a class="el" href="namespacetvm.html#a16a5aa0300233b6c5fbcc61c424eee30">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ace1568d4e83cf878685d833d7d772db8">tvm::topi</a>
 </li>
 <li>log2()
-: <a class="el" href="namespacetvm.html#aae5edd83ffa099868f2d58a9def0b2b4">tvm</a>
+: <a class="el" href="namespacetvm.html#ac1b3a94a13d11c02d7e79cad2638e74a">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a6846104353a5455dfbf907139f70be9c">tvm::topi</a>
 </li>
 <li>log_softmax()
 : <a class="el" href="namespacetvm_1_1topi_1_1nn.html#ac0e20b6b30ec8296c1f037866d3bf772">tvm::topi::nn</a>
 </li>
 <li>logical_and()
-: <a class="el" href="namespacetvm_1_1topi.html#a81fb1c1bf730c4824470aac242c083ff">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a27d5567b95675d383c4675fdcd85346c">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a8c20e1176165a3e6afc804b54d0bbb9c">tvm::topi</a>
 </li>
 <li>logical_not()
-: <a class="el" href="namespacetvm_1_1topi.html#a16dcf8130b4d437aaedb77dfc8abe15e">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a62955df1df48917116efe39d4cd18fec">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a16dcf8130b4d437aaedb77dfc8abe15e">tvm::topi</a>
 </li>
 <li>logical_or()
-: <a class="el" href="namespacetvm_1_1topi.html#a6da47469f94e8c3f41b3db4ca864193b">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#a6e3893f3b9ed2c3b1135e0f085024767">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#a6da47469f94e8c3f41b3db4ca864193b">tvm::topi</a>
 </li>
 <li>logical_xor()
-: <a class="el" href="namespacetvm_1_1topi.html#af2f8fcdbbf2ebc9e4acc822325f5c768">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#a76700d7d8590d0ef9fe40a81e0f063f8">tvm::topi</a>
 </li>
 <li>loop_scope
 : <a class="el" href="namespacetvm_1_1tir_1_1attr.html#a9125ab905a93924ee79269aa808ed517">tvm::tir::attr</a>
diff --git a/docs/api/doxygen/namespacemembers_m.html b/docs/api/doxygen/namespacemembers_m.html
index e212508..78e4b58 100644
--- a/docs/api/doxygen/namespacemembers_m.html
+++ b/docs/api/doxygen/namespacemembers_m.html
@@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
 <li>make_const()
-: <a class="el" href="namespacetvm_1_1tir.html#a4ea566597880d04bd62fbec687e338b5">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#a1a071208bbbab6b220cf46f5cdccdd86">tvm::tir</a>
 </li>
 <li>make_inplace_array_object()
 : <a class="el" href="namespacetvm_1_1runtime.html#a144496aaff68cd251b6bc0a7b24ca041">tvm::runtime</a>
@@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1runtime.html#a5ca61f3e3dd7af5ee94ed7886f638ee5">tvm::runtime</a>
 </li>
 <li>make_zero()
-: <a class="el" href="namespacetvm_1_1tir.html#adc4408508a413fb7f3b2567f8d847dbb">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#aed3f57cf8d1c3546f075701898c5b70f">tvm::tir</a>
 </li>
 <li>MakeArgmaxReducer()
 : <a class="el" href="namespacetvm_1_1topi.html#a2328ecd4e24c3e5fb6cfb75b21e65536">tvm::topi</a>
@@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a1d3988f52c26cc29967cefa057b79372">tvm::topi</a>
 </li>
 <li>MakeConstScalar()
-: <a class="el" href="namespacetvm_1_1tir.html#af2ca71170aca9d397c2125eb4f55c197">tvm::tir</a>
+: <a class="el" href="namespacetvm_1_1tir.html#a0db485654cd60d43962f532a1b16026c">tvm::tir</a>
 </li>
 <li>MakeDefaultSchedule()
 : <a class="el" href="namespacetvm_1_1topi_1_1x86.html#a7740a46043b6c5514806684970e215b2">tvm::topi::x86</a>
@@ -165,11 +165,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#aead477c6c9d4f4589d22b8acff82040c">tvm::topi</a>
 </li>
 <li>max()
-: <a class="el" href="namespacetvm.html#ab49bad0808ba033343e72ba37b39af2e">tvm</a>
+: <a class="el" href="namespacetvm.html#a0df5ca82d2c566f628ebb2f1e84a3fcb">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a5ba15218e3cb56ec5b92a31b47768ed4">tvm::topi</a>
 </li>
 <li>max_value()
-: <a class="el" href="namespacetvm.html#a2741c5a48b50bf369026a1bbdf02017f">tvm</a>
+: <a class="el" href="namespacetvm.html#a4f1398024c0af23699447ef910b654b8">tvm</a>
 </li>
 <li>MaxConcurrency()
 : <a class="el" href="namespacetvm_1_1runtime_1_1threading.html#af8c1c389a74e67bcc3680555288219f8">tvm::runtime::threading</a>
@@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#afd64bc3e27dfc97002d3add5d7ce4174">tvm::topi</a>
 </li>
 <li>MaxOp()
-: <a class="el" href="namespacetvm_1_1topi.html#ae2b5cdd41be2f6ebaa1adff532863331">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#a38fe82b0db9eab041324da16e532baff">tvm::topi</a>
 </li>
 <li>MeasureErrorNO
 : <a class="el" href="namespacetvm_1_1auto__scheduler.html#acd2b9ff22c8ef2f009aef57f80926b9a">tvm::auto_scheduler</a>
@@ -193,23 +193,26 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1runtime_1_1micro__rpc.html#a07b2902f093d341cd67bd16738037a85">tvm::runtime::micro_rpc</a>
 </li>
 <li>min()
-: <a class="el" href="namespacetvm.html#a7fe0dbe362aac3d4f9c204eeba803d8e">tvm</a>
+: <a class="el" href="namespacetvm.html#aac2abc149c1a47944c37b560181b15c0">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ae488679377c78cd5411b7df11c297673">tvm::topi</a>
 </li>
 <li>min_value()
-: <a class="el" href="namespacetvm.html#a9c126a8dde0d4079713969ca574f172e">tvm</a>
+: <a class="el" href="namespacetvm.html#a3b37fa55ea93d6868751a2441996b072">tvm</a>
 </li>
 <li>minimum()
-: <a class="el" href="namespacetvm_1_1topi.html#aa61b822ffe411c39e9a38dbced1dfefe">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#a4c4789fd4f79c41e94600a7e2a19278b">tvm::topi</a>
 </li>
 <li>MinOp()
-: <a class="el" href="namespacetvm_1_1topi.html#a32ceb743c600288d7af6abf980ae31e8">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#aea9a989b0aaa2aef03fe8ee237d8257e">tvm::topi</a>
 </li>
 <li>mod()
 : <a class="el" href="namespacetvm_1_1topi.html#a9dda1b4f2ff957442e0f7be9c063d508">tvm::topi</a>
 </li>
+<li>mul()
+: <a class="el" href="namespacetvm.html#a40c70817dccaa589da0562bc8f179008">tvm</a>
+</li>
 <li>multiply()
-: <a class="el" href="namespacetvm_1_1topi.html#aba354eaa7c2451658083aef4b67c1f94">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#aa815df31023589b6424a69578e8e18bd">tvm::topi</a>
 </li>
 </ul>
 </div><!-- contents -->
diff --git a/docs/api/doxygen/namespacemembers_n.html b/docs/api/doxygen/namespacemembers_n.html
index 8ed5d5e..cba5540 100644
--- a/docs/api/doxygen/namespacemembers_n.html
+++ b/docs/api/doxygen/namespacemembers_n.html
@@ -129,16 +129,20 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a92d2a9f409bae6731c5e5247de0b8c48">tvm::topi</a>
 </li>
 <li>nearbyint()
-: <a class="el" href="namespacetvm.html#a8472b5c842e840063564d4280428ce23">tvm</a>
+: <a class="el" href="namespacetvm.html#ae7826d26d74304ff31ad2cbf278b772c">tvm</a>
+</li>
+<li>neg()
+: <a class="el" href="namespacetvm.html#a5cd85b156fb31f75f91c8a5c012f8a66">tvm</a>
 </li>
 <li>negative()
 : <a class="el" href="namespacetvm_1_1topi.html#af6b3e60333fce92bcf0930e45683a8f6">tvm::topi</a>
 </li>
 <li>nextafter()
-: <a class="el" href="namespacetvm.html#a1088e0c7839baa4c57c80217dd2742ef">tvm</a>
+: <a class="el" href="namespacetvm.html#a96d86ba91e4855c84879ba886465cacf">tvm</a>
 </li>
 <li>not_equal()
-: <a class="el" href="namespacetvm_1_1topi.html#ab9f1815688c196c4b550e003ef6660af">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#ac3932d85fd31819eae6a80841296af51">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#ab9f1815688c196c4b550e003ef6660af">tvm::topi</a>
 </li>
 <li>NullOpt
 : <a class="el" href="namespacetvm.html#aae7034e3e41c18e7fb78ff32bfc6a318">tvm</a>
diff --git a/docs/api/doxygen/namespacemembers_p.html b/docs/api/doxygen/namespacemembers_p.html
index 0c7859f..daeb6c7 100644
--- a/docs/api/doxygen/namespacemembers_p.html
+++ b/docs/api/doxygen/namespacemembers_p.html
@@ -213,7 +213,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi_1_1nn.html#a3ffa0974d8cdcd5b8ca7afb3cfbaf53c">tvm::topi::nn</a>
 </li>
 <li>popcount()
-: <a class="el" href="namespacetvm.html#a04551919927933a4265c87809d889577">tvm</a>
+: <a class="el" href="namespacetvm.html#acde00e06bb7d8ccd78f1dd33b966e178">tvm</a>
 , <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a2172690dd21d7fd50a4fd4d696ea7bb2">tvm::tir::builtin</a>
 </li>
 <li>PostOrderRewrite()
@@ -224,7 +224,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 , <a class="el" href="namespacetvm_1_1tir.html#a4b5067fa233d111c9db9cc402ed599c3">tvm::tir</a>
 </li>
 <li>pow()
-: <a class="el" href="namespacetvm.html#a880f0cd15891153430b669f0b4eca2fe">tvm</a>
+: <a class="el" href="namespacetvm.html#a5f6532d705be039030e980bbbf81b096">tvm</a>
 </li>
 <li>power()
 : <a class="el" href="namespacetvm_1_1topi.html#a3bc884285db91e9bd3b4e22ab596063f">tvm::topi</a>
@@ -257,11 +257,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1transform.html#a8cca5b98fb5d34e66444343786d85529">tvm::transform</a>
 </li>
 <li>prod()
-: <a class="el" href="namespacetvm.html#abfe958fd10d2dc2f7004f536aa0e5f2e">tvm</a>
+: <a class="el" href="namespacetvm.html#a32a87ae9eacafb2b5b71b28bcc9ef35e">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a4bc269a40cbdbac3b8b764950820dc8c">tvm::topi</a>
 </li>
 <li>ProdOp()
-: <a class="el" href="namespacetvm_1_1topi.html#a5ad0ffa97748224de362a4801ba91dab">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#af62dd10dd04c1fbf820581b14498de6e">tvm::topi</a>
 </li>
 </ul>
 </div><!-- contents -->
diff --git a/docs/api/doxygen/namespacemembers_q.html b/docs/api/doxygen/namespacemembers_q.html
index 4bc0b6c..1e4054f 100644
--- a/docs/api/doxygen/namespacemembers_q.html
+++ b/docs/api/doxygen/namespacemembers_q.html
@@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
 <li>q_multiply_shift()
-: <a class="el" href="namespacetvm.html#a7022c20876cb3cf611e2f64d005411f5">tvm</a>
+: <a class="el" href="namespacetvm.html#ac788f9eb54a8971596779537afc6c896">tvm</a>
 , <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a0c2ebdcec34d7c79dc8480e5dab8547a">tvm::tir::builtin</a>
 </li>
 </ul>
diff --git a/docs/api/doxygen/namespacemembers_r.html b/docs/api/doxygen/namespacemembers_r.html
index 6eac128..0c8f484 100644
--- a/docs/api/doxygen/namespacemembers_r.html
+++ b/docs/api/doxygen/namespacemembers_r.html
@@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1runtime_1_1vm.html#a3bbbf700719e9dc3dda2bc25210c18ae">tvm::runtime::vm</a>
 </li>
 <li>reinterpret()
-: <a class="el" href="namespacetvm.html#a2acd72f0adb3d9ae5eede7497b32c139">tvm</a>
+: <a class="el" href="namespacetvm.html#a34084606675cd2c73c6b0f10e1618280">tvm</a>
 , <a class="el" href="namespacetvm_1_1tir_1_1builtin.html#a7b555bc5cca2f5e7b26c1037bc0001ce">tvm::tir::builtin</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a25239505894bdae140e53f4abc146f92">tvm::topi</a>
 </li>
@@ -189,7 +189,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#a4fe43327c4454dd05b6e925577443f49">tvm::tir::transform</a>
 </li>
 <li>right_shift()
-: <a class="el" href="namespacetvm_1_1topi.html#af4d241b8705ec1d62785900224f77aab">tvm::topi</a>
+: <a class="el" href="namespacetvm.html#ae8ecc0382685a855187bede0c97d93e6">tvm</a>
+, <a class="el" href="namespacetvm_1_1topi.html#af4d241b8705ec1d62785900224f77aab">tvm::topi</a>
 </li>
 <li>rocblas_batch_matmul()
 : <a class="el" href="namespacetvm_1_1topi_1_1contrib.html#abf1113dd429e1285752b48f62fe12848">tvm::topi::contrib</a>
@@ -198,14 +199,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi_1_1contrib.html#abefad1f2ad083fc038566a9ef6278dff">tvm::topi::contrib</a>
 </li>
 <li>round()
-: <a class="el" href="namespacetvm.html#a660170263d6864b1caa60728619971be">tvm</a>
+: <a class="el" href="namespacetvm.html#a54d9c399c82d7f384ee93f235496ab64">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#ac8101cdce02816930697ab74213ff059">tvm::topi</a>
 </li>
 <li>rr_partitioner()
 : <a class="el" href="namespacetvm_1_1support.html#a4dcfaef2dd891a956d23298c943a3fba">tvm::support</a>
 </li>
 <li>rsqrt()
-: <a class="el" href="namespacetvm.html#ae77bc5dc1c2f4bcafcac8ad698b089a5">tvm</a>
+: <a class="el" href="namespacetvm.html#a5196b8d7b5d5453e624ab22d0fefb652">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a87781e08068ff16cbae1356a32331cdc">tvm::topi</a>
 </li>
 <li>RuntimeEnabled()
diff --git a/docs/api/doxygen/namespacemembers_s.html b/docs/api/doxygen/namespacemembers_s.html
index 2fd672c..85b9300 100644
--- a/docs/api/doxygen/namespacemembers_s.html
+++ b/docs/api/doxygen/namespacemembers_s.html
@@ -249,7 +249,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir.html#aeb03afda344eb4d3a5d2d3fd4e1d266d">tvm::tir</a>
 </li>
 <li>sigmoid()
-: <a class="el" href="namespacetvm.html#a1bf7732939d615e08d0d991e2f271c42">tvm</a>
+: <a class="el" href="namespacetvm.html#aa048961a5d19e9f32071c1372809ecbd">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a634f2cae777a74898cba19fecb6aa236">tvm::topi</a>
 </li>
 <li>sign()
@@ -268,11 +268,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay_1_1transform.html#add13a2ad7b216ad4683141bbbb4f6943">tvm::relay::transform</a>
 </li>
 <li>sin()
-: <a class="el" href="namespacetvm.html#aeb9b0d266628cfa6c4d254c4e719249a">tvm</a>
+: <a class="el" href="namespacetvm.html#a532ceddde4b8c713b0b1d7e737fcf5fb">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a9324152638ced8a637ca5b0f786823a1">tvm::topi</a>
 </li>
 <li>sinh()
-: <a class="el" href="namespacetvm.html#a8c17ac9dc5cd2be44dd2c3ef23e0e4c9">tvm</a>
+: <a class="el" href="namespacetvm.html#ad828bc801c73df761c58d9f8877d52ee">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a4de8eca3c44c4290a841a34e944471e0">tvm::topi</a>
 </li>
 <li>SkipAssert()
@@ -321,7 +321,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1tir_1_1transform.html#a4ec5dffb2a177bfd7548be4d974cba71">tvm::tir::transform</a>
 </li>
 <li>sqrt()
-: <a class="el" href="namespacetvm.html#a0a4fcbbd8d9db345d4d7e8bb0a76671a">tvm</a>
+: <a class="el" href="namespacetvm.html#abf978d3e6abd0e3754b853dc4fa9869e">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#afcb5b7f165408d00b0282b4b02c81b01">tvm::topi</a>
 </li>
 <li>squeeze()
@@ -372,14 +372,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <li>String2DLDataType()
 : <a class="el" href="namespacetvm_1_1runtime.html#a277f104e659f71cd8885744700016341">tvm::runtime</a>
 </li>
+<li>sub()
+: <a class="el" href="namespacetvm.html#a89da021f5e3e2e911acfd96f973e5bc3">tvm</a>
+</li>
 <li>Substitute()
 : <a class="el" href="namespacetvm_1_1tir.html#a71cc8d64e0d78149a19413953dec6230">tvm::tir</a>
 </li>
 <li>subtract()
-: <a class="el" href="namespacetvm_1_1topi.html#afba7b1212f2ecb1c33576209fc6bf568">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#a4a5a93114d0aca42e6f90e8fdc2469ad">tvm::topi</a>
 </li>
 <li>sum()
-: <a class="el" href="namespacetvm.html#a913164b4939fc934c2dcedde6e1a674c">tvm</a>
+: <a class="el" href="namespacetvm.html#afdad0c0329bd39949ba8d296cfb85d76">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#abee7c35e8c15e2e61afe35852dfcb252">tvm::topi</a>
 </li>
 </ul>
diff --git a/docs/api/doxygen/namespacemembers_t.html b/docs/api/doxygen/namespacemembers_t.html
index dfde146..1da0a31 100644
--- a/docs/api/doxygen/namespacemembers_t.html
+++ b/docs/api/doxygen/namespacemembers_t.html
@@ -126,11 +126,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1topi.html#a11977ea1150d72f563e108b0f3a55228">tvm::topi</a>
 </li>
 <li>tan()
-: <a class="el" href="namespacetvm.html#aaabcd438dbdc57aa6866fde3edaf2d83">tvm</a>
+: <a class="el" href="namespacetvm.html#af99838098788d40c80b402f29b3c2e8c">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a72cecc04f354325be776ee0be38bc898">tvm::topi</a>
 </li>
 <li>tanh()
-: <a class="el" href="namespacetvm.html#ad8a570f4008eb8869504544d7a1cd8ce">tvm</a>
+: <a class="el" href="namespacetvm.html#a12c5457301d8a2c03a2ba1163edd7cee">tvm</a>
 , <a class="el" href="namespacetvm_1_1topi.html#a62884820a989f41072a0a16c9c305f7a">tvm::topi</a>
 </li>
 <li>TCallEffectKind
@@ -202,13 +202,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 </li>
 <li>trunc()
 : <a class="el" href="namespacetvm_1_1topi.html#abce0b489827e072452abc0adbd9d1820">tvm::topi</a>
-, <a class="el" href="namespacetvm.html#ae17d5a4cdf12b4da457d4929030592cf">tvm</a>
+, <a class="el" href="namespacetvm.html#a5472f967969aebee254e8e78f2396436">tvm</a>
 </li>
 <li>truncdiv()
-: <a class="el" href="namespacetvm.html#a7bcbff6b886a4fa59b65e7cf05714b49">tvm</a>
+: <a class="el" href="namespacetvm.html#ac62b239b36ad259a118bb20cb78a01a2">tvm</a>
 </li>
 <li>truncmod()
-: <a class="el" href="namespacetvm.html#ae3fd62ca6008d6f20e4845426ec47aa6">tvm</a>
+: <a class="el" href="namespacetvm.html#a2428ea0e23bd9f7218aebd066bb2cd88">tvm</a>
 </li>
 <li>TShapeDataDependant
 : <a class="el" href="namespacetvm_1_1relay.html#a75252d8d7e8d18b796074ffe4cc9f3ff">tvm::relay</a>
diff --git a/docs/api/doxygen/namespacemembers_type.html b/docs/api/doxygen/namespacemembers_type.html
index c88b014..1bf3dd9 100644
--- a/docs/api/doxygen/namespacemembers_type.html
+++ b/docs/api/doxygen/namespacemembers_type.html
@@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="namespacetvm_1_1relay.html#a9abada45a4f21ae750c1caba923f1059">tvm::relay</a>
 </li>
 <li>FReduce
-: <a class="el" href="namespacetvm_1_1topi.html#a61ff09406948a8ab5d0769819b977900">tvm::topi</a>
+: <a class="el" href="namespacetvm_1_1topi.html#af0e52ef3c0d8e11bf493d5163033cd0d">tvm::topi</a>
 </li>
 <li>FShapeFunc
 : <a class="el" href="namespacetvm_1_1relay.html#afeda9240bb23d0092992928c6d141729">tvm::relay</a>
diff --git a/docs/api/doxygen/namespacetvm.html b/docs/api/doxygen/namespacetvm.html
index 83fec31..527835c 100644
--- a/docs/api/doxygen/namespacetvm.html
+++ b/docs/api/doxygen/namespacetvm.html
@@ -590,221 +590,278 @@ Functions</h2></td></tr>
 <tr class="memitem:a0447e9aa45f6cab707f6dc9f9281b3f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1DataType.html">runtime::DataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a0447e9aa45f6cab707f6dc9f9281b3f5">GetRuntimeDataType</a> (const <a class="el" href="classtvm_1_1Type.html">Type</a> &amp;type)</td></tr>
 <tr class="memdesc:a0447e9aa45f6cab707f6dc9f9281b3f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the implied DataType for storing values with type during runtime.  <a href="#a0447e9aa45f6cab707f6dc9f9281b3f5">More...</a><br /></td></tr>
 <tr class="separator:a0447e9aa45f6cab707f6dc9f9281b3f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2741c5a48b50bf369026a1bbdf02017f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a2741c5a48b50bf369026a1bbdf02017f">max_value</a> (const <a class="el" href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">DataType</a> &amp;dtype)</td></tr>
-<tr class="separator:a2741c5a48b50bf369026a1bbdf02017f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9c126a8dde0d4079713969ca574f172e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9c126a8dde0d4079713969ca574f172e">min_value</a> (const <a class="el" href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">DataType</a> &amp;dtype)</td></tr>
-<tr class="separator:a9c126a8dde0d4079713969ca574f172e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9bf1977e7bc6f0424f4e87d77d0008ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9bf1977e7bc6f0424f4e87d77d0008ed">infinity</a> (const <a class="el" href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">DataType</a> &amp;dtype)</td></tr>
-<tr class="separator:a9bf1977e7bc6f0424f4e87d77d0008ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa058caeda9deceda3d6ffeda347be442"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aa058caeda9deceda3d6ffeda347be442">cast</a> (const <a class="el" href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">DataType</a> &amp;t, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> value)</td></tr>
-<tr class="memdesc:aa058caeda9deceda3d6ffeda347be442"><td class="mdescLeft">&#160;</td><td class="mdescRight">cast value to type.  <a href="#aa058caeda9deceda3d6ffeda347be442">More...</a><br /></td></tr>
-<tr class="separator:aa058caeda9deceda3d6ffeda347be442"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2acd72f0adb3d9ae5eede7497b32c139"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a2acd72f0adb3d9ae5eede7497b32c139">reinterpret</a> (const <a class="el" href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">DataType</a> &amp;t, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> value)</td></tr>
-<tr class="memdesc:a2acd72f0adb3d9ae5eede7497b32c139"><td class="mdescLeft">&#160;</td><td class="mdescRight">perform reinterpret cast value to type.  <a href="#a2acd72f0adb3d9ae5eede7497b32c139">More...</a><br /></td></tr>
-<tr class="separator:a2acd72f0adb3d9ae5eede7497b32c139"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4f1398024c0af23699447ef910b654b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a4f1398024c0af23699447ef910b654b8">max_value</a> (const <a class="el" href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">DataType</a> &amp;dtype, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtv [...]
+<tr class="separator:a4f1398024c0af23699447ef910b654b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b37fa55ea93d6868751a2441996b072"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a3b37fa55ea93d6868751a2441996b072">min_value</a> (const <a class="el" href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">DataType</a> &amp;dtype, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtv [...]
+<tr class="separator:a3b37fa55ea93d6868751a2441996b072"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8934beb918da0e451d3aab7ccbcd9859"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a8934beb918da0e451d3aab7ccbcd9859">infinity</a> (const <a class="el" href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">DataType</a> &amp;dtype, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm [...]
+<tr class="separator:a8934beb918da0e451d3aab7ccbcd9859"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4bfb789a86d95f6241b50fd26f269c28"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a4bfb789a86d95f6241b50fd26f269c28">cast</a> (const <a class="el" href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">DataType</a> &amp;t, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> value, <a class="el" href="classt [...]
+<tr class="memdesc:a4bfb789a86d95f6241b50fd26f269c28"><td class="mdescLeft">&#160;</td><td class="mdescRight">cast value to type.  <a href="#a4bfb789a86d95f6241b50fd26f269c28">More...</a><br /></td></tr>
+<tr class="separator:a4bfb789a86d95f6241b50fd26f269c28"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a34084606675cd2c73c6b0f10e1618280"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a34084606675cd2c73c6b0f10e1618280">reinterpret</a> (const <a class="el" href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">DataType</a> &amp;t, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> value, <a class="el" href= [...]
+<tr class="memdesc:a34084606675cd2c73c6b0f10e1618280"><td class="mdescLeft">&#160;</td><td class="mdescRight">perform reinterpret cast value to type.  <a href="#a34084606675cd2c73c6b0f10e1618280">More...</a><br /></td></tr>
+<tr class="separator:a34084606675cd2c73c6b0f10e1618280"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae2794f261657780b2af4208b95d9cfcb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ae2794f261657780b2af4208b95d9cfcb">add</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="e [...]
+<tr class="memdesc:ae2794f261657780b2af4208b95d9cfcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">add operator  <a href="#ae2794f261657780b2af4208b95d9cfcb">More...</a><br /></td></tr>
+<tr class="separator:ae2794f261657780b2af4208b95d9cfcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af246f441d4ac21b110185b77240b2dcc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#af246f441d4ac21b110185b77240b2dcc">operator+</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:af246f441d4ac21b110185b77240b2dcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">add operator  <a href="#af246f441d4ac21b110185b77240b2dcc">More...</a><br /></td></tr>
 <tr class="separator:af246f441d4ac21b110185b77240b2dcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a89da021f5e3e2e911acfd96f973e5bc3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a89da021f5e3e2e911acfd96f973e5bc3">sub</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="e [...]
+<tr class="memdesc:a89da021f5e3e2e911acfd96f973e5bc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">subtraction operator  <a href="#a89da021f5e3e2e911acfd96f973e5bc3">More...</a><br /></td></tr>
+<tr class="separator:a89da021f5e3e2e911acfd96f973e5bc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:abde487c0197942c4ebb1b47277b89dac"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#abde487c0197942c4ebb1b47277b89dac">operator-</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:abde487c0197942c4ebb1b47277b89dac"><td class="mdescLeft">&#160;</td><td class="mdescRight">subtraction operator  <a href="#abde487c0197942c4ebb1b47277b89dac">More...</a><br /></td></tr>
 <tr class="separator:abde487c0197942c4ebb1b47277b89dac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5cd85b156fb31f75f91c8a5c012f8a66"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5cd85b156fb31f75f91c8a5c012f8a66">neg</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:a5cd85b156fb31f75f91c8a5c012f8a66"><td class="mdescLeft">&#160;</td><td class="mdescRight">negation.  <a href="#a5cd85b156fb31f75f91c8a5c012f8a66">More...</a><br /></td></tr>
+<tr class="separator:a5cd85b156fb31f75f91c8a5c012f8a66"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:abc417454badf61b154d6a8d87cd8f171"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#abc417454badf61b154d6a8d87cd8f171">operator-</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a)</td></tr>
 <tr class="memdesc:abc417454badf61b154d6a8d87cd8f171"><td class="mdescLeft">&#160;</td><td class="mdescRight">negation.  <a href="#abc417454badf61b154d6a8d87cd8f171">More...</a><br /></td></tr>
 <tr class="separator:abc417454badf61b154d6a8d87cd8f171"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaa28e92b677086d89ebfb77204bf92a2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aaa28e92b677086d89ebfb77204bf92a2">mul</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="e [...]
+<tr class="memdesc:aaa28e92b677086d89ebfb77204bf92a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">multiplication operator  <a href="#aaa28e92b677086d89ebfb77204bf92a2">More...</a><br /></td></tr>
+<tr class="separator:aaa28e92b677086d89ebfb77204bf92a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a5c5034de2993b9130b7bd9d593a11bb5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5c5034de2993b9130b7bd9d593a11bb5">operator*</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:a5c5034de2993b9130b7bd9d593a11bb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">multiplication operator  <a href="#a5c5034de2993b9130b7bd9d593a11bb5">More...</a><br /></td></tr>
 <tr class="separator:a5c5034de2993b9130b7bd9d593a11bb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a18256ba1213ce5ff3cf8037a314354b7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a18256ba1213ce5ff3cf8037a314354b7">operator/</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:a18256ba1213ce5ff3cf8037a314354b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">division operator  <a href="#a18256ba1213ce5ff3cf8037a314354b7">More...</a><br /></td></tr>
 <tr class="separator:a18256ba1213ce5ff3cf8037a314354b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad4fceb4266c6e7644fa373eacf73359f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ad4fceb4266c6e7644fa373eacf73359f">left_shift</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a c [...]
+<tr class="memdesc:ad4fceb4266c6e7644fa373eacf73359f"><td class="mdescLeft">&#160;</td><td class="mdescRight">left shift operator  <a href="#ad4fceb4266c6e7644fa373eacf73359f">More...</a><br /></td></tr>
+<tr class="separator:ad4fceb4266c6e7644fa373eacf73359f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af682776c3609284f1bc3ea436e21a67a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#af682776c3609284f1bc3ea436e21a67a">operator&lt;&lt;</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:af682776c3609284f1bc3ea436e21a67a"><td class="mdescLeft">&#160;</td><td class="mdescRight">left shift operator  <a href="#af682776c3609284f1bc3ea436e21a67a">More...</a><br /></td></tr>
 <tr class="separator:af682776c3609284f1bc3ea436e21a67a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae8ecc0382685a855187bede0c97d93e6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ae8ecc0382685a855187bede0c97d93e6">right_shift</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a  [...]
+<tr class="memdesc:ae8ecc0382685a855187bede0c97d93e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">right shift operator  <a href="#ae8ecc0382685a855187bede0c97d93e6">More...</a><br /></td></tr>
+<tr class="separator:ae8ecc0382685a855187bede0c97d93e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a1ce1eb32fc9d76ebe5a6b8d185024d41"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a1ce1eb32fc9d76ebe5a6b8d185024d41">operator&gt;&gt;</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:a1ce1eb32fc9d76ebe5a6b8d185024d41"><td class="mdescLeft">&#160;</td><td class="mdescRight">right shift operator  <a href="#a1ce1eb32fc9d76ebe5a6b8d185024d41">More...</a><br /></td></tr>
 <tr class="separator:a1ce1eb32fc9d76ebe5a6b8d185024d41"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7ffc1cdb3a52b680e4b509395c9a252d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a7ffc1cdb3a52b680e4b509395c9a252d">greater</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a clas [...]
+<tr class="memdesc:a7ffc1cdb3a52b680e4b509395c9a252d"><td class="mdescLeft">&#160;</td><td class="mdescRight">greater  <a href="#a7ffc1cdb3a52b680e4b509395c9a252d">More...</a><br /></td></tr>
+<tr class="separator:a7ffc1cdb3a52b680e4b509395c9a252d"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad93d00f7b080dc3f905f5c34c170a041"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ad93d00f7b080dc3f905f5c34c170a041">operator&gt;</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:ad93d00f7b080dc3f905f5c34c170a041"><td class="mdescLeft">&#160;</td><td class="mdescRight">greater  <a href="#ad93d00f7b080dc3f905f5c34c170a041">More...</a><br /></td></tr>
 <tr class="separator:ad93d00f7b080dc3f905f5c34c170a041"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1b704bb5a31b602869fb5c94a56f468"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ab1b704bb5a31b602869fb5c94a56f468">greater_equal</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=< [...]
+<tr class="memdesc:ab1b704bb5a31b602869fb5c94a56f468"><td class="mdescLeft">&#160;</td><td class="mdescRight">greater_equal  <a href="#ab1b704bb5a31b602869fb5c94a56f468">More...</a><br /></td></tr>
+<tr class="separator:ab1b704bb5a31b602869fb5c94a56f468"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a5530417da455bd46f5dc55f27d69bcdf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5530417da455bd46f5dc55f27d69bcdf">operator&gt;=</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:a5530417da455bd46f5dc55f27d69bcdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">greater_equal  <a href="#a5530417da455bd46f5dc55f27d69bcdf">More...</a><br /></td></tr>
 <tr class="separator:a5530417da455bd46f5dc55f27d69bcdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a52fa1dc57423a077eb098960162e7b85"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a52fa1dc57423a077eb098960162e7b85">less</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class=" [...]
+<tr class="memdesc:a52fa1dc57423a077eb098960162e7b85"><td class="mdescLeft">&#160;</td><td class="mdescRight">less  <a href="#a52fa1dc57423a077eb098960162e7b85">More...</a><br /></td></tr>
+<tr class="separator:a52fa1dc57423a077eb098960162e7b85"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a1f98476c3a413f6cdfc7b7e490f3221b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a1f98476c3a413f6cdfc7b7e490f3221b">operator&lt;</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:a1f98476c3a413f6cdfc7b7e490f3221b"><td class="mdescLeft">&#160;</td><td class="mdescRight">less  <a href="#a1f98476c3a413f6cdfc7b7e490f3221b">More...</a><br /></td></tr>
 <tr class="separator:a1f98476c3a413f6cdfc7b7e490f3221b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6dfe80d16a7b4f551c87a8901d366d08"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a6dfe80d16a7b4f551c87a8901d366d08">less_equal</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a c [...]
+<tr class="memdesc:a6dfe80d16a7b4f551c87a8901d366d08"><td class="mdescLeft">&#160;</td><td class="mdescRight">less_equal  <a href="#a6dfe80d16a7b4f551c87a8901d366d08">More...</a><br /></td></tr>
+<tr class="separator:a6dfe80d16a7b4f551c87a8901d366d08"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a598f8139c469abc4066dbdd0a0a0845d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a598f8139c469abc4066dbdd0a0a0845d">operator&lt;=</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:a598f8139c469abc4066dbdd0a0a0845d"><td class="mdescLeft">&#160;</td><td class="mdescRight">less_equal  <a href="#a598f8139c469abc4066dbdd0a0a0845d">More...</a><br /></td></tr>
 <tr class="separator:a598f8139c469abc4066dbdd0a0a0845d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1c4f14382b85bcfa57d9a3460db2354a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class= [...]
+<tr class="memdesc:a1c4f14382b85bcfa57d9a3460db2354a"><td class="mdescLeft">&#160;</td><td class="mdescRight">equal  <a href="#a1c4f14382b85bcfa57d9a3460db2354a">More...</a><br /></td></tr>
+<tr class="separator:a1c4f14382b85bcfa57d9a3460db2354a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2ea3b45c96d3980227e418f7158ce5c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a2ea3b45c96d3980227e418f7158ce5c3">operator==</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:a2ea3b45c96d3980227e418f7158ce5c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">equal  <a href="#a2ea3b45c96d3980227e418f7158ce5c3">More...</a><br /></td></tr>
 <tr class="separator:a2ea3b45c96d3980227e418f7158ce5c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac3932d85fd31819eae6a80841296af51"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac3932d85fd31819eae6a80841296af51">not_equal</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a cl [...]
+<tr class="memdesc:ac3932d85fd31819eae6a80841296af51"><td class="mdescLeft">&#160;</td><td class="mdescRight">not_equal  <a href="#ac3932d85fd31819eae6a80841296af51">More...</a><br /></td></tr>
+<tr class="separator:ac3932d85fd31819eae6a80841296af51"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a03983cf66713724c138f9697bb8e0e97"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a03983cf66713724c138f9697bb8e0e97">operator!=</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:a03983cf66713724c138f9697bb8e0e97"><td class="mdescLeft">&#160;</td><td class="mdescRight">not_equal  <a href="#a03983cf66713724c138f9697bb8e0e97">More...</a><br /></td></tr>
 <tr class="separator:a03983cf66713724c138f9697bb8e0e97"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a27d5567b95675d383c4675fdcd85346c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a27d5567b95675d383c4675fdcd85346c">logical_and</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a  [...]
+<tr class="memdesc:a27d5567b95675d383c4675fdcd85346c"><td class="mdescLeft">&#160;</td><td class="mdescRight">and  <a href="#a27d5567b95675d383c4675fdcd85346c">More...</a><br /></td></tr>
+<tr class="separator:a27d5567b95675d383c4675fdcd85346c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afc83b50366be0862a6c8f88c9a4e62d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#afc83b50366be0862a6c8f88c9a4e62d5">operator&amp;&amp;</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:afc83b50366be0862a6c8f88c9a4e62d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">and  <a href="#afc83b50366be0862a6c8f88c9a4e62d5">More...</a><br /></td></tr>
 <tr class="separator:afc83b50366be0862a6c8f88c9a4e62d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4509dece1af96338cc25097855fcecd7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a4509dece1af96338cc25097855fcecd7">logical_or</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a c [...]
+<tr class="memdesc:a4509dece1af96338cc25097855fcecd7"><td class="mdescLeft">&#160;</td><td class="mdescRight">or  <a href="#a4509dece1af96338cc25097855fcecd7">More...</a><br /></td></tr>
+<tr class="separator:a4509dece1af96338cc25097855fcecd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac3bf2ef3556c995846dddcd84e5db8a6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac3bf2ef3556c995846dddcd84e5db8a6">operator||</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:ac3bf2ef3556c995846dddcd84e5db8a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">or  <a href="#ac3bf2ef3556c995846dddcd84e5db8a6">More...</a><br /></td></tr>
 <tr class="separator:ac3bf2ef3556c995846dddcd84e5db8a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a62955df1df48917116efe39d4cd18fec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a62955df1df48917116efe39d4cd18fec">logical_not</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:a62955df1df48917116efe39d4cd18fec"><td class="mdescLeft">&#160;</td><td class="mdescRight">not  <a href="#a62955df1df48917116efe39d4cd18fec">More...</a><br /></td></tr>
+<tr class="separator:a62955df1df48917116efe39d4cd18fec"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab354bf1270121abea71fade83f13b0b0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ab354bf1270121abea71fade83f13b0b0">operator!</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a)</td></tr>
 <tr class="memdesc:ab354bf1270121abea71fade83f13b0b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">not  <a href="#ab354bf1270121abea71fade83f13b0b0">More...</a><br /></td></tr>
 <tr class="separator:ab354bf1270121abea71fade83f13b0b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a40fcc9952e1ff01a76f3b75dbd368fc1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a40fcc9952e1ff01a76f3b75dbd368fc1">div</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
-<tr class="memdesc:a40fcc9952e1ff01a76f3b75dbd368fc1"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute division in C semantics.  <a href="#a40fcc9952e1ff01a76f3b75dbd368fc1">More...</a><br /></td></tr>
-<tr class="separator:a40fcc9952e1ff01a76f3b75dbd368fc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7bcbff6b886a4fa59b65e7cf05714b49"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a7bcbff6b886a4fa59b65e7cf05714b49">truncdiv</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
-<tr class="memdesc:a7bcbff6b886a4fa59b65e7cf05714b49"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute trunc(a / b)  <a href="#a7bcbff6b886a4fa59b65e7cf05714b49">More...</a><br /></td></tr>
-<tr class="separator:a7bcbff6b886a4fa59b65e7cf05714b49"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae3fd62ca6008d6f20e4845426ec47aa6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ae3fd62ca6008d6f20e4845426ec47aa6">truncmod</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
-<tr class="memdesc:ae3fd62ca6008d6f20e4845426ec47aa6"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute the remainder of truncdiv  <a href="#ae3fd62ca6008d6f20e4845426ec47aa6">More...</a><br /></td></tr>
-<tr class="separator:ae3fd62ca6008d6f20e4845426ec47aa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8203d70a5ebf3532370264b000d0d276"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a8203d70a5ebf3532370264b000d0d276">indexdiv</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
-<tr class="memdesc:a8203d70a5ebf3532370264b000d0d276"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute floor(a / b) where a and b are non-negative.  <a href="#a8203d70a5ebf3532370264b000d0d276">More...</a><br /></td></tr>
-<tr class="separator:a8203d70a5ebf3532370264b000d0d276"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a857781b7243b2f90018f7fe6baf9c30e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a857781b7243b2f90018f7fe6baf9c30e">indexmod</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
-<tr class="memdesc:a857781b7243b2f90018f7fe6baf9c30e"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute the remainder floor(a / b) where a and b are non-negative.  <a href="#a857781b7243b2f90018f7fe6baf9c30e">More...</a><br /></td></tr>
-<tr class="separator:a857781b7243b2f90018f7fe6baf9c30e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a25cb3bf64427a16a93529d0a5c40b6de"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a25cb3bf64427a16a93529d0a5c40b6de">floordiv</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
-<tr class="memdesc:a25cb3bf64427a16a93529d0a5c40b6de"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute floor(a / b)  <a href="#a25cb3bf64427a16a93529d0a5c40b6de">More...</a><br /></td></tr>
-<tr class="separator:a25cb3bf64427a16a93529d0a5c40b6de"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a74b2e0fb912a82f974e2b652f7de8d34"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a74b2e0fb912a82f974e2b652f7de8d34">floormod</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
-<tr class="memdesc:a74b2e0fb912a82f974e2b652f7de8d34"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute the remainder of floordiv  <a href="#a74b2e0fb912a82f974e2b652f7de8d34">More...</a><br /></td></tr>
-<tr class="separator:a74b2e0fb912a82f974e2b652f7de8d34"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab49bad0808ba033343e72ba37b39af2e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ab49bad0808ba033343e72ba37b39af2e">max</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
-<tr class="memdesc:ab49bad0808ba033343e72ba37b39af2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">take maximum of two values  <a href="#ab49bad0808ba033343e72ba37b39af2e">More...</a><br /></td></tr>
-<tr class="separator:ab49bad0808ba033343e72ba37b39af2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9da780393e228969f77aa7550520a582"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9da780393e228969f77aa7550520a582">min</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
-<tr class="memdesc:a9da780393e228969f77aa7550520a582"><td class="mdescLeft">&#160;</td><td class="mdescRight">take minimum of two values  <a href="#a9da780393e228969f77aa7550520a582">More...</a><br /></td></tr>
-<tr class="separator:a9da780393e228969f77aa7550520a582"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a16f9cd9219b505e2cc05c5a7558ac61f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a16f9cd9219b505e2cc05c5a7558ac61f">div</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="e [...]
+<tr class="memdesc:a16f9cd9219b505e2cc05c5a7558ac61f"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute division in C semantics.  <a href="#a16f9cd9219b505e2cc05c5a7558ac61f">More...</a><br /></td></tr>
+<tr class="separator:a16f9cd9219b505e2cc05c5a7558ac61f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac62b239b36ad259a118bb20cb78a01a2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac62b239b36ad259a118bb20cb78a01a2">truncdiv</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a cla [...]
+<tr class="memdesc:ac62b239b36ad259a118bb20cb78a01a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute trunc(a / b)  <a href="#ac62b239b36ad259a118bb20cb78a01a2">More...</a><br /></td></tr>
+<tr class="separator:ac62b239b36ad259a118bb20cb78a01a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2428ea0e23bd9f7218aebd066bb2cd88"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a2428ea0e23bd9f7218aebd066bb2cd88">truncmod</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a cla [...]
+<tr class="memdesc:a2428ea0e23bd9f7218aebd066bb2cd88"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute the remainder of truncdiv  <a href="#a2428ea0e23bd9f7218aebd066bb2cd88">More...</a><br /></td></tr>
+<tr class="separator:a2428ea0e23bd9f7218aebd066bb2cd88"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8f30aa0685ca52f846843e76a1ad1dc7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a8f30aa0685ca52f846843e76a1ad1dc7">indexdiv</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a cla [...]
+<tr class="memdesc:a8f30aa0685ca52f846843e76a1ad1dc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute floor(a / b) where a and b are non-negative.  <a href="#a8f30aa0685ca52f846843e76a1ad1dc7">More...</a><br /></td></tr>
+<tr class="separator:a8f30aa0685ca52f846843e76a1ad1dc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ada5ad8338d3144221d8f16380e6c4855"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ada5ad8338d3144221d8f16380e6c4855">indexmod</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a cla [...]
+<tr class="memdesc:ada5ad8338d3144221d8f16380e6c4855"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute the remainder floor(a / b) where a and b are non-negative.  <a href="#ada5ad8338d3144221d8f16380e6c4855">More...</a><br /></td></tr>
+<tr class="separator:ada5ad8338d3144221d8f16380e6c4855"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af347f10e3572adb2d74ba4a53777db2b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#af347f10e3572adb2d74ba4a53777db2b">floordiv</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a cla [...]
+<tr class="memdesc:af347f10e3572adb2d74ba4a53777db2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute floor(a / b)  <a href="#af347f10e3572adb2d74ba4a53777db2b">More...</a><br /></td></tr>
+<tr class="separator:af347f10e3572adb2d74ba4a53777db2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8683adb542beba8ecc69354e50d62ef6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a8683adb542beba8ecc69354e50d62ef6">floormod</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a cla [...]
+<tr class="memdesc:a8683adb542beba8ecc69354e50d62ef6"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute the remainder of floordiv  <a href="#a8683adb542beba8ecc69354e50d62ef6">More...</a><br /></td></tr>
+<tr class="separator:a8683adb542beba8ecc69354e50d62ef6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0df5ca82d2c566f628ebb2f1e84a3fcb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a0df5ca82d2c566f628ebb2f1e84a3fcb">max</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="e [...]
+<tr class="memdesc:a0df5ca82d2c566f628ebb2f1e84a3fcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">take maximum of two values  <a href="#a0df5ca82d2c566f628ebb2f1e84a3fcb">More...</a><br /></td></tr>
+<tr class="separator:a0df5ca82d2c566f628ebb2f1e84a3fcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aac2abc149c1a47944c37b560181b15c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aac2abc149c1a47944c37b560181b15c0">min</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="e [...]
+<tr class="memdesc:aac2abc149c1a47944c37b560181b15c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">take minimum of two values  <a href="#aac2abc149c1a47944c37b560181b15c0">More...</a><br /></td></tr>
+<tr class="separator:aac2abc149c1a47944c37b560181b15c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acebb0c446b76d5a28c3b1b55f827c86e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#acebb0c446b76d5a28c3b1b55f827c86e">bitwise_and</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a  [...]
+<tr class="memdesc:acebb0c446b76d5a28c3b1b55f827c86e"><td class="mdescLeft">&#160;</td><td class="mdescRight">take bitwise and of two values  <a href="#acebb0c446b76d5a28c3b1b55f827c86e">More...</a><br /></td></tr>
+<tr class="separator:acebb0c446b76d5a28c3b1b55f827c86e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a92e2cae35b1e48f130b76f42c6ee3106"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a92e2cae35b1e48f130b76f42c6ee3106">operator&amp;</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:a92e2cae35b1e48f130b76f42c6ee3106"><td class="mdescLeft">&#160;</td><td class="mdescRight">take bitwise and of two values  <a href="#a92e2cae35b1e48f130b76f42c6ee3106">More...</a><br /></td></tr>
 <tr class="separator:a92e2cae35b1e48f130b76f42c6ee3106"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aee8d9c7084d8df28bf6f05e0851a557f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aee8d9c7084d8df28bf6f05e0851a557f">bitwise_or</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a c [...]
+<tr class="memdesc:aee8d9c7084d8df28bf6f05e0851a557f"><td class="mdescLeft">&#160;</td><td class="mdescRight">take bitwise or of two values  <a href="#aee8d9c7084d8df28bf6f05e0851a557f">More...</a><br /></td></tr>
+<tr class="separator:aee8d9c7084d8df28bf6f05e0851a557f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a236d9aae385e6697874f75e4c8a69f8d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a236d9aae385e6697874f75e4c8a69f8d">operator|</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:a236d9aae385e6697874f75e4c8a69f8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">take bitwise or of two values  <a href="#a236d9aae385e6697874f75e4c8a69f8d">More...</a><br /></td></tr>
 <tr class="separator:a236d9aae385e6697874f75e4c8a69f8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6c238cafec94d03b8e70688d4cf82642"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a6c238cafec94d03b8e70688d4cf82642">bitwise_xor</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a  [...]
+<tr class="memdesc:a6c238cafec94d03b8e70688d4cf82642"><td class="mdescLeft">&#160;</td><td class="mdescRight">take bitwise xor of two values  <a href="#a6c238cafec94d03b8e70688d4cf82642">More...</a><br /></td></tr>
+<tr class="separator:a6c238cafec94d03b8e70688d4cf82642"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:abd7d1b3232218b25e2e0cf6ef699a65f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#abd7d1b3232218b25e2e0cf6ef699a65f">operator^</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="memdesc:abd7d1b3232218b25e2e0cf6ef699a65f"><td class="mdescLeft">&#160;</td><td class="mdescRight">take bitwise xor of two values  <a href="#abd7d1b3232218b25e2e0cf6ef699a65f">More...</a><br /></td></tr>
 <tr class="separator:abd7d1b3232218b25e2e0cf6ef699a65f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3f6d8fba545c2944efc83b57e6190459"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a3f6d8fba545c2944efc83b57e6190459">bitwise_neg</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:a3f6d8fba545c2944efc83b57e6190459"><td class="mdescLeft">&#160;</td><td class="mdescRight">take bitwise negation of two values  <a href="#a3f6d8fba545c2944efc83b57e6190459">More...</a><br /></td></tr>
+<tr class="separator:a3f6d8fba545c2944efc83b57e6190459"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a354b9954ff25dd819a51d856fdd38827"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a354b9954ff25dd819a51d856fdd38827">operator~</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> a)</td></tr>
 <tr class="memdesc:a354b9954ff25dd819a51d856fdd38827"><td class="mdescLeft">&#160;</td><td class="mdescRight">take bitwise negation of two values  <a href="#a354b9954ff25dd819a51d856fdd38827">More...</a><br /></td></tr>
 <tr class="separator:a354b9954ff25dd819a51d856fdd38827"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad400409d87dc337f8b5fe13e18d363f9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ad400409d87dc337f8b5fe13e18d363f9">if_then_else</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> cond, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> true_value, <a class="el" href="classtvm_1_1PrimExpr.html"> [...]
-<tr class="memdesc:ad400409d87dc337f8b5fe13e18d363f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Conditional expression.  <a href="#ad400409d87dc337f8b5fe13e18d363f9">More...</a><br /></td></tr>
-<tr class="separator:ad400409d87dc337f8b5fe13e18d363f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad6ee4c2d41e7e226d1995112cd12e3f1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ad6ee4c2d41e7e226d1995112cd12e3f1">likely</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> cond)</td></tr>
-<tr class="memdesc:ad6ee4c2d41e7e226d1995112cd12e3f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark condition as likely.  <a href="#ad6ee4c2d41e7e226d1995112cd12e3f1">More...</a><br /></td></tr>
-<tr class="separator:ad6ee4c2d41e7e226d1995112cd12e3f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a880f0cd15891153430b669f0b4eca2fe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a880f0cd15891153430b669f0b4eca2fe">pow</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y)</td></tr>
-<tr class="memdesc:a880f0cd15891153430b669f0b4eca2fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate power(x, y)  <a href="#a880f0cd15891153430b669f0b4eca2fe">More...</a><br /></td></tr>
-<tr class="separator:a880f0cd15891153430b669f0b4eca2fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a84d274191adb24d2acb39064c1fbec52"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a84d274191adb24d2acb39064c1fbec52">abs</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="memdesc:a84d274191adb24d2acb39064c1fbec52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate absolute value of x.  <a href="#a84d274191adb24d2acb39064c1fbec52">More...</a><br /></td></tr>
-<tr class="separator:a84d274191adb24d2acb39064c1fbec52"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8f98d60fdc4526b07c8858d6b0b8d1ee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a8f98d60fdc4526b07c8858d6b0b8d1ee">isnan</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="memdesc:a8f98d60fdc4526b07c8858d6b0b8d1ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if x is NaN.  <a href="#a8f98d60fdc4526b07c8858d6b0b8d1ee">More...</a><br /></td></tr>
-<tr class="separator:a8f98d60fdc4526b07c8858d6b0b8d1ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6a48a2b96c995f412390db3ea3b38bd9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a6a48a2b96c995f412390db3ea3b38bd9">isfinite</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="memdesc:a6a48a2b96c995f412390db3ea3b38bd9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if x is finite.  <a href="#a6a48a2b96c995f412390db3ea3b38bd9">More...</a><br /></td></tr>
-<tr class="separator:a6a48a2b96c995f412390db3ea3b38bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a30e728d87aa70f76d7f4a09316c9746d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a30e728d87aa70f76d7f4a09316c9746d">isinf</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="memdesc:a30e728d87aa70f76d7f4a09316c9746d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if x is infinite.  <a href="#a30e728d87aa70f76d7f4a09316c9746d">More...</a><br /></td></tr>
-<tr class="separator:a30e728d87aa70f76d7f4a09316c9746d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a913164b4939fc934c2dcedde6e1a674c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a913164b4939fc934c2dcedde6e1a674c">sum</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> source, Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt; axis, Array&lt; <a class="el" href="class [...]
-<tr class="memdesc:a913164b4939fc934c2dcedde6e1a674c"><td class="mdescLeft">&#160;</td><td class="mdescRight">sum of of source expression over axis  <a href="#a913164b4939fc934c2dcedde6e1a674c">More...</a><br /></td></tr>
-<tr class="separator:a913164b4939fc934c2dcedde6e1a674c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5bbd93564931490e8854f19c4f610966"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5bbd93564931490e8854f19c4f610966">all</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> source, Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt; axis, Array&lt; <a class="el" href="class [...]
-<tr class="memdesc:a5bbd93564931490e8854f19c4f610966"><td class="mdescLeft">&#160;</td><td class="mdescRight">logical And of of source expression over axis  <a href="#a5bbd93564931490e8854f19c4f610966">More...</a><br /></td></tr>
-<tr class="separator:a5bbd93564931490e8854f19c4f610966"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1ff6a87d9ea4b883f6ee2ea8611da94c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a1ff6a87d9ea4b883f6ee2ea8611da94c">any</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> source, Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt; axis, Array&lt; <a class="el" href="class [...]
-<tr class="memdesc:a1ff6a87d9ea4b883f6ee2ea8611da94c"><td class="mdescLeft">&#160;</td><td class="mdescRight">logical Or of of source expression over axis  <a href="#a1ff6a87d9ea4b883f6ee2ea8611da94c">More...</a><br /></td></tr>
-<tr class="separator:a1ff6a87d9ea4b883f6ee2ea8611da94c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a20761852e8352620c87589cebfa68aed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a20761852e8352620c87589cebfa68aed">max</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> source, Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt; axis, Array&lt; <a class="el" href="class [...]
-<tr class="memdesc:a20761852e8352620c87589cebfa68aed"><td class="mdescLeft">&#160;</td><td class="mdescRight">max of of source expression over axis  <a href="#a20761852e8352620c87589cebfa68aed">More...</a><br /></td></tr>
-<tr class="separator:a20761852e8352620c87589cebfa68aed"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a293c09ee26ab4aebfd8d3a5875e473c6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a293c09ee26ab4aebfd8d3a5875e473c6">min</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> source, Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt; axis, Array&lt; <a class="el" href="class [...]
-<tr class="memdesc:a293c09ee26ab4aebfd8d3a5875e473c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">max of of source expression over axis  <a href="#a293c09ee26ab4aebfd8d3a5875e473c6">More...</a><br /></td></tr>
-<tr class="separator:a293c09ee26ab4aebfd8d3a5875e473c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abfe958fd10d2dc2f7004f536aa0e5f2e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#abfe958fd10d2dc2f7004f536aa0e5f2e">prod</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> source, Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt; axis, Array&lt; <a class="el" href="clas [...]
-<tr class="memdesc:abfe958fd10d2dc2f7004f536aa0e5f2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">product of of source expression over axis  <a href="#abfe958fd10d2dc2f7004f536aa0e5f2e">More...</a><br /></td></tr>
-<tr class="separator:abfe958fd10d2dc2f7004f536aa0e5f2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a45896c89bce01ea68b5a8f3ea37f3079"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a45896c89bce01ea68b5a8f3ea37f3079">floor</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="memdesc:a45896c89bce01ea68b5a8f3ea37f3079"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate floor(x)  <a href="#a45896c89bce01ea68b5a8f3ea37f3079">More...</a><br /></td></tr>
-<tr class="separator:a45896c89bce01ea68b5a8f3ea37f3079"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a530307f2fad9f6d196c441309af777b9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a530307f2fad9f6d196c441309af777b9">ceil</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="memdesc:a530307f2fad9f6d196c441309af777b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate ceil(x)  <a href="#a530307f2fad9f6d196c441309af777b9">More...</a><br /></td></tr>
-<tr class="separator:a530307f2fad9f6d196c441309af777b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a660170263d6864b1caa60728619971be"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a660170263d6864b1caa60728619971be">round</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="memdesc:a660170263d6864b1caa60728619971be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate round(x)  <a href="#a660170263d6864b1caa60728619971be">More...</a><br /></td></tr>
-<tr class="separator:a660170263d6864b1caa60728619971be"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8472b5c842e840063564d4280428ce23"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a8472b5c842e840063564d4280428ce23">nearbyint</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="memdesc:a8472b5c842e840063564d4280428ce23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates std::nearbyint(x)  <a href="#a8472b5c842e840063564d4280428ce23">More...</a><br /></td></tr>
-<tr class="separator:a8472b5c842e840063564d4280428ce23"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae17d5a4cdf12b4da457d4929030592cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ae17d5a4cdf12b4da457d4929030592cf">trunc</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="memdesc:ae17d5a4cdf12b4da457d4929030592cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate trunc(x)  <a href="#ae17d5a4cdf12b4da457d4929030592cf">More...</a><br /></td></tr>
-<tr class="separator:ae17d5a4cdf12b4da457d4929030592cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1b6f1345a0ac2506132b15ec4cbf3599"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a1b6f1345a0ac2506132b15ec4cbf3599">LargeUIntImm</a> (<a class="el" href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">DataType</a> dtype, int64_t low, int64_t high)</td></tr>
-<tr class="memdesc:a1b6f1345a0ac2506132b15ec4cbf3599"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a large uint constant by its low 32 bits and high 32bits.  <a href="#a1b6f1345a0ac2506132b15ec4cbf3599">More...</a><br /></td></tr>
-<tr class="separator:a1b6f1345a0ac2506132b15ec4cbf3599"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7022c20876cb3cf611e2f64d005411f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a7022c20876cb3cf611e2f64d005411f5">q_multiply_shift</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr [...]
-<tr class="memdesc:a7022c20876cb3cf611e2f64d005411f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execute a multiplication between two Q-numbers x and y followed by a right shift s. The mathematical expression is:  <a href="#a7022c20876cb3cf611e2f64d005411f5">More...</a><br /></td></tr>
-<tr class="separator:a7022c20876cb3cf611e2f64d005411f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa21f5c2f67c944561ae4a260a2ed14d2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aa21f5c2f67c944561ae4a260a2ed14d2">exp</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:aa21f5c2f67c944561ae4a260a2ed14d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a21e3a5d7327cf37c6a682525665a0a28"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a21e3a5d7327cf37c6a682525665a0a28">exp2</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a21e3a5d7327cf37c6a682525665a0a28"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac760569fe43a52f3f8997461b2ef438a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac760569fe43a52f3f8997461b2ef438a">exp10</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:ac760569fe43a52f3f8997461b2ef438a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a78ebcdb32def4b349b37423884a6417a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a78ebcdb32def4b349b37423884a6417a">erf</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a78ebcdb32def4b349b37423884a6417a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad8a570f4008eb8869504544d7a1cd8ce"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ad8a570f4008eb8869504544d7a1cd8ce">tanh</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:ad8a570f4008eb8869504544d7a1cd8ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1bf7732939d615e08d0d991e2f271c42"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a1bf7732939d615e08d0d991e2f271c42">sigmoid</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a1bf7732939d615e08d0d991e2f271c42"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0a4fcbbd8d9db345d4d7e8bb0a76671a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a0a4fcbbd8d9db345d4d7e8bb0a76671a">sqrt</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a0a4fcbbd8d9db345d4d7e8bb0a76671a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae77bc5dc1c2f4bcafcac8ad698b089a5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ae77bc5dc1c2f4bcafcac8ad698b089a5">rsqrt</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:ae77bc5dc1c2f4bcafcac8ad698b089a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aed9236feb2ab21523cb2dcb0257fe8da"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aed9236feb2ab21523cb2dcb0257fe8da">log</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:aed9236feb2ab21523cb2dcb0257fe8da"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aae5edd83ffa099868f2d58a9def0b2b4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aae5edd83ffa099868f2d58a9def0b2b4">log2</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:aae5edd83ffa099868f2d58a9def0b2b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a04657a6242778fd95b77df057385e398"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a04657a6242778fd95b77df057385e398">log10</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a04657a6242778fd95b77df057385e398"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a04551919927933a4265c87809d889577"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a04551919927933a4265c87809d889577">popcount</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a04551919927933a4265c87809d889577"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aaabcd438dbdc57aa6866fde3edaf2d83"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aaabcd438dbdc57aa6866fde3edaf2d83">tan</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:aaabcd438dbdc57aa6866fde3edaf2d83"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a66fb538aa75f90efb6f5c948920f8f95"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a66fb538aa75f90efb6f5c948920f8f95">cos</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a66fb538aa75f90efb6f5c948920f8f95"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a581c9279a40694ab7a5defa179bcad67"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a581c9279a40694ab7a5defa179bcad67">cosh</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a581c9279a40694ab7a5defa179bcad67"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aeb9b0d266628cfa6c4d254c4e719249a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aeb9b0d266628cfa6c4d254c4e719249a">sin</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:aeb9b0d266628cfa6c4d254c4e719249a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8c17ac9dc5cd2be44dd2c3ef23e0e4c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a8c17ac9dc5cd2be44dd2c3ef23e0e4c9">sinh</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a8c17ac9dc5cd2be44dd2c3ef23e0e4c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a30a9f4cd46514365e7b2ad0fa66ad14a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a30a9f4cd46514365e7b2ad0fa66ad14a">asin</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a30a9f4cd46514365e7b2ad0fa66ad14a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3fc8c87ca0b1d1baa2adbcbb2da3869d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a3fc8c87ca0b1d1baa2adbcbb2da3869d">acos</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a3fc8c87ca0b1d1baa2adbcbb2da3869d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0a4e38b4b6d9f7396f2eafa680f98bd8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a0a4e38b4b6d9f7396f2eafa680f98bd8">atan</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a0a4e38b4b6d9f7396f2eafa680f98bd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a867390323ef93eaa05fedc0770b0da0b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a867390323ef93eaa05fedc0770b0da0b">acosh</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a867390323ef93eaa05fedc0770b0da0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac20dad5eb9d4bb49ce0b152df3b1db9b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac20dad5eb9d4bb49ce0b152df3b1db9b">asinh</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:ac20dad5eb9d4bb49ce0b152df3b1db9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0071b288214f90cd96aca48a2bc8e277"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a0071b288214f90cd96aca48a2bc8e277">atanh</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x)</td></tr>
-<tr class="separator:a0071b288214f90cd96aca48a2bc8e277"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2def28d20708210b32fd5bfa5cdd6388"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a2def28d20708210b32fd5bfa5cdd6388">atan2</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y)</td></tr>
-<tr class="separator:a2def28d20708210b32fd5bfa5cdd6388"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1088e0c7839baa4c57c80217dd2742ef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a1088e0c7839baa4c57c80217dd2742ef">nextafter</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y)</td></tr>
-<tr class="separator:a1088e0c7839baa4c57c80217dd2742ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a16224049bce949c53908e05b84ba5eb3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a16224049bce949c53908e05b84ba5eb3">copysign</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y)</td></tr>
-<tr class="separator:a16224049bce949c53908e05b84ba5eb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2b99c7295d92bb6acb62276af5bf9dff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a2b99c7295d92bb6acb62276af5bf9dff">hypot</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y)</td></tr>
-<tr class="separator:a2b99c7295d92bb6acb62276af5bf9dff"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a90a9e2efafc1994a4cd84a26d74c75c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a90a9e2efafc1994a4cd84a26d74c75c3">ldexp</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y)</td></tr>
-<tr class="separator:a90a9e2efafc1994a4cd84a26d74c75c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a353217978feabae3575560bf1586885f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a353217978feabae3575560bf1586885f">if_then_else</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> cond, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> true_value, <a class="el" href="classtvm_1_1PrimExpr.html"> [...]
+<tr class="memdesc:a353217978feabae3575560bf1586885f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Conditional expression.  <a href="#a353217978feabae3575560bf1586885f">More...</a><br /></td></tr>
+<tr class="separator:a353217978feabae3575560bf1586885f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a336b811d7f339f888ad38d2e2657710d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a336b811d7f339f888ad38d2e2657710d">likely</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> cond, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:a336b811d7f339f888ad38d2e2657710d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark condition as likely.  <a href="#a336b811d7f339f888ad38d2e2657710d">More...</a><br /></td></tr>
+<tr class="separator:a336b811d7f339f888ad38d2e2657710d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5f6532d705be039030e980bbbf81b096"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5f6532d705be039030e980bbbf81b096">pow</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="e [...]
+<tr class="memdesc:a5f6532d705be039030e980bbbf81b096"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate power(x, y)  <a href="#a5f6532d705be039030e980bbbf81b096">More...</a><br /></td></tr>
+<tr class="separator:a5f6532d705be039030e980bbbf81b096"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab2a3c98ef29937defd6accb9b171a940"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ab2a3c98ef29937defd6accb9b171a940">abs</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:ab2a3c98ef29937defd6accb9b171a940"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate absolute value of x.  <a href="#ab2a3c98ef29937defd6accb9b171a940">More...</a><br /></td></tr>
+<tr class="separator:ab2a3c98ef29937defd6accb9b171a940"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4a6399430c10dccd79f64222cda011ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a4a6399430c10dccd79f64222cda011ed">isnan</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:a4a6399430c10dccd79f64222cda011ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if x is NaN.  <a href="#a4a6399430c10dccd79f64222cda011ed">More...</a><br /></td></tr>
+<tr class="separator:a4a6399430c10dccd79f64222cda011ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a096aa20c0df975d089231b2c6fda2e61"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a096aa20c0df975d089231b2c6fda2e61">isfinite</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:a096aa20c0df975d089231b2c6fda2e61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if x is finite.  <a href="#a096aa20c0df975d089231b2c6fda2e61">More...</a><br /></td></tr>
+<tr class="separator:a096aa20c0df975d089231b2c6fda2e61"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac06a47be8386f28b313903e174dfe151"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac06a47be8386f28b313903e174dfe151">isinf</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:ac06a47be8386f28b313903e174dfe151"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if x is infinite.  <a href="#ac06a47be8386f28b313903e174dfe151">More...</a><br /></td></tr>
+<tr class="separator:ac06a47be8386f28b313903e174dfe151"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afdad0c0329bd39949ba8d296cfb85d76"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#afdad0c0329bd39949ba8d296cfb85d76">sum</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> source, Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt; axis, Array&lt; <a class="el" href="class [...]
+<tr class="memdesc:afdad0c0329bd39949ba8d296cfb85d76"><td class="mdescLeft">&#160;</td><td class="mdescRight">sum of of source expression over axis  <a href="#afdad0c0329bd39949ba8d296cfb85d76">More...</a><br /></td></tr>
+<tr class="separator:afdad0c0329bd39949ba8d296cfb85d76"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adeeaff4fb29f75a9da8ff4d67723c693"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#adeeaff4fb29f75a9da8ff4d67723c693">all</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> source, Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt; axis, Array&lt; <a class="el" href="class [...]
+<tr class="memdesc:adeeaff4fb29f75a9da8ff4d67723c693"><td class="mdescLeft">&#160;</td><td class="mdescRight">logical And of of source expression over axis  <a href="#adeeaff4fb29f75a9da8ff4d67723c693">More...</a><br /></td></tr>
+<tr class="separator:adeeaff4fb29f75a9da8ff4d67723c693"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5efd9942cdee5a56cfc438ba523c04f0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5efd9942cdee5a56cfc438ba523c04f0">any</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> source, Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt; axis, Array&lt; <a class="el" href="class [...]
+<tr class="memdesc:a5efd9942cdee5a56cfc438ba523c04f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">logical Or of of source expression over axis  <a href="#a5efd9942cdee5a56cfc438ba523c04f0">More...</a><br /></td></tr>
+<tr class="separator:a5efd9942cdee5a56cfc438ba523c04f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6dd252d98b23eaa28c43d6da6cffc1ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a6dd252d98b23eaa28c43d6da6cffc1ec">max</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> source, Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt; axis, Array&lt; <a class="el" href="class [...]
+<tr class="memdesc:a6dd252d98b23eaa28c43d6da6cffc1ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">max of of source expression over axis  <a href="#a6dd252d98b23eaa28c43d6da6cffc1ec">More...</a><br /></td></tr>
+<tr class="separator:a6dd252d98b23eaa28c43d6da6cffc1ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2ea31d1a02499ea4b87694b4eeaa2306"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a2ea31d1a02499ea4b87694b4eeaa2306">min</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> source, Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt; axis, Array&lt; <a class="el" href="class [...]
+<tr class="memdesc:a2ea31d1a02499ea4b87694b4eeaa2306"><td class="mdescLeft">&#160;</td><td class="mdescRight">max of of source expression over axis  <a href="#a2ea31d1a02499ea4b87694b4eeaa2306">More...</a><br /></td></tr>
+<tr class="separator:a2ea31d1a02499ea4b87694b4eeaa2306"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a32a87ae9eacafb2b5b71b28bcc9ef35e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a32a87ae9eacafb2b5b71b28bcc9ef35e">prod</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> source, Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt; axis, Array&lt; <a class="el" href="clas [...]
+<tr class="memdesc:a32a87ae9eacafb2b5b71b28bcc9ef35e"><td class="mdescLeft">&#160;</td><td class="mdescRight">product of of source expression over axis  <a href="#a32a87ae9eacafb2b5b71b28bcc9ef35e">More...</a><br /></td></tr>
+<tr class="separator:a32a87ae9eacafb2b5b71b28bcc9ef35e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaff65dde3044433b2220677aedf4855f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aaff65dde3044433b2220677aedf4855f">floor</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:aaff65dde3044433b2220677aedf4855f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate floor(x)  <a href="#aaff65dde3044433b2220677aedf4855f">More...</a><br /></td></tr>
+<tr class="separator:aaff65dde3044433b2220677aedf4855f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5e4738caa6bcd0259af64b25e25dfd93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5e4738caa6bcd0259af64b25e25dfd93">ceil</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:a5e4738caa6bcd0259af64b25e25dfd93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate ceil(x)  <a href="#a5e4738caa6bcd0259af64b25e25dfd93">More...</a><br /></td></tr>
+<tr class="separator:a5e4738caa6bcd0259af64b25e25dfd93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a54d9c399c82d7f384ee93f235496ab64"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a54d9c399c82d7f384ee93f235496ab64">round</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:a54d9c399c82d7f384ee93f235496ab64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate round(x)  <a href="#a54d9c399c82d7f384ee93f235496ab64">More...</a><br /></td></tr>
+<tr class="separator:a54d9c399c82d7f384ee93f235496ab64"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae7826d26d74304ff31ad2cbf278b772c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ae7826d26d74304ff31ad2cbf278b772c">nearbyint</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:ae7826d26d74304ff31ad2cbf278b772c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates std::nearbyint(x)  <a href="#ae7826d26d74304ff31ad2cbf278b772c">More...</a><br /></td></tr>
+<tr class="separator:ae7826d26d74304ff31ad2cbf278b772c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5472f967969aebee254e8e78f2396436"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5472f967969aebee254e8e78f2396436">trunc</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="memdesc:a5472f967969aebee254e8e78f2396436"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate trunc(x)  <a href="#a5472f967969aebee254e8e78f2396436">More...</a><br /></td></tr>
+<tr class="separator:a5472f967969aebee254e8e78f2396436"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a98a791851ba1a7631e50587ae370b3b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a98a791851ba1a7631e50587ae370b3b8">LargeUIntImm</a> (<a class="el" href="namespacetvm.html#a41918af1a1dc386388639a9d3ad06c5d">DataType</a> dtype, int64_t low, int64_t high, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class [...]
+<tr class="memdesc:a98a791851ba1a7631e50587ae370b3b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a large uint constant by its low 32 bits and high 32bits.  <a href="#a98a791851ba1a7631e50587ae370b3b8">More...</a><br /></td></tr>
+<tr class="separator:a98a791851ba1a7631e50587ae370b3b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac788f9eb54a8971596779537afc6c896"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac788f9eb54a8971596779537afc6c896">q_multiply_shift</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr [...]
+<tr class="memdesc:ac788f9eb54a8971596779537afc6c896"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execute a multiplication between two Q-numbers x and y followed by a right shift s. The mathematical expression is:  <a href="#ac788f9eb54a8971596779537afc6c896">More...</a><br /></td></tr>
+<tr class="separator:ac788f9eb54a8971596779537afc6c896"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a82be70bd7794abca32473604cbb09569"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a82be70bd7794abca32473604cbb09569">exp</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:a82be70bd7794abca32473604cbb09569"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a50c4b8aeaf39b357013fc7f62b4a878c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a50c4b8aeaf39b357013fc7f62b4a878c">exp2</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:a50c4b8aeaf39b357013fc7f62b4a878c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a65b68a0c2cea6c1bbd338585fcdf9fdd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a65b68a0c2cea6c1bbd338585fcdf9fdd">exp10</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:a65b68a0c2cea6c1bbd338585fcdf9fdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a139870d327497d548e2ef8bddba2f114"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a139870d327497d548e2ef8bddba2f114">erf</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:a139870d327497d548e2ef8bddba2f114"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a12c5457301d8a2c03a2ba1163edd7cee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a12c5457301d8a2c03a2ba1163edd7cee">tanh</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:a12c5457301d8a2c03a2ba1163edd7cee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa048961a5d19e9f32071c1372809ecbd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aa048961a5d19e9f32071c1372809ecbd">sigmoid</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:aa048961a5d19e9f32071c1372809ecbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abf978d3e6abd0e3754b853dc4fa9869e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#abf978d3e6abd0e3754b853dc4fa9869e">sqrt</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:abf978d3e6abd0e3754b853dc4fa9869e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5196b8d7b5d5453e624ab22d0fefb652"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5196b8d7b5d5453e624ab22d0fefb652">rsqrt</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:a5196b8d7b5d5453e624ab22d0fefb652"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae39f72b12020a4f7ad6b16b66ffdfe1f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ae39f72b12020a4f7ad6b16b66ffdfe1f">log</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:ae39f72b12020a4f7ad6b16b66ffdfe1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac1b3a94a13d11c02d7e79cad2638e74a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac1b3a94a13d11c02d7e79cad2638e74a">log2</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:ac1b3a94a13d11c02d7e79cad2638e74a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a16a5aa0300233b6c5fbcc61c424eee30"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a16a5aa0300233b6c5fbcc61c424eee30">log10</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:a16a5aa0300233b6c5fbcc61c424eee30"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acde00e06bb7d8ccd78f1dd33b966e178"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#acde00e06bb7d8ccd78f1dd33b966e178">popcount</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:acde00e06bb7d8ccd78f1dd33b966e178"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af99838098788d40c80b402f29b3c2e8c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#af99838098788d40c80b402f29b3c2e8c">tan</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:af99838098788d40c80b402f29b3c2e8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afdd8659490e81bdc0f2d42b77b882d30"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#afdd8659490e81bdc0f2d42b77b882d30">cos</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:afdd8659490e81bdc0f2d42b77b882d30"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a41c8855d1e4f7ea1d01e42e6c214f877"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a41c8855d1e4f7ea1d01e42e6c214f877">cosh</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:a41c8855d1e4f7ea1d01e42e6c214f877"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a532ceddde4b8c713b0b1d7e737fcf5fb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a532ceddde4b8c713b0b1d7e737fcf5fb">sin</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:a532ceddde4b8c713b0b1d7e737fcf5fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad828bc801c73df761c58d9f8877d52ee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ad828bc801c73df761c58d9f8877d52ee">sinh</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:ad828bc801c73df761c58d9f8877d52ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9eabd3011b72041605ac7475094c87b1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9eabd3011b72041605ac7475094c87b1">asin</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:a9eabd3011b72041605ac7475094c87b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa8e1cc91eb14b427e3018836d82e15e6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aa8e1cc91eb14b427e3018836d82e15e6">acos</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:aa8e1cc91eb14b427e3018836d82e15e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a475b388b9a19d05dca849707d74636a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a475b388b9a19d05dca849707d74636a7">atan</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:a475b388b9a19d05dca849707d74636a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af38d8633e3508033faa7bd60d8232bfe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#af38d8633e3508033faa7bd60d8232bfe">acosh</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:af38d8633e3508033faa7bd60d8232bfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a52a4f309e25bcb51c6038f6e3ee931ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a52a4f309e25bcb51c6038f6e3ee931ec">asinh</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:a52a4f309e25bcb51c6038f6e3ee931ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab72a6b6a2d0c2aa3f6a95f60dc831493"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ab72a6b6a2d0c2aa3f6a95f60dc831493">atanh</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
+<tr class="separator:ab72a6b6a2d0c2aa3f6a95f60dc831493"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a350f9808d53b5fd9ad5c4c50bb76d700"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a350f9808d53b5fd9ad5c4c50bb76d700">atan2</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class= [...]
+<tr class="separator:a350f9808d53b5fd9ad5c4c50bb76d700"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a96d86ba91e4855c84879ba886465cacf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a96d86ba91e4855c84879ba886465cacf">nextafter</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a cl [...]
+<tr class="separator:a96d86ba91e4855c84879ba886465cacf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69f67f2d38656a8e663af0912d00cb51"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a69f67f2d38656a8e663af0912d00cb51">copysign</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a cla [...]
+<tr class="separator:a69f67f2d38656a8e663af0912d00cb51"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a28e456d33229a628a312110db8d45b44"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a28e456d33229a628a312110db8d45b44">hypot</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class= [...]
+<tr class="separator:a28e456d33229a628a312110db8d45b44"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac5347541411e75f59758a29596565f63"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac5347541411e75f59758a29596565f63">ldexp</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> x, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> y, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class= [...]
+<tr class="separator:ac5347541411e75f59758a29596565f63"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a96061840d12f84eeecc8fae11e245242"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a96061840d12f84eeecc8fae11e245242">operator+=</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
 <tr class="separator:a96061840d12f84eeecc8fae11e245242"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a164d454c519fecaa5611c86b65469acc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a164d454c519fecaa5611c86b65469acc">operator-=</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> b)</td></tr>
@@ -841,36 +898,6 @@ Functions</h2></td></tr>
 <tr class="separator:a6823188ec16be854223bbffe349c975d"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a1815d8b152819885a5733554f374a9ca"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a1815d8b152819885a5733554f374a9ca">operator*</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b)</td></tr>
 <tr class="separator:a1815d8b152819885a5733554f374a9ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7134c7ce44fbedab5990f19428ceb5c4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a7134c7ce44fbedab5990f19428ceb5c4">max</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b)</td></tr>
-<tr class="separator:a7134c7ce44fbedab5990f19428ceb5c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abc6aa5a903c9a71faece2f5dfbc8218c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#abc6aa5a903c9a71faece2f5dfbc8218c">max</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
-<tr class="separator:abc6aa5a903c9a71faece2f5dfbc8218c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7bd1dc5f6d10420562d216bb3660270d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a7bd1dc5f6d10420562d216bb3660270d">max</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
-<tr class="separator:a7bd1dc5f6d10420562d216bb3660270d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac0dc60ecafe41384d28baf92f6943680"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac0dc60ecafe41384d28baf92f6943680">max</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b)</td></tr>
-<tr class="separator:ac0dc60ecafe41384d28baf92f6943680"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa26bf5f7b12b17f87400c63c63663c60"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aa26bf5f7b12b17f87400c63c63663c60">max</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b)</td></tr>
-<tr class="separator:aa26bf5f7b12b17f87400c63c63663c60"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1a8d2a9b2868033477024d551f779d61"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a1a8d2a9b2868033477024d551f779d61">min</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b)</td></tr>
-<tr class="separator:a1a8d2a9b2868033477024d551f779d61"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6ebe9e5428f481f683f89f59440dde2a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a6ebe9e5428f481f683f89f59440dde2a">min</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
-<tr class="separator:a6ebe9e5428f481f683f89f59440dde2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3b4b479c377151a9d64dc67d1105421e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a3b4b479c377151a9d64dc67d1105421e">min</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
-<tr class="separator:a3b4b479c377151a9d64dc67d1105421e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7fe0dbe362aac3d4f9c204eeba803d8e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a7fe0dbe362aac3d4f9c204eeba803d8e">min</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b)</td></tr>
-<tr class="separator:a7fe0dbe362aac3d4f9c204eeba803d8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a468d959980234ccc84c319810d787219"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a468d959980234ccc84c319810d787219">min</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b)</td></tr>
-<tr class="separator:a468d959980234ccc84c319810d787219"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae2d70142d842bb07be508adb2d4f7447"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ae2d70142d842bb07be508adb2d4f7447">div</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b)</td></tr>
-<tr class="separator:ae2d70142d842bb07be508adb2d4f7447"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a85c28d529a26976f3d5f67511f2aef8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a85c28d529a26976f3d5f67511f2aef8b">div</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
-<tr class="separator:a85c28d529a26976f3d5f67511f2aef8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8a958cb2612b58e6464f5421bb8ab74b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a8a958cb2612b58e6464f5421bb8ab74b">div</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
-<tr class="separator:a8a958cb2612b58e6464f5421bb8ab74b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac9f587b864957447e3d0c64ac9159633"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac9f587b864957447e3d0c64ac9159633">div</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b)</td></tr>
-<tr class="separator:ac9f587b864957447e3d0c64ac9159633"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1180d1f0ef1d427bad98a89c66d84c0f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a1180d1f0ef1d427bad98a89c66d84c0f">div</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b)</td></tr>
-<tr class="separator:a1180d1f0ef1d427bad98a89c66d84c0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9cea8f3789d8f3dc78acae43e9a6aad6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9cea8f3789d8f3dc78acae43e9a6aad6">operator&gt;</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b)</td></tr>
 <tr class="separator:a9cea8f3789d8f3dc78acae43e9a6aad6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a6d0ad14c882c11311836138a2c164cf3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a6d0ad14c882c11311836138a2c164cf3">operator&gt;</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
@@ -911,30 +938,150 @@ Functions</h2></td></tr>
 <tr class="separator:af94a56db543e741a23bbf2f51c49091a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a6eea8276bcc178425bc14f3d878970ff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a6eea8276bcc178425bc14f3d878970ff">operator&lt;=</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b)</td></tr>
 <tr class="separator:a6eea8276bcc178425bc14f3d878970ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af9a4e8a59397e5778c38356129c06110"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#af9a4e8a59397e5778c38356129c06110">indexdiv</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b)</td></tr>
-<tr class="separator:af9a4e8a59397e5778c38356129c06110"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9d88aa90642838c6bc41c4cbead148fd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9d88aa90642838c6bc41c4cbead148fd">indexdiv</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
-<tr class="separator:a9d88aa90642838c6bc41c4cbead148fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac4d2991113bb8e0b634e4c83183eb5c1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac4d2991113bb8e0b634e4c83183eb5c1">indexmod</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b)</td></tr>
-<tr class="separator:ac4d2991113bb8e0b634e4c83183eb5c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abd2345bc3cd37ab4f762c0f971042daa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#abd2345bc3cd37ab4f762c0f971042daa">indexmod</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
-<tr class="separator:abd2345bc3cd37ab4f762c0f971042daa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae50afd0565c00f594ee188bab7323372"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ae50afd0565c00f594ee188bab7323372">truncdiv</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b)</td></tr>
-<tr class="separator:ae50afd0565c00f594ee188bab7323372"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5b5bb91649c681b0ea799689be9647bf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5b5bb91649c681b0ea799689be9647bf">truncdiv</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
-<tr class="separator:a5b5bb91649c681b0ea799689be9647bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4c2633a4e92785dd73834bfff282699c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a4c2633a4e92785dd73834bfff282699c">truncmod</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b)</td></tr>
-<tr class="separator:a4c2633a4e92785dd73834bfff282699c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad6c6dbf136b1086695780fd695df350b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ad6c6dbf136b1086695780fd695df350b">truncmod</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
-<tr class="separator:ad6c6dbf136b1086695780fd695df350b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a83e68dc71a05711a9c94123af2a3fdbf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a83e68dc71a05711a9c94123af2a3fdbf">floordiv</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b)</td></tr>
-<tr class="separator:a83e68dc71a05711a9c94123af2a3fdbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad3b659d13dd33e7a027b9d082315a776"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ad3b659d13dd33e7a027b9d082315a776">floordiv</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
-<tr class="separator:ad3b659d13dd33e7a027b9d082315a776"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6993f628929a88cf563461c9dcafb2ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a6993f628929a88cf563461c9dcafb2ae">floormod</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b)</td></tr>
-<tr class="separator:a6993f628929a88cf563461c9dcafb2ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a08a5224a973dc893665ab543c116854d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a08a5224a973dc893665ab543c116854d">floormod</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
-<tr class="separator:a08a5224a973dc893665ab543c116854d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adfa884be1a335a8baa72e148c8c957b5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#adfa884be1a335a8baa72e148c8c957b5">max</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>()) [...]
+<tr class="separator:adfa884be1a335a8baa72e148c8c957b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9e0fbbcedbe3058093b332a2103944d3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9e0fbbcedbe3058093b332a2103944d3">max</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>()) [...]
+<tr class="separator:a9e0fbbcedbe3058093b332a2103944d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a49809e9c3d21f41ca8d939a30994bd42"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a49809e9c3d21f41ca8d939a30994bd42">max</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</ [...]
+<tr class="separator:a49809e9c3d21f41ca8d939a30994bd42"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa1eb9772f6fbb245cda93c5bd9e53e7d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aa1eb9772f6fbb245cda93c5bd9e53e7d">max</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</ [...]
+<tr class="separator:aa1eb9772f6fbb245cda93c5bd9e53e7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa22a313c142a61845ded7fdf77af7046"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aa22a313c142a61845ded7fdf77af7046">max</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>() [...]
+<tr class="separator:aa22a313c142a61845ded7fdf77af7046"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9a10cd15c6ff847edef0cb3e6aea94f9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9a10cd15c6ff847edef0cb3e6aea94f9">min</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>()) [...]
+<tr class="separator:a9a10cd15c6ff847edef0cb3e6aea94f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a17cf44684890b213c54c64bc756fbc3c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a17cf44684890b213c54c64bc756fbc3c">min</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>()) [...]
+<tr class="separator:a17cf44684890b213c54c64bc756fbc3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acfa7fdecbf7391561b96ab5ad4ef21ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#acfa7fdecbf7391561b96ab5ad4ef21ed">min</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</ [...]
+<tr class="separator:acfa7fdecbf7391561b96ab5ad4ef21ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a256aa9e1b6ed1c8dbadc529aae0eddc3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a256aa9e1b6ed1c8dbadc529aae0eddc3">min</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</ [...]
+<tr class="separator:a256aa9e1b6ed1c8dbadc529aae0eddc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a985d745279ddfcd3ef67a98e6fcff4c6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a985d745279ddfcd3ef67a98e6fcff4c6">min</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>() [...]
+<tr class="separator:a985d745279ddfcd3ef67a98e6fcff4c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7098ed6761c2a236f218b62ba1f8057f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a7098ed6761c2a236f218b62ba1f8057f">div</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>()) [...]
+<tr class="separator:a7098ed6761c2a236f218b62ba1f8057f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9794724633630eabe2ef5a7c6810b3bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9794724633630eabe2ef5a7c6810b3bd">div</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>()) [...]
+<tr class="separator:a9794724633630eabe2ef5a7c6810b3bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0d9bb599eb28a6ca9d096247ff4d7fba"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a0d9bb599eb28a6ca9d096247ff4d7fba">div</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</ [...]
+<tr class="separator:a0d9bb599eb28a6ca9d096247ff4d7fba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a421c6836f0e87cd662320a8f6c23d452"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a421c6836f0e87cd662320a8f6c23d452">div</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</ [...]
+<tr class="separator:a421c6836f0e87cd662320a8f6c23d452"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9d90476be7c95b4c40fe267fd2af5603"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9d90476be7c95b4c40fe267fd2af5603">div</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>() [...]
+<tr class="separator:a9d90476be7c95b4c40fe267fd2af5603"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae52913038266ff388584651225f00c54"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ae52913038266ff388584651225f00c54">add</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>()) [...]
+<tr class="separator:ae52913038266ff388584651225f00c54"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab0193c5fa4fe039eb7051dd926d385f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ab0193c5fa4fe039eb7051dd926d385f5">add</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>()) [...]
+<tr class="separator:ab0193c5fa4fe039eb7051dd926d385f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a12612fdf683c17f31671404044507168"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a12612fdf683c17f31671404044507168">add</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</ [...]
+<tr class="separator:a12612fdf683c17f31671404044507168"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a53e4a59a8e37bbdb57b55af242448cbc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a53e4a59a8e37bbdb57b55af242448cbc">add</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</ [...]
+<tr class="separator:a53e4a59a8e37bbdb57b55af242448cbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad69bd506d272187cd24bc12b8c83d9da"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ad69bd506d272187cd24bc12b8c83d9da">add</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>() [...]
+<tr class="separator:ad69bd506d272187cd24bc12b8c83d9da"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af2d75a528d344c6cfcf8b726a6abb7cc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#af2d75a528d344c6cfcf8b726a6abb7cc">sub</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>()) [...]
+<tr class="separator:af2d75a528d344c6cfcf8b726a6abb7cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a269b014ef11118b07bae6efb0300ba6f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a269b014ef11118b07bae6efb0300ba6f">sub</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>()) [...]
+<tr class="separator:a269b014ef11118b07bae6efb0300ba6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9cbbc9769fffddd99dfb4ab3f69dafb3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9cbbc9769fffddd99dfb4ab3f69dafb3">sub</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</ [...]
+<tr class="separator:a9cbbc9769fffddd99dfb4ab3f69dafb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7470d45dafa0a91b6c62b25cdd61514e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a7470d45dafa0a91b6c62b25cdd61514e">sub</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</ [...]
+<tr class="separator:a7470d45dafa0a91b6c62b25cdd61514e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9d05fc8e6a57888c5fd908152bf6d84a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9d05fc8e6a57888c5fd908152bf6d84a">sub</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>() [...]
+<tr class="separator:a9d05fc8e6a57888c5fd908152bf6d84a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7a63f5958a0158fc2707f8888bcf13f2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a7a63f5958a0158fc2707f8888bcf13f2">mul</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>()) [...]
+<tr class="separator:a7a63f5958a0158fc2707f8888bcf13f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a40c70817dccaa589da0562bc8f179008"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a40c70817dccaa589da0562bc8f179008">mul</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>()) [...]
+<tr class="separator:a40c70817dccaa589da0562bc8f179008"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af64e20cff6f9f74660c8068469f146b7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#af64e20cff6f9f74660c8068469f146b7">mul</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</ [...]
+<tr class="separator:af64e20cff6f9f74660c8068469f146b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:add1522db4005299ee5d3ee0c7460466d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#add1522db4005299ee5d3ee0c7460466d">mul</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</ [...]
+<tr class="separator:add1522db4005299ee5d3ee0c7460466d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a92b9c69c93190d9057dd6f73ff93797a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a92b9c69c93190d9057dd6f73ff93797a">mul</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>() [...]
+<tr class="separator:a92b9c69c93190d9057dd6f73ff93797a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6616d96720236d83e923e5e06009c3e4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a6616d96720236d83e923e5e06009c3e4">greater</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a [...]
+<tr class="separator:a6616d96720236d83e923e5e06009c3e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a62451bf1d3cb1d6e2aee79b10e45f194"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a62451bf1d3cb1d6e2aee79b10e45f194">greater</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a [...]
+<tr class="separator:a62451bf1d3cb1d6e2aee79b10e45f194"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac89c36724f9f02b50074ce4af0ebc6a3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ac89c36724f9f02b50074ce4af0ebc6a3">greater</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>( [...]
+<tr class="separator:ac89c36724f9f02b50074ce4af0ebc6a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5f708bf8051251f44b9550a11ac324fc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5f708bf8051251f44b9550a11ac324fc">greater</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>( [...]
+<tr class="separator:a5f708bf8051251f44b9550a11ac324fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5915be530dff330504fdf4b28d734dbc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5915be530dff330504fdf4b28d734dbc">greater</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</ [...]
+<tr class="separator:a5915be530dff330504fdf4b28d734dbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa7f616193a71c13d01ce3a3fab469f9d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aa7f616193a71c13d01ce3a3fab469f9d">greater_equal</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">S [...]
+<tr class="separator:aa7f616193a71c13d01ce3a3fab469f9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a78f0e420a400bb38907d21cfeaab8e18"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a78f0e420a400bb38907d21cfeaab8e18">greater_equal</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">S [...]
+<tr class="separator:a78f0e420a400bb38907d21cfeaab8e18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abb5d20ed2442a24c846734f9b403827f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#abb5d20ed2442a24c846734f9b403827f">greater_equal</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Spa [...]
+<tr class="separator:abb5d20ed2442a24c846734f9b403827f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a51033d1df245ec8bbde0568458f9ef24"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a51033d1df245ec8bbde0568458f9ef24">greater_equal</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Spa [...]
+<tr class="separator:a51033d1df245ec8bbde0568458f9ef24"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a77814ef6c0025fba05e32b4cfd1d3e62"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a77814ef6c0025fba05e32b4cfd1d3e62">greater_equal</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html"> [...]
+<tr class="separator:a77814ef6c0025fba05e32b4cfd1d3e62"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab69bb15adb82d166504b9cbeef21a4dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ab69bb15adb82d166504b9cbeef21a4dc">less</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>() [...]
+<tr class="separator:ab69bb15adb82d166504b9cbeef21a4dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0d5dc442dde0e69657c40803d394ea73"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a0d5dc442dde0e69657c40803d394ea73">less</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>() [...]
+<tr class="separator:a0d5dc442dde0e69657c40803d394ea73"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a042ab9c595a8a0f63c07dbbdf75ecf9c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a042ab9c595a8a0f63c07dbbdf75ecf9c">less</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())< [...]
+<tr class="separator:a042ab9c595a8a0f63c07dbbdf75ecf9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9bbb69dc3563e07d5f81c003a7ad9aed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9bbb69dc3563e07d5f81c003a7ad9aed">less</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())< [...]
+<tr class="separator:a9bbb69dc3563e07d5f81c003a7ad9aed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae29f761564dc96582c113b69b3d93aaa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ae29f761564dc96582c113b69b3d93aaa">less</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>( [...]
+<tr class="separator:ae29f761564dc96582c113b69b3d93aaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aec0ac319177760ff01be833bae8b72bf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aec0ac319177760ff01be833bae8b72bf">less_equal</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, float b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span [...]
+<tr class="separator:aec0ac319177760ff01be833bae8b72bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5cee73ced0a40ed261dc3beec9f8247c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a5cee73ced0a40ed261dc3beec9f8247c">less_equal</a> (float a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span [...]
+<tr class="separator:a5cee73ced0a40ed261dc3beec9f8247c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad4734f467b4107f0da21a510788479c1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#ad4734f467b4107f0da21a510788479c1">less_equal</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</ [...]
+<tr class="separator:ad4734f467b4107f0da21a510788479c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0626fa40cd72920c914ab38a6546a332"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a0626fa40cd72920c914ab38a6546a332">less_equal</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</ [...]
+<tr class="separator:a0626fa40cd72920c914ab38a6546a332"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a59f1a9bebe7948e2570b8c01386253d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a59f1a9bebe7948e2570b8c01386253d4">less_equal</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, double b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Spa [...]
+<tr class="separator:a59f1a9bebe7948e2570b8c01386253d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8e795784bc91d7d0ad50df1d6a849b56"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a8e795784bc91d7d0ad50df1d6a849b56">indexdiv</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a> [...]
+<tr class="separator:a8e795784bc91d7d0ad50df1d6a849b56"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2fde20cf177fe6aaf6f89f9ca46c9c25"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a2fde20cf177fe6aaf6f89f9ca46c9c25">indexdiv</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a> [...]
+<tr class="separator:a2fde20cf177fe6aaf6f89f9ca46c9c25"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a78b6faac00e9a823e9bcf14e1e02f1f2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a78b6faac00e9a823e9bcf14e1e02f1f2">indexmod</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a> [...]
+<tr class="separator:a78b6faac00e9a823e9bcf14e1e02f1f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a048a29e36fa055771713480f3f4ecdf4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a048a29e36fa055771713480f3f4ecdf4">indexmod</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a> [...]
+<tr class="separator:a048a29e36fa055771713480f3f4ecdf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acb5a87ae3bdd224a421df3f22a64338d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#acb5a87ae3bdd224a421df3f22a64338d">truncdiv</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a> [...]
+<tr class="separator:acb5a87ae3bdd224a421df3f22a64338d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa71d2e133a1311571af1b1a61bcf956d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aa71d2e133a1311571af1b1a61bcf956d">truncdiv</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a> [...]
+<tr class="separator:aa71d2e133a1311571af1b1a61bcf956d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa7e06644ed017169c5ce6829445ab754"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aa7e06644ed017169c5ce6829445ab754">truncmod</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a> [...]
+<tr class="separator:aa7e06644ed017169c5ce6829445ab754"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa388c5d23548438d00d64d0084e82391"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#aa388c5d23548438d00d64d0084e82391">truncmod</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a> [...]
+<tr class="separator:aa388c5d23548438d00d64d0084e82391"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a435a9df348bdb72e60bfe4ce410dcc58"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a435a9df348bdb72e60bfe4ce410dcc58">floordiv</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a> [...]
+<tr class="separator:a435a9df348bdb72e60bfe4ce410dcc58"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a87200564215339b900ca546678fc71a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a87200564215339b900ca546678fc71a4">floordiv</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a> [...]
+<tr class="separator:a87200564215339b900ca546678fc71a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a964496f2d1c20c65f758f46a544d9980"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a964496f2d1c20c65f758f46a544d9980">floormod</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a> [...]
+<tr class="separator:a964496f2d1c20c65f758f46a544d9980"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a93ac0e2663a2169194399b57ae39b003"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a93ac0e2663a2169194399b57ae39b003">floormod</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a> [...]
+<tr class="separator:a93ac0e2663a2169194399b57ae39b003"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af49dde9dfdeea62e8ad3a6d8db53de0b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#af49dde9dfdeea62e8ad3a6d8db53de0b">right_shift</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span< [...]
+<tr class="separator:af49dde9dfdeea62e8ad3a6d8db53de0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a98ff4361d0a24570f8dc32d03cde972a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a98ff4361d0a24570f8dc32d03cde972a">right_shift</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span< [...]
+<tr class="separator:a98ff4361d0a24570f8dc32d03cde972a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6bc108896d74f5f3b5cc3b98e9780e1c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a6bc108896d74f5f3b5cc3b98e9780e1c">left_shift</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</ [...]
+<tr class="separator:a6bc108896d74f5f3b5cc3b98e9780e1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a58fbf68a58a7f32935d6c4539d292a08"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a58fbf68a58a7f32935d6c4539d292a08">left_shift</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</ [...]
+<tr class="separator:a58fbf68a58a7f32935d6c4539d292a08"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af0178d43fdb5e585638588f093beb0b2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#af0178d43fdb5e585638588f093beb0b2">bitwise_and</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span< [...]
+<tr class="separator:af0178d43fdb5e585638588f093beb0b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9855a927b1c694fd22b26c5f6471c4dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a9855a927b1c694fd22b26c5f6471c4dc">bitwise_and</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span< [...]
+<tr class="separator:a9855a927b1c694fd22b26c5f6471c4dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4fa04a2f38468bc444468209b0f38188"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a4fa04a2f38468bc444468209b0f38188">bitwise_or</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</ [...]
+<tr class="separator:a4fa04a2f38468bc444468209b0f38188"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3bbd28c926db4678937fe228f77451d2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a3bbd28c926db4678937fe228f77451d2">bitwise_or</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</ [...]
+<tr class="separator:a3bbd28c926db4678937fe228f77451d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1bfafb836026c44c8a0f46656d30feb7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a1bfafb836026c44c8a0f46656d30feb7">bitwise_xor</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span< [...]
+<tr class="separator:a1bfafb836026c44c8a0f46656d30feb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acee8a44a486ddb623b69c1e61bcb77fd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#acee8a44a486ddb623b69c1e61bcb77fd">bitwise_xor</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span< [...]
+<tr class="separator:acee8a44a486ddb623b69c1e61bcb77fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:abccc3d3e96ee608022b148ffa05034eb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#abccc3d3e96ee608022b148ffa05034eb">operator&gt;&gt;</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, int b)</td></tr>
 <tr class="separator:abccc3d3e96ee608022b148ffa05034eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a550c2a251b2a6fd2a72172fe3db75d40"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a550c2a251b2a6fd2a72172fe3db75d40">operator&gt;&gt;</a> (int a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
@@ -963,6 +1110,14 @@ Functions</h2></td></tr>
 <tr class="separator:a873bb60c71f37cbb743e21797a53ba06"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a1a3f9ad4d0e25eee9c0b3a9c83114bc0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a1a3f9ad4d0e25eee9c0b3a9c83114bc0">operator||</a> (bool a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b)</td></tr>
 <tr class="separator:a1a3f9ad4d0e25eee9c0b3a9c83114bc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a84d49d8e646e152d2387cc49bc7b2a19"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a84d49d8e646e152d2387cc49bc7b2a19">logical_and</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, bool b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span [...]
+<tr class="separator:a84d49d8e646e152d2387cc49bc7b2a19"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4bf2f9a44cbd664ba4a0be9a0d35f0b5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a4bf2f9a44cbd664ba4a0be9a0d35f0b5">logical_and</a> (bool a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span [...]
+<tr class="separator:a4bf2f9a44cbd664ba4a0be9a0d35f0b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a75c5d58f8c58929103903a7352fbe5f1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a75c5d58f8c58929103903a7352fbe5f1">logical_or</a> (const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;a, bool b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span< [...]
+<tr class="separator:a75c5d58f8c58929103903a7352fbe5f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6e3893f3b9ed2c3b1135e0f085024767"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a6e3893f3b9ed2c3b1135e0f085024767">logical_or</a> (bool a, const <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &amp;b, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span< [...]
+<tr class="separator:a6e3893f3b9ed2c3b1135e0f085024767"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a31e7a3e4a160a1d048e3ba741966f1a8"><td class="memTemplParams" colspan="2">template&lt;typename TA &gt; </td></tr>
 <tr class="memitem:a31e7a3e4a160a1d048e3ba741966f1a8"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetvm.html#a31e7a3e4a160a1d048e3ba741966f1a8">DivAmbiguityError</a> (const TA &amp;a)</td></tr>
 <tr class="memdesc:a31e7a3e4a160a1d048e3ba741966f1a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper function to raise a compiler error about division ambiguity.  <a href="#a31e7a3e4a160a1d048e3ba741966f1a8">More...</a><br /></td></tr>
@@ -1097,7 +1252,7 @@ Variables</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="a84d274191adb24d2acb39064c1fbec52"></a>
+<a class="anchor" id="ab2a3c98ef29937defd6accb9b171a940"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1105,8 +1260,18 @@ Variables</h2></td></tr>
           <td class="memname"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> tvm::abs </td>
           <td>(</td>
           <td class="paramtype"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td>
-          <td class="paramname"><em>x</em></td><td>)</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
           <td></td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1Span.html">Span</a>&#160;</td>
+          <td class="paramname"><em>span</em> = <code><a class="el" href="classtvm_1_1Span.html">Span</a>()</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -1114,7 +1279,8 @@ Variables</h2></td></tr>
 <p>Calculate absolute value of x. </p>
 <dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
-    <tr><td class="paramname">x</td><td>The input data</td></tr>
+    <tr><td class="paramname">x</td><td>The input data </td></tr>
+    <tr><td class="paramname">span</td><td>The location of this operation in the source.</td></tr>
   </table>
   </dd>
 </dl>
@@ -1122,7 +1288,7 @@ Variables</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a3fc8c87ca0b1d1baa2adbcbb2da3869d"></a>
+<a class="anchor" id="aa8e1cc91eb14b427e3018836d82e15e6"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -1133,8 +1299,18 @@ Variables</h2></td></tr>
           <td class="memname"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> tvm::acos </td>
           <td>(</td>
           <td class="paramtype"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td>
-          <td class="paramname"><em>x</em></td><td>)</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1Span.html">Span</a>&#160;</td>
+          <td class="paramname"><em>span</em> = <code><a class="el" href="classtvm_1_1Span.html">Span</a>()</code>&#160;</td>
+        </tr>
+        <tr>
           <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
   </td>
@@ -1146,7 +1322,7 @@ Variables</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a867390323ef93eaa05fedc0770b0da0b"></a>
+<a class="anchor" id="af38d8633e3508033faa7bd60d8232bfe"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -1157,8 +1333,18 @@ Variables</h2></td></tr>
           <td class="memname"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> tvm::acosh </td>
           <td>(</td>
           <td class="paramtype"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td>
-          <td class="paramname"><em>x</em></td><td>)</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1Span.html">Span</a>&#160;</td>
+          <td class="paramname"><em>span</em> = <code><a class="el" href="classtvm_1_1Span.html">Span</a>()</code>&#160;</td>
+        </tr>
+        <tr>
           <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
   </td>
@@ -1170,27 +1356,27 @@ Variables</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a5bbd93564931490e8854f19c4f610966"></a>
+<a class="anchor" id="ae2794f261657780b2af4208b95d9cfcb"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> tvm::all </td>
+          <td class="memname"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> tvm::add </td>
           <td>(</td>
           <td class="paramtype"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td>
-          <td class="paramname"><em>source</em>, </td>
+          <td class="paramname"><em>a</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">Array&lt; <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tir::IterVar</a> &gt;&#160;</td>
-          <td class="paramname"><em>axis</em>, </td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td>
+          <td class="paramname"><em>b</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
... 23275 lines suppressed ...