You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by tq...@apache.org on 2023/07/05 16:53:28 UTC

[tvm-site] branch asf-site updated: deploying docs (apache/tvm@c928852d59282e39cd5fc162785a4fdf56c5aa1b)

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new 689db41986 deploying docs (apache/tvm@c928852d59282e39cd5fc162785a4fdf56c5aa1b)
689db41986 is described below

commit 689db41986252b73e4133351acf6f7eaabd8b3a2
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Wed Jul 5 16:53:13 2023 +0000

    deploying docs (apache/tvm@c928852d59282e39cd5fc162785a4fdf56c5aa1b)
---
 .../how_to/compile_models/from_darknet.rst.txt     |    2 +-
 .../how_to/compile_models/from_mxnet.rst.txt       |    2 +-
 .../how_to/compile_models/from_oneflow.rst.txt     |    2 +-
 .../how_to/compile_models/from_paddle.rst.txt      |    2 +-
 .../how_to/compile_models/from_pytorch.rst.txt     |    2 +-
 .../how_to/compile_models/from_tensorflow.rst.txt  |    2 +-
 .../compile_models/sg_execution_times.rst.txt      |   22 +-
 .../deploy_models/deploy_model_on_adreno.rst.txt   |    4 +-
 .../deploy_model_on_adreno_tvmc.rst.txt            |    2 +-
 .../deploy_models/deploy_model_on_android.rst.txt  |    2 +-
 .../deploy_object_detection_pytorch.rst.txt        |    4 +-
 .../deploy_models/deploy_prequantized.rst.txt      |    6 +-
 .../deploy_prequantized_tflite.rst.txt             |    2 +-
 .../how_to/deploy_models/deploy_quantized.rst.txt  |    2 +-
 .../deploy_models/sg_execution_times.rst.txt       |   20 +-
 .../extend_tvm/bring_your_own_datatypes.rst.txt    |    2 +-
 .../how_to/extend_tvm/sg_execution_times.rst.txt   |   10 +-
 .../how_to/extend_tvm/use_pass_instrument.rst.txt  |   16 +-
 .../optimize_operators/opt_conv_cuda.rst.txt       |    2 +-
 .../optimize_operators/opt_conv_tensorcore.rst.txt |    2 +-
 .../how_to/optimize_operators/opt_gemm.rst.txt     |   16 +-
 .../optimize_operators/sg_execution_times.rst.txt  |    8 +-
 .../sg_execution_times.rst.txt                     |   12 +-
 .../tune_conv2d_layer_cuda.rst.txt                 |    2 +-
 .../tune_network_cuda.rst.txt                      |    4 +-
 .../tune_network_x86.rst.txt                       |    4 +-
 .../tune_with_autotvm/sg_execution_times.rst.txt   |    8 +-
 .../tune_with_autotvm/tune_conv2d_cuda.rst.txt     |    2 +-
 .../work_with_microtvm/micro_autotune.rst.txt      |   18 +-
 .../work_with_microtvm/micro_pytorch.rst.txt       |    4 +-
 .../how_to/work_with_microtvm/micro_train.rst.txt  |   16 +-
 .../work_with_microtvm/sg_execution_times.rst.txt  |   14 +-
 .../work_with_relay/sg_execution_times.rst.txt     |   10 +-
 .../how_to/work_with_schedules/intrin_math.rst.txt |    2 +-
 .../work_with_schedules/sg_execution_times.rst.txt |   16 +-
 docs/_sources/reference/api/links.rst.txt          |    1 +
 .../tutorials/autotvm/sg_execution_times.rst.txt   |    6 +-
 .../frontend/deploy_classification.rst.txt         |    4 +-
 .../tutorials/frontend/deploy_detection.rst.txt    |    4 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |    6 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |    4 +-
 .../topic/vta/tutorials/sg_execution_times.rst.txt |    4 +-
 .../tutorial/auto_scheduler_matmul_x86.rst.txt     |    4 +-
 docs/_sources/tutorial/autotvm_matmul_x86.rst.txt  |   20 +-
 docs/_sources/tutorial/autotvm_relay_x86.rst.txt   |   58 +-
 .../tutorial/cross_compilation_and_rpc.rst.txt     |    2 +-
 docs/_sources/tutorial/intro_topi.rst.txt          |    2 +-
 docs/_sources/tutorial/sg_execution_times.rst.txt  |   18 +-
 .../tutorial/tensor_expr_get_started.rst.txt       |   46 +-
 docs/api/rust/.lock                                |    0
 docs/api/rust/array/all.html                       |    1 +
 docs/api/rust/array/fn.main.html                   |    1 +
 docs/api/rust/array/fn.sum.html                    |    1 +
 docs/api/rust/array/index.html                     |    1 +
 docs/api/rust/array/sidebar-items.js               |    1 +
 docs/api/rust/basics/all.html                      |    1 +
 docs/api/rust/basics/fn.main.html                  |    1 +
 docs/api/rust/basics/index.html                    |    1 +
 docs/api/rust/basics/sidebar-items.js              |    1 +
 docs/api/rust/compiler_ext/all.html                |    1 +
 docs/api/rust/compiler_ext/fn.tvm_export.html      |    1 +
 docs/api/rust/compiler_ext/index.html              |    1 +
 docs/api/rust/compiler_ext/sidebar-items.js        |    1 +
 docs/api/rust/crates.js                            |    1 +
 docs/api/rust/error/all.html                       |    1 +
 docs/api/rust/error/fn.error.html                  |    1 +
 docs/api/rust/error/fn.main.html                   |    1 +
 docs/api/rust/error/index.html                     |    1 +
 docs/api/rust/error/sidebar-items.js               |    1 +
 docs/api/rust/float/all.html                       |    1 +
 docs/api/rust/float/fn.main.html                   |    1 +
 docs/api/rust/float/fn.sum.html                    |    1 +
 docs/api/rust/float/index.html                     |    1 +
 docs/api/rust/float/sidebar-items.js               |    1 +
 docs/api/rust/help.html                            |    1 +
 .../rust/implementors/core/clone/trait.Clone.js    |    5 +
 docs/api/rust/implementors/core/cmp/trait.Eq.js    |    5 +
 docs/api/rust/implementors/core/cmp/trait.Ord.js   |    4 +
 .../rust/implementors/core/cmp/trait.PartialEq.js  |    6 +
 .../rust/implementors/core/cmp/trait.PartialOrd.js |    4 +
 .../rust/implementors/core/convert/trait.AsRef.js  |    4 +
 .../rust/implementors/core/convert/trait.From.js   |    6 +
 .../implementors/core/convert/trait.TryFrom.js     |    6 +
 .../implementors/core/default/trait.Default.js     |    5 +
 .../rust/implementors/core/error/trait.Error.js    |    6 +
 docs/api/rust/implementors/core/fmt/trait.Debug.js |    7 +
 .../rust/implementors/core/fmt/trait.Display.js    |    6 +
 docs/api/rust/implementors/core/hash/trait.Hash.js |    5 +
 .../core/iter/traits/collect/trait.FromIterator.js |    3 +
 .../core/iter/traits/collect/trait.IntoIterator.js |    3 +
 .../core/iter/traits/iterator/trait.Iterator.js    |    3 +
 .../rust/implementors/core/marker/trait.Copy.js    |    3 +
 .../rust/implementors/core/marker/trait.Freeze.js  |    7 +
 .../rust/implementors/core/marker/trait.Send.js    |    7 +
 .../implementors/core/marker/trait.StructuralEq.js |    4 +
 .../core/marker/trait.StructuralPartialEq.js       |    5 +
 .../rust/implementors/core/marker/trait.Sync.js    |    7 +
 .../rust/implementors/core/marker/trait.Unpin.js   |    7 +
 .../implementors/core/ops/deref/trait.Deref.js     |    4 +
 .../rust/implementors/core/ops/drop/trait.Drop.js  |    5 +
 .../core/panic/unwind_safe/trait.RefUnwindSafe.js  |    7 +
 .../core/panic/unwind_safe/trait.UnwindSafe.js     |    7 +
 .../implementors/core/str/traits/trait.FromStr.js  |    3 +
 .../implementors/serde/de/trait.Deserialize.js     |    3 +
 .../rust/implementors/serde/ser/trait.Serialize.js |    3 +
 .../rust/implementors/structopt/trait.StructOpt.js |    3 +
 .../tvm_graph_rt/module/trait.Module.js            |    3 +
 .../implementors/tvm_rt/ndarray/trait.Num32.js     |    4 +
 .../tvm_rt/object/object_ptr/trait.IsObject.js     |    4 +
 .../implementors/tvm_rt/object/trait.AsArgValue.js |    4 +
 .../tvm_rt/object/trait.IsObjectRef.js             |    4 +
 .../tvm_rt/to_function/trait.ToFunction.js         |    4 +
 .../implementors/tvm_rt/to_function/trait.Typed.js |    4 +
 .../tvm_sys/packed_func/trait.PackedFunc.js        |    4 +
 docs/api/rust/int/all.html                         |    1 +
 docs/api/rust/int/fn.main.html                     |    1 +
 docs/api/rust/int/fn.sum.html                      |    1 +
 docs/api/rust/int/index.html                       |    1 +
 docs/api/rust/int/sidebar-items.js                 |    1 +
 docs/api/rust/resnet/all.html                      |    1 +
 docs/api/rust/resnet/fn.main.html                  |    1 +
 docs/api/rust/resnet/index.html                    |    1 +
 docs/api/rust/resnet/sidebar-items.js              |    1 +
 docs/api/rust/search-index.js                      |   21 +
 docs/api/rust/settings.html                        |    1 +
 docs/api/rust/source-files.js                      |   20 +
 docs/api/rust/src/array/array.rs.html              |  128 ++
 docs/api/rust/src/basics/main.rs.html              |  110 +
 docs/api/rust/src/compiler_ext/lib.rs.html         |   72 +
 docs/api/rust/src/error/error.rs.html              |   92 +
 docs/api/rust/src/float/float.rs.html              |  102 +
 docs/api/rust/src/int/int.rs.html                  |   92 +
 docs/api/rust/src/resnet/main.rs.html              |  280 +++
 docs/api/rust/src/string/string.rs.html            |  120 ++
 docs/api/rust/src/test_rt_nn/main.rs.html          |  200 ++
 docs/api/rust/src/test_rt_tvm_basic/main.rs.html   |   96 +
 docs/api/rust/src/test_rt_tvm_dso/main.rs.html     |   80 +
 docs/api/rust/src/tvm/compiler/graph_rt.rs.html    |  250 +++
 docs/api/rust/src/tvm/compiler/mod.rs.html         |   42 +
 docs/api/rust/src/tvm/ir/arith.rs.html             |   94 +
 docs/api/rust/src/tvm/ir/attrs.rs.html             |   60 +
 .../rust/src/tvm/ir/diagnostics/codespan.rs.html   |  434 ++++
 docs/api/rust/src/tvm/ir/diagnostics/mod.rs.html   |  494 +++++
 docs/api/rust/src/tvm/ir/expr.rs.html              |  210 ++
 docs/api/rust/src/tvm/ir/function.rs.html          |   94 +
 docs/api/rust/src/tvm/ir/mod.rs.html               |   70 +
 docs/api/rust/src/tvm/ir/module.rs.html            |  784 +++++++
 docs/api/rust/src/tvm/ir/op.rs.html                |   88 +
 docs/api/rust/src/tvm/ir/relay/attrs/mod.rs.html   |   46 +
 docs/api/rust/src/tvm/ir/relay/attrs/nn.rs.html    |  518 +++++
 .../api/rust/src/tvm/ir/relay/attrs/reduce.rs.html |   98 +
 .../rust/src/tvm/ir/relay/attrs/transform.rs.html  |  282 +++
 docs/api/rust/src/tvm/ir/relay/mod.rs.html         | 1176 +++++++++++
 docs/api/rust/src/tvm/ir/source_map.rs.html        |  116 +
 docs/api/rust/src/tvm/ir/span.rs.html              |  144 ++
 docs/api/rust/src/tvm/ir/tir.rs.html               |  202 ++
 docs/api/rust/src/tvm/ir/ty.rs.html                |  626 ++++++
 docs/api/rust/src/tvm/lib.rs.html                  |  154 ++
 docs/api/rust/src/tvm/python.rs.html               |  142 ++
 docs/api/rust/src/tvm/runtime/mod.rs.html          |   42 +
 docs/api/rust/src/tvm/transform.rs.html            |  228 ++
 docs/api/rust/src/tvm_graph_rt/allocator.rs.html   |  148 ++
 docs/api/rust/src/tvm_graph_rt/array.rs.html       |  804 +++++++
 docs/api/rust/src/tvm_graph_rt/errors.rs.html      |  112 +
 docs/api/rust/src/tvm_graph_rt/graph.rs.html       | 1048 +++++++++
 docs/api/rust/src/tvm_graph_rt/lib.rs.html         |  154 ++
 docs/api/rust/src/tvm_graph_rt/module/dso.rs.html  |  298 +++
 docs/api/rust/src/tvm_graph_rt/module/mod.rs.html  |  132 ++
 .../rust/src/tvm_graph_rt/module/syslib.rs.html    |  148 ++
 docs/api/rust/src/tvm_graph_rt/threading.rs.html   |  528 +++++
 docs/api/rust/src/tvm_graph_rt/workspace.rs.html   |  280 +++
 docs/api/rust/src/tvm_macros/external.rs.html      |  398 ++++
 docs/api/rust/src/tvm_macros/import_module.rs.html |  268 +++
 docs/api/rust/src/tvm_macros/lib.rs.html           |   90 +
 docs/api/rust/src/tvm_macros/object.rs.html        |  426 ++++
 docs/api/rust/src/tvm_macros/util.rs.html          |   98 +
 docs/api/rust/src/tvm_rt/array.rs.html             |  440 ++++
 docs/api/rust/src/tvm_rt/device.rs.html            |  196 ++
 docs/api/rust/src/tvm_rt/errors.rs.html            |  196 ++
 docs/api/rust/src/tvm_rt/function.rs.html          |  710 +++++++
 docs/api/rust/src/tvm_rt/graph_rt.rs.html          |  218 ++
 docs/api/rust/src/tvm_rt/lib.rs.html               |  318 +++
 docs/api/rust/src/tvm_rt/map.rs.html               |  552 +++++
 docs/api/rust/src/tvm_rt/module.rs.html            |  266 +++
 docs/api/rust/src/tvm_rt/ndarray.rs.html           | 1032 +++++++++
 docs/api/rust/src/tvm_rt/object/mod.rs.html        |  222 ++
 docs/api/rust/src/tvm_rt/object/object_ptr.rs.html | 1112 ++++++++++
 docs/api/rust/src/tvm_rt/string.rs.html            |  286 +++
 docs/api/rust/src/tvm_rt/to_function.rs.html       |  676 ++++++
 docs/api/rust/src/tvm_sys/array.rs.html            |  128 ++
 docs/api/rust/src/tvm_sys/byte_array.rs.html       |  306 +++
 docs/api/rust/src/tvm_sys/datatype.rs.html         |  430 ++++
 docs/api/rust/src/tvm_sys/device.rs.html           |  592 ++++++
 docs/api/rust/src/tvm_sys/errors.rs.html           |   94 +
 docs/api/rust/src/tvm_sys/lib.rs.html              |  146 ++
 docs/api/rust/src/tvm_sys/packed_func.rs.html      |  856 ++++++++
 docs/api/rust/src/tvm_sys/value.rs.html            |  192 ++
 .../out/c_runtime_api.rs.html                      | 2222 ++++++++++++++++++++
 docs/api/rust/src/tyck/tyck.rs.html                |  100 +
 .../static.files/COPYRIGHT-002d5dd09d9a4f50.txt    |   46 +
 .../FiraSans-LICENSE-1761dca11ffc8f19.txt          |   94 +
 .../FiraSans-Medium-8f9a781e4970d388.woff2         |  Bin 0 -> 132780 bytes
 .../FiraSans-Regular-018c141bf0843ffd.woff2        |  Bin 0 -> 129188 bytes
 .../LICENSE-APACHE-b91fa81cba47b86a.txt            |  201 ++
 .../static.files/LICENSE-MIT-65090b722b3f6c56.txt  |   23 +
 .../NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2    |  Bin 0 -> 399468 bytes
 .../NanumBarunGothic-LICENSE-2fe9ce67ec95245d.txt  |   99 +
 .../SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2    |  Bin 0 -> 44896 bytes
 .../SourceCodePro-LICENSE-f554967dca0cf1dd.txt     |   93 +
 ...ourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2 |  Bin 0 -> 52228 bytes
 ...urceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2 |  Bin 0 -> 52348 bytes
 .../SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2   |  Bin 0 -> 81540 bytes
 .../SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2     |  Bin 0 -> 59716 bytes
 .../SourceSerif4-LICENSE-971e190366a5901b.md       |   93 +
 ...SourceSerif4-Regular-46f98efaafac5295.ttf.woff2 |  Bin 0 -> 76260 bytes
 .../api/rust/static.files/ayu-be46fdc453a55015.css |    1 +
 .../static.files/clipboard-7571035ce49a181d.svg    |    1 +
 .../rust/static.files/dark-cf923f49f397b216.css    |    1 +
 .../favicon-16x16-8b506e7a72182f1c.png             |  Bin 0 -> 715 bytes
 .../rust/static.files/favicon-2c020d218678b618.svg |   24 +
 .../favicon-32x32-422f7d1d52889060.png             |  Bin 0 -> 1125 bytes
 .../rust/static.files/light-db279b6232be9c13.css   |    1 +
 .../api/rust/static.files/main-98a684e84ae5b08b.js |    8 +
 .../static.files/normalize-76eba96aa4d2e634.css    |    2 +
 .../static.files/noscript-13285aec31fa243e.css     |    1 +
 .../static.files/rust-logo-151179464ae7ed46.svg    |   61 +
 .../rust/static.files/rustdoc-c4dbdcde0fbd8430.css |    8 +
 .../scrape-examples-ef1e698c1d417c0c.js            |    1 +
 .../rust/static.files/search-8a59a8356673ec1f.js   |    1 +
 .../static.files/settings-0bcba95ff279c1db.css     |    3 +
 .../rust/static.files/settings-f0c5c39777a9a2f6.js |   17 +
 .../static.files/source-script-1b95b7cca98b26e5.js |    1 +
 .../rust/static.files/storage-3891ce972e3a2bf8.js  |    1 +
 .../rust/static.files/wheel-7b819b6101059cd0.svg   |    1 +
 docs/api/rust/string/all.html                      |    1 +
 docs/api/rust/string/fn.concat_str.html            |    1 +
 docs/api/rust/string/fn.main.html                  |    1 +
 docs/api/rust/string/index.html                    |    1 +
 docs/api/rust/string/sidebar-items.js              |    1 +
 docs/api/rust/test_rt_nn/all.html                  |    1 +
 docs/api/rust/test_rt_nn/constant.BATCH_SIZE.html  |    1 +
 docs/api/rust/test_rt_nn/constant.IN_DIM.html      |    1 +
 docs/api/rust/test_rt_nn/fn.main.html              |    1 +
 docs/api/rust/test_rt_nn/index.html                |    1 +
 docs/api/rust/test_rt_nn/macro.check_sum!.html     |   11 +
 docs/api/rust/test_rt_nn/macro.check_sum.html      |    5 +
 docs/api/rust/test_rt_nn/sidebar-items.js          |    1 +
 docs/api/rust/test_rt_tvm_basic/all.html           |    1 +
 docs/api/rust/test_rt_tvm_basic/fn.main.html       |    1 +
 docs/api/rust/test_rt_tvm_basic/index.html         |    1 +
 docs/api/rust/test_rt_tvm_basic/sidebar-items.js   |    1 +
 .../tvm_mod/ext/fn.__extendhfsf2.html              |    5 +
 .../tvm_mod/ext/fn.__truncsfhf2.html               |    5 +
 .../tvm_mod/ext/fn.__tvm_main__.html               |    5 +
 .../tvm_mod/ext/fn.__tvm_module_ctx.html           |    5 +
 .../tvm_mod/ext/fn.__tvm_module_startup.html       |    5 +
 .../tvm_mod/ext/fn.default_function.html           |    5 +
 .../tvm_mod/ext/fn.default_function_compute_.html  |    5 +
 .../rust/test_rt_tvm_basic/tvm_mod/ext/index.html  |    1 +
 .../test_rt_tvm_basic/tvm_mod/ext/sidebar-items.js |    1 +
 .../tvm_mod/fn.__extendhfsf2.html                  |    1 +
 .../test_rt_tvm_basic/tvm_mod/fn.__truncsfhf2.html |    1 +
 .../test_rt_tvm_basic/tvm_mod/fn.__tvm_main__.html |    1 +
 .../tvm_mod/fn.__tvm_module_ctx.html               |    3 +
 .../tvm_mod/fn.__tvm_module_startup.html           |    3 +
 .../tvm_mod/fn.default_function.html               |    3 +
 .../tvm_mod/fn.default_function_compute_.html      |    3 +
 docs/api/rust/test_rt_tvm_basic/tvm_mod/index.html |    1 +
 .../test_rt_tvm_basic/tvm_mod/sidebar-items.js     |    1 +
 docs/api/rust/test_rt_tvm_dso/all.html             |    1 +
 docs/api/rust/test_rt_tvm_dso/fn.main.html         |    1 +
 docs/api/rust/test_rt_tvm_dso/index.html           |    1 +
 docs/api/rust/test_rt_tvm_dso/sidebar-items.js     |    1 +
 docs/api/rust/tvm/all.html                         |    1 +
 .../api/rust/tvm/compiler/graph_rt/enum.Error.html |   17 +
 .../compiler/graph_rt/fn.compile_from_disk.html    |   14 +
 .../tvm/compiler/graph_rt/fn.compile_module.html   |   10 +
 docs/api/rust/tvm/compiler/graph_rt/index.html     |    1 +
 .../rust/tvm/compiler/graph_rt/sidebar-items.js    |    1 +
 .../compiler/graph_rt/struct.CompilerConfig.html   |   11 +
 docs/api/rust/tvm/compiler/index.html              |    1 +
 docs/api/rust/tvm/compiler/sidebar-items.js        |    1 +
 docs/api/rust/tvm/device/enum.DeviceType.html      |   37 +
 docs/api/rust/tvm/device/index.html                |    2 +
 docs/api/rust/tvm/device/sidebar-items.js          |    1 +
 docs/api/rust/tvm/device/struct.Device.html        |   24 +
 .../tvm/device/struct.UnsupportedDeviceError.html  |   14 +
 docs/api/rust/tvm/enum.DeviceType.html             |   37 +
 docs/api/rust/tvm/enum.Error.html                  |   27 +
 docs/api/rust/tvm/enum.NDArrayError.html           |   22 +
 docs/api/rust/tvm/errors/enum.Error.html           |   27 +
 docs/api/rust/tvm/errors/enum.NDArrayError.html    |   22 +
 docs/api/rust/tvm/errors/index.html                |    1 +
 docs/api/rust/tvm/errors/sidebar-items.js          |    1 +
 .../tvm/errors/struct.FunctionNotFoundError.html   |   14 +
 .../rust/tvm/errors/struct.TypeMismatchError.html  |   17 +
 docs/api/rust/tvm/fn.version.html                  |    2 +
 docs/api/rust/tvm/function/enum.ArgValue.html      |   54 +
 docs/api/rust/tvm/function/enum.RetValue.html      |   81 +
 .../ffi/constant.DLDataTypeCode_kDLBfloat.html     |    2 +
 .../ffi/constant.DLDataTypeCode_kDLComplex.html    |    3 +
 .../ffi/constant.DLDataTypeCode_kDLFloat.html      |    2 +
 .../ffi/constant.DLDataTypeCode_kDLInt.html        |    2 +
 .../constant.DLDataTypeCode_kDLOpaqueHandle.html   |    3 +
 .../ffi/constant.DLDataTypeCode_kDLUInt.html       |    2 +
 .../function/ffi/constant.DLDeviceType_kDLCPU.html |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDA.html         |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDAHost.html     |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDAManaged.html  |    2 +
 .../ffi/constant.DLDeviceType_kDLExtDev.html       |    4 +
 .../ffi/constant.DLDeviceType_kDLHexagon.html      |    2 +
 .../ffi/constant.DLDeviceType_kDLMetal.html        |    2 +
 .../ffi/constant.DLDeviceType_kDLOneAPI.html       |    4 +
 .../ffi/constant.DLDeviceType_kDLOpenCL.html       |    2 +
 .../ffi/constant.DLDeviceType_kDLROCM.html         |    2 +
 .../ffi/constant.DLDeviceType_kDLROCMHost.html     |    2 +
 .../function/ffi/constant.DLDeviceType_kDLVPI.html |    2 +
 .../ffi/constant.DLDeviceType_kDLVulkan.html       |    2 +
 .../ffi/constant.DLDeviceType_kDLWebGPU.html       |    2 +
 .../function/ffi/constant.DLPACK_ABI_VERSION.html  |    1 +
 .../tvm/function/ffi/constant.DLPACK_VERSION.html  |    1 +
 .../rust/tvm/function/ffi/constant.INT16_MAX.html  |    1 +
 .../rust/tvm/function/ffi/constant.INT16_MIN.html  |    1 +
 .../rust/tvm/function/ffi/constant.INT32_MAX.html  |    1 +
 .../rust/tvm/function/ffi/constant.INT32_MIN.html  |    1 +
 .../rust/tvm/function/ffi/constant.INT8_MAX.html   |    1 +
 .../rust/tvm/function/ffi/constant.INT8_MIN.html   |    1 +
 .../rust/tvm/function/ffi/constant.INTPTR_MAX.html |    1 +
 .../rust/tvm/function/ffi/constant.INTPTR_MIN.html |    1 +
 .../tvm/function/ffi/constant.INT_FAST16_MAX.html  |    1 +
 .../tvm/function/ffi/constant.INT_FAST16_MIN.html  |    1 +
 .../tvm/function/ffi/constant.INT_FAST32_MAX.html  |    1 +
 .../tvm/function/ffi/constant.INT_FAST32_MIN.html  |    1 +
 .../tvm/function/ffi/constant.INT_FAST8_MAX.html   |    1 +
 .../tvm/function/ffi/constant.INT_FAST8_MIN.html   |    1 +
 .../tvm/function/ffi/constant.INT_LEAST16_MAX.html |    1 +
 .../tvm/function/ffi/constant.INT_LEAST16_MIN.html |    1 +
 .../tvm/function/ffi/constant.INT_LEAST32_MAX.html |    1 +
 .../tvm/function/ffi/constant.INT_LEAST32_MIN.html |    1 +
 .../tvm/function/ffi/constant.INT_LEAST8_MAX.html  |    1 +
 .../tvm/function/ffi/constant.INT_LEAST8_MIN.html  |    1 +
 .../tvm/function/ffi/constant.PTRDIFF_MAX.html     |    1 +
 .../tvm/function/ffi/constant.PTRDIFF_MIN.html     |    1 +
 .../tvm/function/ffi/constant.SIG_ATOMIC_MAX.html  |    1 +
 .../tvm/function/ffi/constant.SIG_ATOMIC_MIN.html  |    1 +
 .../rust/tvm/function/ffi/constant.SIZE_MAX.html   |    1 +
 .../ffi/constant.TVMArgTypeCode_kDLDevice.html     |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMArgFloat.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMArgInt.html    |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMBytes.html     |    1 +
 ...constant.TVMArgTypeCode_kTVMDLTensorHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMDataType.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMExtBegin.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMExtEnd.html    |    1 +
 .../constant.TVMArgTypeCode_kTVMExtReserveEnd.html |    1 +
 .../constant.TVMArgTypeCode_kTVMModuleHandle.html  |    1 +
 .../constant.TVMArgTypeCode_kTVMNDArrayHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNNVMFirst.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNNVMLast.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNullptr.html   |    1 +
 .../constant.TVMArgTypeCode_kTVMObjectHandle.html  |    1 +
 ...tant.TVMArgTypeCode_kTVMObjectRValueRefArg.html |    1 +
 .../constant.TVMArgTypeCode_kTVMOpaqueHandle.html  |    1 +
 ...nstant.TVMArgTypeCode_kTVMPackedFuncHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMStr.html       |    1 +
 ...tant.TVMDeviceExtType_TVMDeviceExtType_End.html |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLAOCL.html     |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLMicroDev.html |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLSDAccel.html  |    1 +
 .../ffi/constant.TVMDeviceExtType_kOpenGL.html     |    1 +
 .../tvm/function/ffi/constant.TVM_VERSION.html     |    1 +
 .../rust/tvm/function/ffi/constant.UINT16_MAX.html |    1 +
 .../rust/tvm/function/ffi/constant.UINT32_MAX.html |    1 +
 .../rust/tvm/function/ffi/constant.UINT8_MAX.html  |    1 +
 .../tvm/function/ffi/constant.UINTPTR_MAX.html     |    1 +
 .../tvm/function/ffi/constant.UINT_FAST16_MAX.html |    1 +
 .../tvm/function/ffi/constant.UINT_FAST32_MAX.html |    1 +
 .../tvm/function/ffi/constant.UINT_FAST8_MAX.html  |    1 +
 .../function/ffi/constant.UINT_LEAST16_MAX.html    |    1 +
 .../function/ffi/constant.UINT_LEAST32_MAX.html    |    1 +
 .../tvm/function/ffi/constant.UINT_LEAST8_MAX.html |    1 +
 .../rust/tvm/function/ffi/constant.WINT_MAX.html   |    1 +
 .../rust/tvm/function/ffi/constant.WINT_MIN.html   |    1 +
 .../tvm/function/ffi/constant._ATFILE_SOURCE.html  |    1 +
 .../function/ffi/constant._BITS_STDINT_INTN_H.html |    1 +
 .../ffi/constant._BITS_STDINT_UINTN_H.html         |    1 +
 .../tvm/function/ffi/constant._BITS_TIME64_H.html  |    1 +
 .../function/ffi/constant._BITS_TYPESIZES_H.html   |    1 +
 .../tvm/function/ffi/constant._BITS_TYPES_H.html   |    1 +
 .../tvm/function/ffi/constant._BITS_WCHAR_H.html   |    1 +
 .../tvm/function/ffi/constant._DEFAULT_SOURCE.html |    1 +
 .../tvm/function/ffi/constant._FEATURES_H.html     |    1 +
 .../tvm/function/ffi/constant._POSIX_C_SOURCE.html |    1 +
 .../tvm/function/ffi/constant._POSIX_SOURCE.html   |    1 +
 .../tvm/function/ffi/constant._STDC_PREDEF_H.html  |    1 +
 .../rust/tvm/function/ffi/constant._STDINT_H.html  |    1 +
 .../tvm/function/ffi/constant._SYS_CDEFS_H.html    |    1 +
 .../tvm/function/ffi/constant.__FD_SETSIZE.html    |    1 +
 .../tvm/function/ffi/constant.__GLIBC_MINOR__.html |    1 +
 .../ffi/constant.__GLIBC_USE_DEPRECATED_GETS.html  |    1 +
 .../ffi/constant.__GLIBC_USE_DEPRECATED_SCANF.html |    1 +
 .../constant.__GLIBC_USE_IEC_60559_BFP_EXT.html    |    1 +
 ...constant.__GLIBC_USE_IEC_60559_BFP_EXT_C2X.html |    1 +
 .../ffi/constant.__GLIBC_USE_IEC_60559_EXT.html    |    1 +
 .../constant.__GLIBC_USE_IEC_60559_FUNCS_EXT.html  |    1 +
 ...nstant.__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X.html |    1 +
 .../constant.__GLIBC_USE_IEC_60559_TYPES_EXT.html  |    1 +
 .../function/ffi/constant.__GLIBC_USE_ISOC2X.html  |    1 +
 .../ffi/constant.__GLIBC_USE_LIB_EXT2.html         |    1 +
 .../rust/tvm/function/ffi/constant.__GLIBC__.html  |    1 +
 .../tvm/function/ffi/constant.__GNU_LIBRARY__.html |    1 +
 .../ffi/constant.__HAVE_GENERIC_SELECTION.html     |    1 +
 .../ffi/constant.__INO_T_MATCHES_INO64_T.html      |    1 +
 ...ant.__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64.html |    1 +
 ...nstant.__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI.html |    1 +
 .../ffi/constant.__OFF_T_MATCHES_OFF64_T.html      |    1 +
 .../ffi/constant.__RLIM_T_MATCHES_RLIM64_T.html    |    1 +
 .../ffi/constant.__STATFS_MATCHES_STATFS64.html    |    1 +
 .../ffi/constant.__STDC_IEC_559_COMPLEX__.html     |    1 +
 .../function/ffi/constant.__STDC_IEC_559__.html    |    1 +
 .../ffi/constant.__STDC_IEC_60559_BFP__.html       |    1 +
 .../ffi/constant.__STDC_IEC_60559_COMPLEX__.html   |    1 +
 .../function/ffi/constant.__STDC_ISO_10646__.html  |    1 +
 .../function/ffi/constant.__SYSCALL_WORDSIZE.html  |    1 +
 .../rust/tvm/function/ffi/constant.__TIMESIZE.html |    1 +
 .../tvm/function/ffi/constant.__USE_ATFILE.html    |    1 +
 .../function/ffi/constant.__USE_FORTIFY_LEVEL.html |    1 +
 .../tvm/function/ffi/constant.__USE_ISOC11.html    |    1 +
 .../tvm/function/ffi/constant.__USE_ISOC95.html    |    1 +
 .../tvm/function/ffi/constant.__USE_ISOC99.html    |    1 +
 .../rust/tvm/function/ffi/constant.__USE_MISC.html |    1 +
 .../tvm/function/ffi/constant.__USE_POSIX.html     |    1 +
 .../function/ffi/constant.__USE_POSIX199309.html   |    1 +
 .../function/ffi/constant.__USE_POSIX199506.html   |    1 +
 .../tvm/function/ffi/constant.__USE_POSIX2.html    |    1 +
 .../ffi/constant.__USE_POSIX_IMPLICITLY.html       |    1 +
 .../tvm/function/ffi/constant.__USE_XOPEN2K.html   |    1 +
 .../tvm/function/ffi/constant.__USE_XOPEN2K8.html  |    1 +
 .../rust/tvm/function/ffi/constant.__WORDSIZE.html |    1 +
 .../ffi/constant.__WORDSIZE_TIME64_COMPAT32.html   |    1 +
 .../constant.__glibc_c99_flexarr_available.html    |    1 +
 .../tvm/function/ffi/fn.TVMAPISetLastError.html    |    4 +
 .../rust/tvm/function/ffi/fn.TVMArrayAlloc.html    |   21 +
 .../tvm/function/ffi/fn.TVMArrayCopyFromBytes.html |   10 +
 .../tvm/function/ffi/fn.TVMArrayCopyFromTo.html    |   10 +
 .../tvm/function/ffi/fn.TVMArrayCopyToBytes.html   |   10 +
 .../api/rust/tvm/function/ffi/fn.TVMArrayFree.html |    4 +
 .../tvm/function/ffi/fn.TVMArrayFromDLPack.html    |    9 +
 .../rust/tvm/function/ffi/fn.TVMArrayToDLPack.html |    9 +
 .../function/ffi/fn.TVMBackendAllocWorkspace.html  |   17 +
 .../function/ffi/fn.TVMBackendFreeWorkspace.html   |   11 +
 .../function/ffi/fn.TVMBackendGetFuncFromEnv.html  |   12 +
 .../function/ffi/fn.TVMBackendParallelBarrier.html |    8 +
 .../function/ffi/fn.TVMBackendParallelLaunch.html  |   11 +
 .../function/ffi/fn.TVMBackendRegisterEnvCAPI.html |   11 +
 .../ffi/fn.TVMBackendRegisterSystemLibSymbol.html  |    8 +
 .../tvm/function/ffi/fn.TVMBackendRunOnce.html     |   14 +
 .../rust/tvm/function/ffi/fn.TVMByteArrayFree.html |    6 +
 .../tvm/function/ffi/fn.TVMCFuncSetReturn.html     |   13 +
 .../rust/tvm/function/ffi/fn.TVMCbArgToReturn.html |   10 +
 .../ffi/fn.TVMDLManagedTensorCallDeleter.html      |    5 +
 .../function/ffi/fn.TVMDeviceAllocDataSpace.html   |   15 +
 .../ffi/fn.TVMDeviceAllocDataSpaceWithScope.html   |   19 +
 .../function/ffi/fn.TVMDeviceCopyDataFromTo.html   |   12 +
 .../function/ffi/fn.TVMDeviceFreeDataSpace.html    |    8 +
 docs/api/rust/tvm/function/ffi/fn.TVMFuncCall.html |   22 +
 .../function/ffi/fn.TVMFuncCreateFromCFunc.html    |   13 +
 docs/api/rust/tvm/function/ffi/fn.TVMFuncFree.html |    4 +
 .../rust/tvm/function/ffi/fn.TVMFuncGetGlobal.html |    9 +
 .../function/ffi/fn.TVMFuncListGlobalNames.html    |    8 +
 .../tvm/function/ffi/fn.TVMFuncRegisterGlobal.html |   10 +
 .../tvm/function/ffi/fn.TVMFuncRemoveGlobal.html   |    3 +
 .../rust/tvm/function/ffi/fn.TVMGetLastError.html  |    7 +
 docs/api/rust/tvm/function/ffi/fn.TVMModFree.html  |    8 +
 .../tvm/function/ffi/fn.TVMModGetFunction.html     |   12 +
 .../api/rust/tvm/function/ffi/fn.TVMModImport.html |    9 +
 .../tvm/function/ffi/fn.TVMModLoadFromFile.html    |   12 +
 .../tvm/function/ffi/fn.TVMObjectDerivedFrom.html  |   10 +
 .../rust/tvm/function/ffi/fn.TVMObjectFree.html    |    6 +
 .../tvm/function/ffi/fn.TVMObjectGetTypeIndex.html |    8 +
 .../rust/tvm/function/ffi/fn.TVMObjectRetain.html  |    5 +
 .../function/ffi/fn.TVMObjectTypeIndex2Key.html    |    8 +
 .../function/ffi/fn.TVMObjectTypeKey2Index.html    |    8 +
 .../api/rust/tvm/function/ffi/fn.TVMSetStream.html |   13 +
 .../rust/tvm/function/ffi/fn.TVMStreamCreate.html  |   10 +
 .../rust/tvm/function/ffi/fn.TVMStreamFree.html    |   10 +
 .../ffi/fn.TVMStreamStreamSynchronize.html         |   12 +
 .../rust/tvm/function/ffi/fn.TVMSynchronize.html   |   10 +
 docs/api/rust/tvm/function/ffi/index.html          |  116 +
 docs/api/rust/tvm/function/ffi/sidebar-items.js    |    1 +
 .../rust/tvm/function/ffi/struct.DLDataType.html   |   41 +
 .../api/rust/tvm/function/ffi/struct.DLDevice.html |   30 +
 .../tvm/function/ffi/struct.DLManagedTensor.html   |   30 +
 .../api/rust/tvm/function/ffi/struct.DLTensor.html |   59 +
 .../rust/tvm/function/ffi/struct.TVMByteArray.html |   23 +
 .../function/ffi/struct.TVMParallelGroupEnv.html   |   20 +
 .../api/rust/tvm/function/ffi/struct.__fsid_t.html |   16 +
 .../tvm/function/ffi/type.BackendPackedCFunc.html  |    1 +
 .../rust/tvm/function/ffi/type.DLDataTypeCode.html |    2 +
 .../rust/tvm/function/ffi/type.DLDeviceType.html   |    1 +
 .../tvm/function/ffi/type.FTVMParallelLambda.html  |    5 +
 .../rust/tvm/function/ffi/type.TVMArgTypeCode.html |   13 +
 .../rust/tvm/function/ffi/type.TVMArrayHandle.html |    2 +
 .../function/ffi/type.TVMBackendPackedCFunc.html   |    9 +
 .../tvm/function/ffi/type.TVMDeviceExtType.html    |    1 +
 .../ffi/type.TVMExtensionFuncDeclarer.html         |    6 +
 .../tvm/function/ffi/type.TVMFunctionHandle.html   |    2 +
 .../tvm/function/ffi/type.TVMModuleHandle.html     |    2 +
 .../tvm/function/ffi/type.TVMObjectHandle.html     |    2 +
 .../rust/tvm/function/ffi/type.TVMPackedCFunc.html |    9 +
 .../function/ffi/type.TVMPackedCFuncFinalizer.html |    3 +
 .../tvm/function/ffi/type.TVMRetValueHandle.html   |    2 +
 .../tvm/function/ffi/type.TVMStreamHandle.html     |    3 +
 .../rust/tvm/function/ffi/type.__blkcnt64_t.html   |    1 +
 .../api/rust/tvm/function/ffi/type.__blkcnt_t.html |    1 +
 .../rust/tvm/function/ffi/type.__blksize_t.html    |    1 +
 docs/api/rust/tvm/function/ffi/type.__caddr_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__clock_t.html |    1 +
 .../rust/tvm/function/ffi/type.__clockid_t.html    |    1 +
 docs/api/rust/tvm/function/ffi/type.__daddr_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__dev_t.html   |    1 +
 .../rust/tvm/function/ffi/type.__fsblkcnt64_t.html |    1 +
 .../rust/tvm/function/ffi/type.__fsblkcnt_t.html   |    1 +
 .../rust/tvm/function/ffi/type.__fsfilcnt64_t.html |    1 +
 .../rust/tvm/function/ffi/type.__fsfilcnt_t.html   |    1 +
 .../api/rust/tvm/function/ffi/type.__fsword_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__gid_t.html   |    1 +
 docs/api/rust/tvm/function/ffi/type.__id_t.html    |    1 +
 docs/api/rust/tvm/function/ffi/type.__ino64_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__ino_t.html   |    1 +
 docs/api/rust/tvm/function/ffi/type.__int16_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__int32_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__int64_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__int8_t.html  |    1 +
 .../tvm/function/ffi/type.__int_least16_t.html     |    1 +
 .../tvm/function/ffi/type.__int_least32_t.html     |    1 +
 .../tvm/function/ffi/type.__int_least64_t.html     |    1 +
 .../rust/tvm/function/ffi/type.__int_least8_t.html |    1 +
 .../api/rust/tvm/function/ffi/type.__intmax_t.html |    1 +
 .../api/rust/tvm/function/ffi/type.__intptr_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__key_t.html   |    1 +
 docs/api/rust/tvm/function/ffi/type.__loff_t.html  |    1 +
 docs/api/rust/tvm/function/ffi/type.__mode_t.html  |    1 +
 docs/api/rust/tvm/function/ffi/type.__nlink_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__off64_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__off_t.html   |    1 +
 docs/api/rust/tvm/function/ffi/type.__pid_t.html   |    1 +
 docs/api/rust/tvm/function/ffi/type.__quad_t.html  |    1 +
 .../api/rust/tvm/function/ffi/type.__rlim64_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__rlim_t.html  |    1 +
 .../rust/tvm/function/ffi/type.__sig_atomic_t.html |    1 +
 .../rust/tvm/function/ffi/type.__socklen_t.html    |    1 +
 docs/api/rust/tvm/function/ffi/type.__ssize_t.html |    1 +
 .../tvm/function/ffi/type.__suseconds64_t.html     |    1 +
 .../rust/tvm/function/ffi/type.__suseconds_t.html  |    1 +
 .../tvm/function/ffi/type.__syscall_slong_t.html   |    1 +
 .../tvm/function/ffi/type.__syscall_ulong_t.html   |    1 +
 docs/api/rust/tvm/function/ffi/type.__time_t.html  |    1 +
 docs/api/rust/tvm/function/ffi/type.__timer_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__u_char.html  |    1 +
 docs/api/rust/tvm/function/ffi/type.__u_int.html   |    1 +
 docs/api/rust/tvm/function/ffi/type.__u_long.html  |    1 +
 .../api/rust/tvm/function/ffi/type.__u_quad_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__u_short.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__uid_t.html   |    1 +
 .../api/rust/tvm/function/ffi/type.__uint16_t.html |    1 +
 .../api/rust/tvm/function/ffi/type.__uint32_t.html |    1 +
 .../api/rust/tvm/function/ffi/type.__uint64_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.__uint8_t.html |    1 +
 .../tvm/function/ffi/type.__uint_least16_t.html    |    1 +
 .../tvm/function/ffi/type.__uint_least32_t.html    |    1 +
 .../tvm/function/ffi/type.__uint_least64_t.html    |    1 +
 .../tvm/function/ffi/type.__uint_least8_t.html     |    1 +
 .../rust/tvm/function/ffi/type.__uintmax_t.html    |    1 +
 .../rust/tvm/function/ffi/type.__useconds_t.html   |    1 +
 .../rust/tvm/function/ffi/type.int_fast16_t.html   |    1 +
 .../rust/tvm/function/ffi/type.int_fast32_t.html   |    1 +
 .../rust/tvm/function/ffi/type.int_fast64_t.html   |    1 +
 .../rust/tvm/function/ffi/type.int_fast8_t.html    |    1 +
 .../rust/tvm/function/ffi/type.int_least16_t.html  |    1 +
 .../rust/tvm/function/ffi/type.int_least32_t.html  |    1 +
 .../rust/tvm/function/ffi/type.int_least64_t.html  |    1 +
 .../rust/tvm/function/ffi/type.int_least8_t.html   |    1 +
 docs/api/rust/tvm/function/ffi/type.intmax_t.html  |    1 +
 docs/api/rust/tvm/function/ffi/type.size_t.html    |    1 +
 .../rust/tvm/function/ffi/type.tvm_index_t.html    |    2 +
 .../rust/tvm/function/ffi/type.uint_fast16_t.html  |    1 +
 .../rust/tvm/function/ffi/type.uint_fast32_t.html  |    1 +
 .../rust/tvm/function/ffi/type.uint_fast64_t.html  |    1 +
 .../rust/tvm/function/ffi/type.uint_fast8_t.html   |    1 +
 .../rust/tvm/function/ffi/type.uint_least16_t.html |    1 +
 .../rust/tvm/function/ffi/type.uint_least32_t.html |    1 +
 .../rust/tvm/function/ffi/type.uint_least64_t.html |    1 +
 .../rust/tvm/function/ffi/type.uint_least8_t.html  |    1 +
 docs/api/rust/tvm/function/ffi/type.uintmax_t.html |    1 +
 docs/api/rust/tvm/function/ffi/type.wchar_t.html   |    1 +
 docs/api/rust/tvm/function/ffi/union.TVMValue.html |   22 +
 docs/api/rust/tvm/function/fn.register.html        |   20 +
 .../rust/tvm/function/fn.register_override.html    |    9 +
 .../api/rust/tvm/function/fn.register_untyped.html |    6 +
 docs/api/rust/tvm/function/index.html              |    9 +
 docs/api/rust/tvm/function/sidebar-items.js        |    1 +
 docs/api/rust/tvm/function/struct.Function.html    |   28 +
 docs/api/rust/tvm/function/struct.RawArgs.html     |   30 +
 docs/api/rust/tvm/function/trait.ToFunction.html   |   57 +
 docs/api/rust/tvm/function/trait.Typed.html        |   72 +
 docs/api/rust/tvm/function/type.Result.html        |    1 +
 docs/api/rust/tvm/index.html                       |   12 +
 docs/api/rust/tvm/ir/arith/index.html              |    1 +
 docs/api/rust/tvm/ir/arith/sidebar-items.js        |    1 +
 .../rust/tvm/ir/arith/struct.ConstIntBound.html    |   22 +
 .../tvm/ir/arith/struct.ConstIntBoundNode.html     |   16 +
 docs/api/rust/tvm/ir/attrs/index.html              |    1 +
 docs/api/rust/tvm/ir/attrs/sidebar-items.js        |    1 +
 docs/api/rust/tvm/ir/attrs/struct.Attrs.html       |   22 +
 .../rust/tvm/ir/attrs/struct.BaseAttrsNode.html    |   14 +
 .../rust/tvm/ir/diagnostics/codespan/fn.init.html  |    3 +
 .../rust/tvm/ir/diagnostics/codespan/index.html    |    5 +
 .../tvm/ir/diagnostics/codespan/sidebar-items.js   |    1 +
 .../tvm/ir/diagnostics/enum.DiagnosticLevel.html   |   21 +
 docs/api/rust/tvm/ir/diagnostics/index.html        |    2 +
 docs/api/rust/tvm/ir/diagnostics/sidebar-items.js  |    1 +
 .../rust/tvm/ir/diagnostics/struct.Diagnostic.html |   22 +
 .../ir/diagnostics/struct.DiagnosticBuilder.html   |   19 +
 .../ir/diagnostics/struct.DiagnosticContext.html   |   28 +
 .../diagnostics/struct.DiagnosticContextNode.html  |   21 +
 .../tvm/ir/diagnostics/struct.DiagnosticNode.html  |   21 +
 .../ir/diagnostics/struct.DiagnosticRenderer.html  |   23 +
 .../diagnostics/struct.DiagnosticRendererNode.html |   23 +
 docs/api/rust/tvm/ir/expr/fn.as_text.html          |    1 +
 docs/api/rust/tvm/ir/expr/index.html               |    1 +
 docs/api/rust/tvm/ir/expr/sidebar-items.js         |    1 +
 docs/api/rust/tvm/ir/expr/struct.BaseExpr.html     |   22 +
 docs/api/rust/tvm/ir/expr/struct.BaseExprNode.html |   15 +
 docs/api/rust/tvm/ir/expr/struct.GlobalVar.html    |   22 +
 .../api/rust/tvm/ir/expr/struct.GlobalVarNode.html |   15 +
 docs/api/rust/tvm/ir/expr/struct.PrimExpr.html     |   22 +
 docs/api/rust/tvm/ir/expr/struct.PrimExprNode.html |   15 +
 docs/api/rust/tvm/ir/function/index.html           |    1 +
 docs/api/rust/tvm/ir/function/sidebar-items.js     |    1 +
 docs/api/rust/tvm/ir/function/struct.BaseFunc.html |   22 +
 .../rust/tvm/ir/function/struct.BaseFuncNode.html  |   15 +
 docs/api/rust/tvm/ir/function/type.DictAttrs.html  |    1 +
 docs/api/rust/tvm/ir/index.html                    |    1 +
 docs/api/rust/tvm/ir/module/enum.Error.html        |   17 +
 docs/api/rust/tvm/ir/module/index.html             |    1 +
 docs/api/rust/tvm/ir/module/sidebar-items.js       |    1 +
 docs/api/rust/tvm/ir/module/struct.IRModule.html   |   52 +
 .../rust/tvm/ir/module/struct.IRModuleNode.html    |   17 +
 docs/api/rust/tvm/ir/op/index.html                 |    1 +
 docs/api/rust/tvm/ir/op/sidebar-items.js           |    1 +
 docs/api/rust/tvm/ir/op/struct.Op.html             |   22 +
 docs/api/rust/tvm/ir/op/struct.OpNode.html         |   22 +
 docs/api/rust/tvm/ir/relay/attrs/index.html        |    1 +
 docs/api/rust/tvm/ir/relay/attrs/nn/index.html     |    1 +
 .../rust/tvm/ir/relay/attrs/nn/sidebar-items.js    |    1 +
 .../ir/relay/attrs/nn/struct.AvgPool2DAttrs.html   |   22 +
 .../relay/attrs/nn/struct.AvgPool2DAttrsNode.html  |   21 +
 .../ir/relay/attrs/nn/struct.BatchMatmulAttrs.html |   22 +
 .../attrs/nn/struct.BatchMatmulAttrsNode.html      |   16 +
 .../ir/relay/attrs/nn/struct.BatchNormAttrs.html   |   22 +
 .../relay/attrs/nn/struct.BatchNormAttrsNode.html  |   18 +
 .../tvm/ir/relay/attrs/nn/struct.BiasAddAttrs.html |   22 +
 .../ir/relay/attrs/nn/struct.BiasAddAttrsNode.html |   15 +
 .../tvm/ir/relay/attrs/nn/struct.Conv1DAttrs.html  |   22 +
 .../ir/relay/attrs/nn/struct.Conv1DAttrsNode.html  |   24 +
 .../tvm/ir/relay/attrs/nn/struct.Conv2DAttrs.html  |   22 +
 .../ir/relay/attrs/nn/struct.Conv2DAttrsNode.html  |   25 +
 .../tvm/ir/relay/attrs/nn/struct.Conv3DAttrs.html  |   22 +
 .../ir/relay/attrs/nn/struct.Conv3DAttrsNode.html  |   25 +
 .../attrs/nn/struct.Conv3DTransposeAttrs.html      |   22 +
 .../attrs/nn/struct.Conv3DTransposeAttrsNode.html  |   25 +
 .../tvm/ir/relay/attrs/nn/struct.DenseAttrs.html   |   22 +
 .../ir/relay/attrs/nn/struct.DenseAttrsNode.html   |   17 +
 .../tvm/ir/relay/attrs/nn/struct.DropoutAttrs.html |   22 +
 .../ir/relay/attrs/nn/struct.DropoutAttrsNode.html |   15 +
 .../relay/attrs/nn/struct.GlobalPool2DAttrs.html   |   22 +
 .../attrs/nn/struct.GlobalPool2DAttrsNode.html     |   15 +
 .../ir/relay/attrs/nn/struct.LayerNormAttrs.html   |   22 +
 .../relay/attrs/nn/struct.LayerNormAttrsNode.html  |   18 +
 .../ir/relay/attrs/nn/struct.LeakyReluAttrs.html   |   22 +
 .../relay/attrs/nn/struct.LeakyReluAttrsNode.html  |   15 +
 .../tvm/ir/relay/attrs/nn/struct.MatmulAttrs.html  |   22 +
 .../ir/relay/attrs/nn/struct.MatmulAttrsNode.html  |   18 +
 .../ir/relay/attrs/nn/struct.MaxPool2DAttrs.html   |   22 +
 .../relay/attrs/nn/struct.MaxPool2DAttrsNode.html  |   20 +
 .../tvm/ir/relay/attrs/nn/struct.PadAttrs.html     |   22 +
 .../tvm/ir/relay/attrs/nn/struct.PadAttrsNode.html |   16 +
 .../tvm/ir/relay/attrs/nn/struct.SoftmaxAttrs.html |   22 +
 .../ir/relay/attrs/nn/struct.SoftmaxAttrsNode.html |   15 +
 .../ir/relay/attrs/nn/struct.UpSamplingAttrs.html  |   22 +
 .../relay/attrs/nn/struct.UpSamplingAttrsNode.html |   19 +
 docs/api/rust/tvm/ir/relay/attrs/reduce/index.html |    1 +
 .../tvm/ir/relay/attrs/reduce/sidebar-items.js     |    1 +
 .../ir/relay/attrs/reduce/struct.ReduceAttrs.html  |   22 +
 .../relay/attrs/reduce/struct.ReduceAttrsNode.html |   17 +
 .../relay/attrs/reduce/struct.VarianceAttrs.html   |   22 +
 .../attrs/reduce/struct.VarianceAttrsNode.html     |   18 +
 docs/api/rust/tvm/ir/relay/attrs/sidebar-items.js  |    1 +
 .../rust/tvm/ir/relay/attrs/transform/index.html   |    1 +
 .../tvm/ir/relay/attrs/transform/sidebar-items.js  |    1 +
 .../ir/relay/attrs/transform/struct.CastAttrs.html |   22 +
 .../attrs/transform/struct.CastAttrsNode.html      |   15 +
 .../ir/relay/attrs/transform/struct.ClipAttrs.html |   22 +
 .../attrs/transform/struct.ClipAttrsNode.html      |   16 +
 .../attrs/transform/struct.ConcatenateAttrs.html   |   22 +
 .../transform/struct.ConcatenateAttrsNode.html     |   15 +
 .../attrs/transform/struct.ExpandDimsAttrs.html    |   22 +
 .../transform/struct.ExpandDimsAttrsNode.html      |   16 +
 .../relay/attrs/transform/struct.ReshapeAttrs.html |   22 +
 .../attrs/transform/struct.ReshapeAttrsNode.html   |   16 +
 .../relay/attrs/transform/struct.SplitAttrs.html   |   22 +
 .../attrs/transform/struct.SplitAttrsNode.html     |   16 +
 .../relay/attrs/transform/struct.SqueezeAttrs.html |   22 +
 .../attrs/transform/struct.SqueezeAttrsNode.html   |   15 +
 .../relay/attrs/transform/struct.StackAttrs.html   |   22 +
 .../attrs/transform/struct.StackAttrsNode.html     |   15 +
 .../attrs/transform/struct.StridedSliceAttrs.html  |   22 +
 .../transform/struct.StridedSliceAttrsNode.html    |   18 +
 .../ir/relay/attrs/transform/struct.TakeAttrs.html |   22 +
 .../attrs/transform/struct.TakeAttrsNode.html      |   17 +
 .../attrs/transform/struct.TransposeAttrs.html     |   22 +
 .../attrs/transform/struct.TransposeAttrsNode.html |   15 +
 docs/api/rust/tvm/ir/relay/index.html              |    1 +
 docs/api/rust/tvm/ir/relay/sidebar-items.js        |    1 +
 docs/api/rust/tvm/ir/relay/struct.Call.html        |   28 +
 docs/api/rust/tvm/ir/relay/struct.CallNode.html    |   19 +
 docs/api/rust/tvm/ir/relay/struct.Clause.html      |   22 +
 docs/api/rust/tvm/ir/relay/struct.ClauseNode.html  |   16 +
 docs/api/rust/tvm/ir/relay/struct.Constant.html    |   22 +
 .../api/rust/tvm/ir/relay/struct.ConstantNode.html |   15 +
 docs/api/rust/tvm/ir/relay/struct.Constructor.html |   27 +
 .../rust/tvm/ir/relay/struct.ConstructorNode.html  |   17 +
 docs/api/rust/tvm/ir/relay/struct.DataType.html    |   28 +
 docs/api/rust/tvm/ir/relay/struct.Expr.html        |   22 +
 docs/api/rust/tvm/ir/relay/struct.ExprNode.html    |   16 +
 docs/api/rust/tvm/ir/relay/struct.Function.html    |   29 +
 .../api/rust/tvm/ir/relay/struct.FunctionNode.html |   18 +
 docs/api/rust/tvm/ir/relay/struct.Id.html          |   22 +
 docs/api/rust/tvm/ir/relay/struct.IdNode.html      |   15 +
 docs/api/rust/tvm/ir/relay/struct.If.html          |   22 +
 docs/api/rust/tvm/ir/relay/struct.IfNode.html      |   17 +
 docs/api/rust/tvm/ir/relay/struct.Let.html         |   22 +
 docs/api/rust/tvm/ir/relay/struct.LetNode.html     |   17 +
 docs/api/rust/tvm/ir/relay/struct.Match.html       |   22 +
 docs/api/rust/tvm/ir/relay/struct.MatchNode.html   |   17 +
 docs/api/rust/tvm/ir/relay/struct.Pattern.html     |   22 +
 .../tvm/ir/relay/struct.PatternConstructor.html    |   26 +
 .../ir/relay/struct.PatternConstructorNode.html    |   16 +
 docs/api/rust/tvm/ir/relay/struct.PatternNode.html |   15 +
 .../api/rust/tvm/ir/relay/struct.PatternTuple.html |   22 +
 .../rust/tvm/ir/relay/struct.PatternTupleNode.html |   15 +
 docs/api/rust/tvm/ir/relay/struct.PatternVar.html  |   22 +
 .../rust/tvm/ir/relay/struct.PatternVarNode.html   |   15 +
 .../rust/tvm/ir/relay/struct.PatternWildcard.html  |   22 +
 .../tvm/ir/relay/struct.PatternWildcardNode.html   |   14 +
 docs/api/rust/tvm/ir/relay/struct.RefCreate.html   |   22 +
 .../rust/tvm/ir/relay/struct.RefCreateNode.html    |   15 +
 docs/api/rust/tvm/ir/relay/struct.RefRead.html     |   22 +
 docs/api/rust/tvm/ir/relay/struct.RefReadNode.html |   15 +
 docs/api/rust/tvm/ir/relay/struct.RefWrite.html    |   22 +
 .../api/rust/tvm/ir/relay/struct.RefWriteNode.html |   16 +
 docs/api/rust/tvm/ir/relay/struct.Tuple.html       |   22 +
 .../api/rust/tvm/ir/relay/struct.TupleGetItem.html |   22 +
 .../rust/tvm/ir/relay/struct.TupleGetItemNode.html |   16 +
 docs/api/rust/tvm/ir/relay/struct.TupleNode.html   |   15 +
 docs/api/rust/tvm/ir/relay/struct.Var.html         |   22 +
 docs/api/rust/tvm/ir/relay/struct.VarNode.html     |   16 +
 docs/api/rust/tvm/ir/sidebar-items.js              |    1 +
 docs/api/rust/tvm/ir/source_map/index.html         |    1 +
 docs/api/rust/tvm/ir/source_map/sidebar-items.js   |    1 +
 docs/api/rust/tvm/ir/source_map/struct.Source.html |   22 +
 .../rust/tvm/ir/source_map/struct.SourceMap.html   |   22 +
 .../tvm/ir/source_map/struct.SourceMapNode.html    |   18 +
 .../rust/tvm/ir/source_map/struct.SourceNode.html  |   20 +
 docs/api/rust/tvm/ir/span/index.html               |    1 +
 docs/api/rust/tvm/ir/span/sidebar-items.js         |    1 +
 docs/api/rust/tvm/ir/span/struct.SourceName.html   |   22 +
 .../rust/tvm/ir/span/struct.SourceNameNode.html    |   16 +
 docs/api/rust/tvm/ir/span/struct.Span.html         |   28 +
 docs/api/rust/tvm/ir/span/struct.SpanNode.html     |   25 +
 docs/api/rust/tvm/ir/tir/index.html                |    1 +
 docs/api/rust/tvm/ir/tir/sidebar-items.js          |    1 +
 docs/api/rust/tvm/ir/tir/struct.Add.html           |   22 +
 docs/api/rust/tvm/ir/tir/struct.AddNode.html       |   16 +
 docs/api/rust/tvm/ir/tir/struct.And.html           |   22 +
 docs/api/rust/tvm/ir/tir/struct.AndNode.html       |   16 +
 docs/api/rust/tvm/ir/tir/struct.Cast.html          |   22 +
 docs/api/rust/tvm/ir/tir/struct.CastNode.html      |   15 +
 docs/api/rust/tvm/ir/tir/struct.Div.html           |   22 +
 docs/api/rust/tvm/ir/tir/struct.DivNode.html       |   16 +
 docs/api/rust/tvm/ir/tir/struct.Eq.html            |   22 +
 docs/api/rust/tvm/ir/tir/struct.EqNode.html        |   16 +
 docs/api/rust/tvm/ir/tir/struct.FloorDiv.html      |   22 +
 docs/api/rust/tvm/ir/tir/struct.FloorDivNode.html  |   16 +
 docs/api/rust/tvm/ir/tir/struct.FloorMod.html      |   22 +
 docs/api/rust/tvm/ir/tir/struct.FloorModNode.html  |   16 +
 docs/api/rust/tvm/ir/tir/struct.Ge.html            |   22 +
 docs/api/rust/tvm/ir/tir/struct.GeNode.html        |   16 +
 docs/api/rust/tvm/ir/tir/struct.Gt.html            |   22 +
 docs/api/rust/tvm/ir/tir/struct.GtNode.html        |   16 +
 docs/api/rust/tvm/ir/tir/struct.IntImm.html        |   22 +
 docs/api/rust/tvm/ir/tir/struct.IntImmNode.html    |   15 +
 docs/api/rust/tvm/ir/tir/struct.Le.html            |   22 +
 docs/api/rust/tvm/ir/tir/struct.LeNode.html        |   16 +
 docs/api/rust/tvm/ir/tir/struct.Let.html           |   22 +
 docs/api/rust/tvm/ir/tir/struct.LetNode.html       |   17 +
 docs/api/rust/tvm/ir/tir/struct.Lt.html            |   22 +
 docs/api/rust/tvm/ir/tir/struct.LtNode.html        |   16 +
 docs/api/rust/tvm/ir/tir/struct.Max.html           |   22 +
 docs/api/rust/tvm/ir/tir/struct.MaxNode.html       |   16 +
 docs/api/rust/tvm/ir/tir/struct.Min.html           |   22 +
 docs/api/rust/tvm/ir/tir/struct.MinNode.html       |   16 +
 docs/api/rust/tvm/ir/tir/struct.Mod.html           |   22 +
 docs/api/rust/tvm/ir/tir/struct.ModNode.html       |   16 +
 docs/api/rust/tvm/ir/tir/struct.Mul.html           |   22 +
 docs/api/rust/tvm/ir/tir/struct.MulNode.html       |   16 +
 docs/api/rust/tvm/ir/tir/struct.Ne.html            |   22 +
 docs/api/rust/tvm/ir/tir/struct.NeNode.html        |   16 +
 docs/api/rust/tvm/ir/tir/struct.Not.html           |   22 +
 docs/api/rust/tvm/ir/tir/struct.NotNode.html       |   15 +
 docs/api/rust/tvm/ir/tir/struct.Or.html            |   22 +
 docs/api/rust/tvm/ir/tir/struct.OrNode.html        |   16 +
 docs/api/rust/tvm/ir/tir/struct.Ramp.html          |   27 +
 docs/api/rust/tvm/ir/tir/struct.RampNode.html      |   17 +
 docs/api/rust/tvm/ir/tir/struct.Select.html        |   27 +
 docs/api/rust/tvm/ir/tir/struct.SelectNode.html    |   17 +
 docs/api/rust/tvm/ir/tir/struct.Sub.html           |   22 +
 docs/api/rust/tvm/ir/tir/struct.SubNode.html       |   16 +
 docs/api/rust/tvm/ir/tir/struct.Var.html           |   22 +
 docs/api/rust/tvm/ir/tir/struct.VarNode.html       |   15 +
 docs/api/rust/tvm/ir/ty/enum.TypeKind.html         |   21 +
 docs/api/rust/tvm/ir/ty/index.html                 |    1 +
 docs/api/rust/tvm/ir/ty/sidebar-items.js           |    1 +
 docs/api/rust/tvm/ir/ty/struct.BaseTensorType.html |   22 +
 .../rust/tvm/ir/ty/struct.BaseTensorTypeNode.html  |   14 +
 docs/api/rust/tvm/ir/ty/struct.FuncType.html       |   22 +
 docs/api/rust/tvm/ir/ty/struct.FuncTypeNode.html   |   24 +
 docs/api/rust/tvm/ir/ty/struct.GlobalTypeVar.html  |   23 +
 .../rust/tvm/ir/ty/struct.GlobalTypeVarNode.html   |   17 +
 docs/api/rust/tvm/ir/ty/struct.IncompleteType.html |   22 +
 .../rust/tvm/ir/ty/struct.IncompleteTypeNode.html  |   15 +
 docs/api/rust/tvm/ir/ty/struct.PointerType.html    |   22 +
 .../api/rust/tvm/ir/ty/struct.PointerTypeNode.html |   16 +
 docs/api/rust/tvm/ir/ty/struct.PrimType.html       |   22 +
 docs/api/rust/tvm/ir/ty/struct.PrimTypeNode.html   |   16 +
 docs/api/rust/tvm/ir/ty/struct.RefType.html        |   22 +
 .../rust/tvm/ir/ty/struct.RelayRefTypeNode.html    |   15 +
 docs/api/rust/tvm/ir/ty/struct.TensorType.html     |   22 +
 docs/api/rust/tvm/ir/ty/struct.TensorTypeNode.html |   16 +
 docs/api/rust/tvm/ir/ty/struct.TupleType.html      |   22 +
 docs/api/rust/tvm/ir/ty/struct.TupleTypeNode.html  |   15 +
 docs/api/rust/tvm/ir/ty/struct.Type.html           |   22 +
 docs/api/rust/tvm/ir/ty/struct.TypeConstraint.html |   22 +
 .../rust/tvm/ir/ty/struct.TypeConstraintNode.html  |   14 +
 docs/api/rust/tvm/ir/ty/struct.TypeData.html       |   29 +
 docs/api/rust/tvm/ir/ty/struct.TypeDataNode.html   |   23 +
 docs/api/rust/tvm/ir/ty/struct.TypeNode.html       |   15 +
 docs/api/rust/tvm/ir/ty/struct.TypeVar.html        |   22 +
 docs/api/rust/tvm/ir/ty/struct.TypeVarNode.html    |   22 +
 docs/api/rust/tvm/macro.export!.html               |   11 +
 docs/api/rust/tvm/macro.export.html                |    3 +
 docs/api/rust/tvm/macro.export_mod!.html           |   11 +
 docs/api/rust/tvm/macro.export_mod.html            |    3 +
 docs/api/rust/tvm/macro.export_pass!.html          |   11 +
 docs/api/rust/tvm/macro.export_pass.html           |    3 +
 docs/api/rust/tvm/macro.initialize!.html           |   11 +
 docs/api/rust/tvm/macro.initialize.html            |    8 +
 docs/api/rust/tvm/module/index.html                |    3 +
 docs/api/rust/tvm/module/sidebar-items.js          |    1 +
 docs/api/rust/tvm/module/struct.Module.html        |   35 +
 docs/api/rust/tvm/module/struct.ModuleNode.html    |   14 +
 docs/api/rust/tvm/ndarray/index.html               |   17 +
 docs/api/rust/tvm/ndarray/sidebar-items.js         |    1 +
 docs/api/rust/tvm/ndarray/struct.NDArray.html      |   72 +
 .../rust/tvm/ndarray/struct.NDArrayContainer.html  |   19 +
 docs/api/rust/tvm/ndarray/trait.Num32.html         |    4 +
 docs/api/rust/tvm/python/fn.import.html            |    1 +
 docs/api/rust/tvm/python/fn.load.html              |    6 +
 docs/api/rust/tvm/python/index.html                |    1 +
 docs/api/rust/tvm/python/sidebar-items.js          |    1 +
 docs/api/rust/tvm/runtime/array/index.html         |    1 +
 docs/api/rust/tvm/runtime/array/sidebar-items.js   |    1 +
 docs/api/rust/tvm/runtime/array/struct.Array.html  |   39 +
 .../rust/tvm/runtime/array/struct.IntoIter.html    |  343 +++
 .../rust/tvm/runtime/device/enum.DeviceType.html   |   37 +
 docs/api/rust/tvm/runtime/device/index.html        |    2 +
 docs/api/rust/tvm/runtime/device/sidebar-items.js  |    1 +
 .../api/rust/tvm/runtime/device/struct.Device.html |   24 +
 .../device/struct.UnsupportedDeviceError.html      |   14 +
 docs/api/rust/tvm/runtime/enum.ArgValue.html       |   54 +
 docs/api/rust/tvm/runtime/enum.ByteArray.html      |   28 +
 docs/api/rust/tvm/runtime/enum.DeviceType.html     |   37 +
 docs/api/rust/tvm/runtime/enum.Error.html          |   27 +
 docs/api/rust/tvm/runtime/enum.NDArrayError.html   |   22 +
 docs/api/rust/tvm/runtime/enum.RetValue.html       |   81 +
 docs/api/rust/tvm/runtime/errors/enum.Error.html   |   27 +
 .../rust/tvm/runtime/errors/enum.NDArrayError.html |   22 +
 docs/api/rust/tvm/runtime/errors/index.html        |    1 +
 docs/api/rust/tvm/runtime/errors/sidebar-items.js  |    1 +
 .../errors/struct.FunctionNotFoundError.html       |   14 +
 .../runtime/errors/struct.TypeMismatchError.html   |   17 +
 docs/api/rust/tvm/runtime/fn.debug_print.html      |    1 +
 docs/api/rust/tvm/runtime/fn.get_last_error.html   |    2 +
 docs/api/rust/tvm/runtime/fn.version.html          |    2 +
 .../rust/tvm/runtime/function/enum.ArgValue.html   |   54 +
 .../rust/tvm/runtime/function/enum.RetValue.html   |   81 +
 .../ffi/constant.DLDataTypeCode_kDLBfloat.html     |    2 +
 .../ffi/constant.DLDataTypeCode_kDLComplex.html    |    3 +
 .../ffi/constant.DLDataTypeCode_kDLFloat.html      |    2 +
 .../ffi/constant.DLDataTypeCode_kDLInt.html        |    2 +
 .../constant.DLDataTypeCode_kDLOpaqueHandle.html   |    3 +
 .../ffi/constant.DLDataTypeCode_kDLUInt.html       |    2 +
 .../function/ffi/constant.DLDeviceType_kDLCPU.html |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDA.html         |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDAHost.html     |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDAManaged.html  |    2 +
 .../ffi/constant.DLDeviceType_kDLExtDev.html       |    4 +
 .../ffi/constant.DLDeviceType_kDLHexagon.html      |    2 +
 .../ffi/constant.DLDeviceType_kDLMetal.html        |    2 +
 .../ffi/constant.DLDeviceType_kDLOneAPI.html       |    4 +
 .../ffi/constant.DLDeviceType_kDLOpenCL.html       |    2 +
 .../ffi/constant.DLDeviceType_kDLROCM.html         |    2 +
 .../ffi/constant.DLDeviceType_kDLROCMHost.html     |    2 +
 .../function/ffi/constant.DLDeviceType_kDLVPI.html |    2 +
 .../ffi/constant.DLDeviceType_kDLVulkan.html       |    2 +
 .../ffi/constant.DLDeviceType_kDLWebGPU.html       |    2 +
 .../function/ffi/constant.DLPACK_ABI_VERSION.html  |    1 +
 .../function/ffi/constant.DLPACK_VERSION.html      |    1 +
 .../runtime/function/ffi/constant.INT16_MAX.html   |    1 +
 .../runtime/function/ffi/constant.INT16_MIN.html   |    1 +
 .../runtime/function/ffi/constant.INT32_MAX.html   |    1 +
 .../runtime/function/ffi/constant.INT32_MIN.html   |    1 +
 .../runtime/function/ffi/constant.INT8_MAX.html    |    1 +
 .../runtime/function/ffi/constant.INT8_MIN.html    |    1 +
 .../runtime/function/ffi/constant.INTPTR_MAX.html  |    1 +
 .../runtime/function/ffi/constant.INTPTR_MIN.html  |    1 +
 .../function/ffi/constant.INT_FAST16_MAX.html      |    1 +
 .../function/ffi/constant.INT_FAST16_MIN.html      |    1 +
 .../function/ffi/constant.INT_FAST32_MAX.html      |    1 +
 .../function/ffi/constant.INT_FAST32_MIN.html      |    1 +
 .../function/ffi/constant.INT_FAST8_MAX.html       |    1 +
 .../function/ffi/constant.INT_FAST8_MIN.html       |    1 +
 .../function/ffi/constant.INT_LEAST16_MAX.html     |    1 +
 .../function/ffi/constant.INT_LEAST16_MIN.html     |    1 +
 .../function/ffi/constant.INT_LEAST32_MAX.html     |    1 +
 .../function/ffi/constant.INT_LEAST32_MIN.html     |    1 +
 .../function/ffi/constant.INT_LEAST8_MAX.html      |    1 +
 .../function/ffi/constant.INT_LEAST8_MIN.html      |    1 +
 .../runtime/function/ffi/constant.PTRDIFF_MAX.html |    1 +
 .../runtime/function/ffi/constant.PTRDIFF_MIN.html |    1 +
 .../function/ffi/constant.SIG_ATOMIC_MAX.html      |    1 +
 .../function/ffi/constant.SIG_ATOMIC_MIN.html      |    1 +
 .../runtime/function/ffi/constant.SIZE_MAX.html    |    1 +
 .../ffi/constant.TVMArgTypeCode_kDLDevice.html     |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMArgFloat.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMArgInt.html    |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMBytes.html     |    1 +
 ...constant.TVMArgTypeCode_kTVMDLTensorHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMDataType.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMExtBegin.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMExtEnd.html    |    1 +
 .../constant.TVMArgTypeCode_kTVMExtReserveEnd.html |    1 +
 .../constant.TVMArgTypeCode_kTVMModuleHandle.html  |    1 +
 .../constant.TVMArgTypeCode_kTVMNDArrayHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNNVMFirst.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNNVMLast.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNullptr.html   |    1 +
 .../constant.TVMArgTypeCode_kTVMObjectHandle.html  |    1 +
 ...tant.TVMArgTypeCode_kTVMObjectRValueRefArg.html |    1 +
 .../constant.TVMArgTypeCode_kTVMOpaqueHandle.html  |    1 +
 ...nstant.TVMArgTypeCode_kTVMPackedFuncHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMStr.html       |    1 +
 ...tant.TVMDeviceExtType_TVMDeviceExtType_End.html |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLAOCL.html     |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLMicroDev.html |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLSDAccel.html  |    1 +
 .../ffi/constant.TVMDeviceExtType_kOpenGL.html     |    1 +
 .../runtime/function/ffi/constant.TVM_VERSION.html |    1 +
 .../runtime/function/ffi/constant.UINT16_MAX.html  |    1 +
 .../runtime/function/ffi/constant.UINT32_MAX.html  |    1 +
 .../runtime/function/ffi/constant.UINT8_MAX.html   |    1 +
 .../runtime/function/ffi/constant.UINTPTR_MAX.html |    1 +
 .../function/ffi/constant.UINT_FAST16_MAX.html     |    1 +
 .../function/ffi/constant.UINT_FAST32_MAX.html     |    1 +
 .../function/ffi/constant.UINT_FAST8_MAX.html      |    1 +
 .../function/ffi/constant.UINT_LEAST16_MAX.html    |    1 +
 .../function/ffi/constant.UINT_LEAST32_MAX.html    |    1 +
 .../function/ffi/constant.UINT_LEAST8_MAX.html     |    1 +
 .../runtime/function/ffi/constant.WINT_MAX.html    |    1 +
 .../runtime/function/ffi/constant.WINT_MIN.html    |    1 +
 .../function/ffi/constant._ATFILE_SOURCE.html      |    1 +
 .../function/ffi/constant._BITS_STDINT_INTN_H.html |    1 +
 .../ffi/constant._BITS_STDINT_UINTN_H.html         |    1 +
 .../function/ffi/constant._BITS_TIME64_H.html      |    1 +
 .../function/ffi/constant._BITS_TYPESIZES_H.html   |    1 +
 .../function/ffi/constant._BITS_TYPES_H.html       |    1 +
 .../function/ffi/constant._BITS_WCHAR_H.html       |    1 +
 .../function/ffi/constant._DEFAULT_SOURCE.html     |    1 +
 .../runtime/function/ffi/constant._FEATURES_H.html |    1 +
 .../function/ffi/constant._POSIX_C_SOURCE.html     |    1 +
 .../function/ffi/constant._POSIX_SOURCE.html       |    1 +
 .../function/ffi/constant._STDC_PREDEF_H.html      |    1 +
 .../runtime/function/ffi/constant._STDINT_H.html   |    1 +
 .../function/ffi/constant._SYS_CDEFS_H.html        |    1 +
 .../function/ffi/constant.__FD_SETSIZE.html        |    1 +
 .../function/ffi/constant.__GLIBC_MINOR__.html     |    1 +
 .../ffi/constant.__GLIBC_USE_DEPRECATED_GETS.html  |    1 +
 .../ffi/constant.__GLIBC_USE_DEPRECATED_SCANF.html |    1 +
 .../constant.__GLIBC_USE_IEC_60559_BFP_EXT.html    |    1 +
 ...constant.__GLIBC_USE_IEC_60559_BFP_EXT_C2X.html |    1 +
 .../ffi/constant.__GLIBC_USE_IEC_60559_EXT.html    |    1 +
 .../constant.__GLIBC_USE_IEC_60559_FUNCS_EXT.html  |    1 +
 ...nstant.__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X.html |    1 +
 .../constant.__GLIBC_USE_IEC_60559_TYPES_EXT.html  |    1 +
 .../function/ffi/constant.__GLIBC_USE_ISOC2X.html  |    1 +
 .../ffi/constant.__GLIBC_USE_LIB_EXT2.html         |    1 +
 .../runtime/function/ffi/constant.__GLIBC__.html   |    1 +
 .../function/ffi/constant.__GNU_LIBRARY__.html     |    1 +
 .../ffi/constant.__HAVE_GENERIC_SELECTION.html     |    1 +
 .../ffi/constant.__INO_T_MATCHES_INO64_T.html      |    1 +
 ...ant.__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64.html |    1 +
 ...nstant.__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI.html |    1 +
 .../ffi/constant.__OFF_T_MATCHES_OFF64_T.html      |    1 +
 .../ffi/constant.__RLIM_T_MATCHES_RLIM64_T.html    |    1 +
 .../ffi/constant.__STATFS_MATCHES_STATFS64.html    |    1 +
 .../ffi/constant.__STDC_IEC_559_COMPLEX__.html     |    1 +
 .../function/ffi/constant.__STDC_IEC_559__.html    |    1 +
 .../ffi/constant.__STDC_IEC_60559_BFP__.html       |    1 +
 .../ffi/constant.__STDC_IEC_60559_COMPLEX__.html   |    1 +
 .../function/ffi/constant.__STDC_ISO_10646__.html  |    1 +
 .../function/ffi/constant.__SYSCALL_WORDSIZE.html  |    1 +
 .../runtime/function/ffi/constant.__TIMESIZE.html  |    1 +
 .../function/ffi/constant.__USE_ATFILE.html        |    1 +
 .../function/ffi/constant.__USE_FORTIFY_LEVEL.html |    1 +
 .../function/ffi/constant.__USE_ISOC11.html        |    1 +
 .../function/ffi/constant.__USE_ISOC95.html        |    1 +
 .../function/ffi/constant.__USE_ISOC99.html        |    1 +
 .../runtime/function/ffi/constant.__USE_MISC.html  |    1 +
 .../runtime/function/ffi/constant.__USE_POSIX.html |    1 +
 .../function/ffi/constant.__USE_POSIX199309.html   |    1 +
 .../function/ffi/constant.__USE_POSIX199506.html   |    1 +
 .../function/ffi/constant.__USE_POSIX2.html        |    1 +
 .../ffi/constant.__USE_POSIX_IMPLICITLY.html       |    1 +
 .../function/ffi/constant.__USE_XOPEN2K.html       |    1 +
 .../function/ffi/constant.__USE_XOPEN2K8.html      |    1 +
 .../runtime/function/ffi/constant.__WORDSIZE.html  |    1 +
 .../ffi/constant.__WORDSIZE_TIME64_COMPAT32.html   |    1 +
 .../constant.__glibc_c99_flexarr_available.html    |    1 +
 .../function/ffi/fn.TVMAPISetLastError.html        |    4 +
 .../tvm/runtime/function/ffi/fn.TVMArrayAlloc.html |   21 +
 .../function/ffi/fn.TVMArrayCopyFromBytes.html     |   10 +
 .../function/ffi/fn.TVMArrayCopyFromTo.html        |   10 +
 .../function/ffi/fn.TVMArrayCopyToBytes.html       |   10 +
 .../tvm/runtime/function/ffi/fn.TVMArrayFree.html  |    4 +
 .../function/ffi/fn.TVMArrayFromDLPack.html        |    9 +
 .../runtime/function/ffi/fn.TVMArrayToDLPack.html  |    9 +
 .../function/ffi/fn.TVMBackendAllocWorkspace.html  |   17 +
 .../function/ffi/fn.TVMBackendFreeWorkspace.html   |   11 +
 .../function/ffi/fn.TVMBackendGetFuncFromEnv.html  |   12 +
 .../function/ffi/fn.TVMBackendParallelBarrier.html |    8 +
 .../function/ffi/fn.TVMBackendParallelLaunch.html  |   11 +
 .../function/ffi/fn.TVMBackendRegisterEnvCAPI.html |   11 +
 .../ffi/fn.TVMBackendRegisterSystemLibSymbol.html  |    8 +
 .../runtime/function/ffi/fn.TVMBackendRunOnce.html |   14 +
 .../runtime/function/ffi/fn.TVMByteArrayFree.html  |    6 +
 .../runtime/function/ffi/fn.TVMCFuncSetReturn.html |   13 +
 .../runtime/function/ffi/fn.TVMCbArgToReturn.html  |   10 +
 .../ffi/fn.TVMDLManagedTensorCallDeleter.html      |    5 +
 .../function/ffi/fn.TVMDeviceAllocDataSpace.html   |   15 +
 .../ffi/fn.TVMDeviceAllocDataSpaceWithScope.html   |   19 +
 .../function/ffi/fn.TVMDeviceCopyDataFromTo.html   |   12 +
 .../function/ffi/fn.TVMDeviceFreeDataSpace.html    |    8 +
 .../tvm/runtime/function/ffi/fn.TVMFuncCall.html   |   22 +
 .../function/ffi/fn.TVMFuncCreateFromCFunc.html    |   13 +
 .../tvm/runtime/function/ffi/fn.TVMFuncFree.html   |    4 +
 .../runtime/function/ffi/fn.TVMFuncGetGlobal.html  |    9 +
 .../function/ffi/fn.TVMFuncListGlobalNames.html    |    8 +
 .../function/ffi/fn.TVMFuncRegisterGlobal.html     |   10 +
 .../function/ffi/fn.TVMFuncRemoveGlobal.html       |    3 +
 .../runtime/function/ffi/fn.TVMGetLastError.html   |    7 +
 .../tvm/runtime/function/ffi/fn.TVMModFree.html    |    8 +
 .../runtime/function/ffi/fn.TVMModGetFunction.html |   12 +
 .../tvm/runtime/function/ffi/fn.TVMModImport.html  |    9 +
 .../function/ffi/fn.TVMModLoadFromFile.html        |   12 +
 .../function/ffi/fn.TVMObjectDerivedFrom.html      |   10 +
 .../tvm/runtime/function/ffi/fn.TVMObjectFree.html |    6 +
 .../function/ffi/fn.TVMObjectGetTypeIndex.html     |    8 +
 .../runtime/function/ffi/fn.TVMObjectRetain.html   |    5 +
 .../function/ffi/fn.TVMObjectTypeIndex2Key.html    |    8 +
 .../function/ffi/fn.TVMObjectTypeKey2Index.html    |    8 +
 .../tvm/runtime/function/ffi/fn.TVMSetStream.html  |   13 +
 .../runtime/function/ffi/fn.TVMStreamCreate.html   |   10 +
 .../tvm/runtime/function/ffi/fn.TVMStreamFree.html |   10 +
 .../ffi/fn.TVMStreamStreamSynchronize.html         |   12 +
 .../runtime/function/ffi/fn.TVMSynchronize.html    |   10 +
 docs/api/rust/tvm/runtime/function/ffi/index.html  |  116 +
 .../rust/tvm/runtime/function/ffi/sidebar-items.js |    1 +
 .../runtime/function/ffi/struct.DLDataType.html    |   41 +
 .../tvm/runtime/function/ffi/struct.DLDevice.html  |   30 +
 .../function/ffi/struct.DLManagedTensor.html       |   30 +
 .../tvm/runtime/function/ffi/struct.DLTensor.html  |   59 +
 .../runtime/function/ffi/struct.TVMByteArray.html  |   23 +
 .../function/ffi/struct.TVMParallelGroupEnv.html   |   20 +
 .../tvm/runtime/function/ffi/struct.__fsid_t.html  |   16 +
 .../function/ffi/type.BackendPackedCFunc.html      |    1 +
 .../runtime/function/ffi/type.DLDataTypeCode.html  |    2 +
 .../runtime/function/ffi/type.DLDeviceType.html    |    1 +
 .../function/ffi/type.FTVMParallelLambda.html      |    5 +
 .../runtime/function/ffi/type.TVMArgTypeCode.html  |   13 +
 .../runtime/function/ffi/type.TVMArrayHandle.html  |    2 +
 .../function/ffi/type.TVMBackendPackedCFunc.html   |    9 +
 .../function/ffi/type.TVMDeviceExtType.html        |    1 +
 .../ffi/type.TVMExtensionFuncDeclarer.html         |    6 +
 .../function/ffi/type.TVMFunctionHandle.html       |    2 +
 .../runtime/function/ffi/type.TVMModuleHandle.html |    2 +
 .../runtime/function/ffi/type.TVMObjectHandle.html |    2 +
 .../runtime/function/ffi/type.TVMPackedCFunc.html  |    9 +
 .../function/ffi/type.TVMPackedCFuncFinalizer.html |    3 +
 .../function/ffi/type.TVMRetValueHandle.html       |    2 +
 .../runtime/function/ffi/type.TVMStreamHandle.html |    3 +
 .../runtime/function/ffi/type.__blkcnt64_t.html    |    1 +
 .../tvm/runtime/function/ffi/type.__blkcnt_t.html  |    1 +
 .../tvm/runtime/function/ffi/type.__blksize_t.html |    1 +
 .../tvm/runtime/function/ffi/type.__caddr_t.html   |    1 +
 .../tvm/runtime/function/ffi/type.__clock_t.html   |    1 +
 .../tvm/runtime/function/ffi/type.__clockid_t.html |    1 +
 .../tvm/runtime/function/ffi/type.__daddr_t.html   |    1 +
 .../tvm/runtime/function/ffi/type.__dev_t.html     |    1 +
 .../runtime/function/ffi/type.__fsblkcnt64_t.html  |    1 +
 .../runtime/function/ffi/type.__fsblkcnt_t.html    |    1 +
 .../runtime/function/ffi/type.__fsfilcnt64_t.html  |    1 +
 .../runtime/function/ffi/type.__fsfilcnt_t.html    |    1 +
 .../tvm/runtime/function/ffi/type.__fsword_t.html  |    1 +
 .../tvm/runtime/function/ffi/type.__gid_t.html     |    1 +
 .../rust/tvm/runtime/function/ffi/type.__id_t.html |    1 +
 .../tvm/runtime/function/ffi/type.__ino64_t.html   |    1 +
 .../tvm/runtime/function/ffi/type.__ino_t.html     |    1 +
 .../tvm/runtime/function/ffi/type.__int16_t.html   |    1 +
 .../tvm/runtime/function/ffi/type.__int32_t.html   |    1 +
 .../tvm/runtime/function/ffi/type.__int64_t.html   |    1 +
 .../tvm/runtime/function/ffi/type.__int8_t.html    |    1 +
 .../runtime/function/ffi/type.__int_least16_t.html |    1 +
 .../runtime/function/ffi/type.__int_least32_t.html |    1 +
 .../runtime/function/ffi/type.__int_least64_t.html |    1 +
 .../runtime/function/ffi/type.__int_least8_t.html  |    1 +
 .../tvm/runtime/function/ffi/type.__intmax_t.html  |    1 +
 .../tvm/runtime/function/ffi/type.__intptr_t.html  |    1 +
 .../tvm/runtime/function/ffi/type.__key_t.html     |    1 +
 .../tvm/runtime/function/ffi/type.__loff_t.html    |    1 +
 .../tvm/runtime/function/ffi/type.__mode_t.html    |    1 +
 .../tvm/runtime/function/ffi/type.__nlink_t.html   |    1 +
 .../tvm/runtime/function/ffi/type.__off64_t.html   |    1 +
 .../tvm/runtime/function/ffi/type.__off_t.html     |    1 +
 .../tvm/runtime/function/ffi/type.__pid_t.html     |    1 +
 .../tvm/runtime/function/ffi/type.__quad_t.html    |    1 +
 .../tvm/runtime/function/ffi/type.__rlim64_t.html  |    1 +
 .../tvm/runtime/function/ffi/type.__rlim_t.html    |    1 +
 .../runtime/function/ffi/type.__sig_atomic_t.html  |    1 +
 .../tvm/runtime/function/ffi/type.__socklen_t.html |    1 +
 .../tvm/runtime/function/ffi/type.__ssize_t.html   |    1 +
 .../runtime/function/ffi/type.__suseconds64_t.html |    1 +
 .../runtime/function/ffi/type.__suseconds_t.html   |    1 +
 .../function/ffi/type.__syscall_slong_t.html       |    1 +
 .../function/ffi/type.__syscall_ulong_t.html       |    1 +
 .../tvm/runtime/function/ffi/type.__time_t.html    |    1 +
 .../tvm/runtime/function/ffi/type.__timer_t.html   |    1 +
 .../tvm/runtime/function/ffi/type.__u_char.html    |    1 +
 .../tvm/runtime/function/ffi/type.__u_int.html     |    1 +
 .../tvm/runtime/function/ffi/type.__u_long.html    |    1 +
 .../tvm/runtime/function/ffi/type.__u_quad_t.html  |    1 +
 .../tvm/runtime/function/ffi/type.__u_short.html   |    1 +
 .../tvm/runtime/function/ffi/type.__uid_t.html     |    1 +
 .../tvm/runtime/function/ffi/type.__uint16_t.html  |    1 +
 .../tvm/runtime/function/ffi/type.__uint32_t.html  |    1 +
 .../tvm/runtime/function/ffi/type.__uint64_t.html  |    1 +
 .../tvm/runtime/function/ffi/type.__uint8_t.html   |    1 +
 .../function/ffi/type.__uint_least16_t.html        |    1 +
 .../function/ffi/type.__uint_least32_t.html        |    1 +
 .../function/ffi/type.__uint_least64_t.html        |    1 +
 .../runtime/function/ffi/type.__uint_least8_t.html |    1 +
 .../tvm/runtime/function/ffi/type.__uintmax_t.html |    1 +
 .../runtime/function/ffi/type.__useconds_t.html    |    1 +
 .../runtime/function/ffi/type.int_fast16_t.html    |    1 +
 .../runtime/function/ffi/type.int_fast32_t.html    |    1 +
 .../runtime/function/ffi/type.int_fast64_t.html    |    1 +
 .../tvm/runtime/function/ffi/type.int_fast8_t.html |    1 +
 .../runtime/function/ffi/type.int_least16_t.html   |    1 +
 .../runtime/function/ffi/type.int_least32_t.html   |    1 +
 .../runtime/function/ffi/type.int_least64_t.html   |    1 +
 .../runtime/function/ffi/type.int_least8_t.html    |    1 +
 .../tvm/runtime/function/ffi/type.intmax_t.html    |    1 +
 .../rust/tvm/runtime/function/ffi/type.size_t.html |    1 +
 .../tvm/runtime/function/ffi/type.tvm_index_t.html |    2 +
 .../runtime/function/ffi/type.uint_fast16_t.html   |    1 +
 .../runtime/function/ffi/type.uint_fast32_t.html   |    1 +
 .../runtime/function/ffi/type.uint_fast64_t.html   |    1 +
 .../runtime/function/ffi/type.uint_fast8_t.html    |    1 +
 .../runtime/function/ffi/type.uint_least16_t.html  |    1 +
 .../runtime/function/ffi/type.uint_least32_t.html  |    1 +
 .../runtime/function/ffi/type.uint_least64_t.html  |    1 +
 .../runtime/function/ffi/type.uint_least8_t.html   |    1 +
 .../tvm/runtime/function/ffi/type.uintmax_t.html   |    1 +
 .../tvm/runtime/function/ffi/type.wchar_t.html     |    1 +
 .../tvm/runtime/function/ffi/union.TVMValue.html   |   22 +
 .../api/rust/tvm/runtime/function/fn.register.html |   20 +
 .../tvm/runtime/function/fn.register_override.html |    9 +
 .../tvm/runtime/function/fn.register_untyped.html  |    6 +
 docs/api/rust/tvm/runtime/function/index.html      |    9 +
 .../api/rust/tvm/runtime/function/sidebar-items.js |    1 +
 .../rust/tvm/runtime/function/struct.Function.html |   28 +
 .../rust/tvm/runtime/function/struct.RawArgs.html  |   30 +
 .../tvm/runtime/function/trait.ToFunction.html     |   57 +
 .../api/rust/tvm/runtime/function/trait.Typed.html |   72 +
 .../api/rust/tvm/runtime/function/type.Result.html |    1 +
 docs/api/rust/tvm/runtime/graph_rt/index.html      |    1 +
 .../api/rust/tvm/runtime/graph_rt/sidebar-items.js |    1 +
 .../rust/tvm/runtime/graph_rt/struct.GraphRt.html  |   25 +
 docs/api/rust/tvm/runtime/index.html               |   11 +
 docs/api/rust/tvm/runtime/macro.check_call!.html   |   11 +
 docs/api/rust/tvm/runtime/macro.check_call.html    |    3 +
 docs/api/rust/tvm/runtime/macro.external!.html     |   11 +
 docs/api/rust/tvm/runtime/macro.external.html      |    1 +
 docs/api/rust/tvm/runtime/macro.tvm_call!.html     |   11 +
 docs/api/rust/tvm/runtime/macro.tvm_call.html      |    3 +
 docs/api/rust/tvm/runtime/map/index.html           |    1 +
 docs/api/rust/tvm/runtime/map/sidebar-items.js     |    1 +
 docs/api/rust/tvm/runtime/map/struct.IntoIter.html |  346 +++
 docs/api/rust/tvm/runtime/map/struct.Map.html      |   45 +
 docs/api/rust/tvm/runtime/module/index.html        |    3 +
 docs/api/rust/tvm/runtime/module/sidebar-items.js  |    1 +
 .../api/rust/tvm/runtime/module/struct.Module.html |   35 +
 .../rust/tvm/runtime/module/struct.ModuleNode.html |   14 +
 docs/api/rust/tvm/runtime/ndarray/index.html       |   17 +
 docs/api/rust/tvm/runtime/ndarray/sidebar-items.js |    1 +
 .../rust/tvm/runtime/ndarray/struct.NDArray.html   |   72 +
 .../runtime/ndarray/struct.NDArrayContainer.html   |   19 +
 docs/api/rust/tvm/runtime/ndarray/trait.Num32.html |    4 +
 .../rust/tvm/runtime/object/fn.debug_print.html    |    1 +
 docs/api/rust/tvm/runtime/object/index.html        |    7 +
 docs/api/rust/tvm/runtime/object/sidebar-items.js  |    1 +
 .../api/rust/tvm/runtime/object/struct.Object.html |   21 +
 .../rust/tvm/runtime/object/struct.ObjectPtr.html  |   47 +
 .../rust/tvm/runtime/object/struct.ObjectRef.html  |   25 +
 .../rust/tvm/runtime/object/trait.AsArgValue.html  |    6 +
 .../rust/tvm/runtime/object/trait.IsObject.html    |    9 +
 .../rust/tvm/runtime/object/trait.IsObjectRef.html |   26 +
 docs/api/rust/tvm/runtime/sidebar-items.js         |    1 +
 docs/api/rust/tvm/runtime/string/index.html        |    1 +
 docs/api/rust/tvm/runtime/string/sidebar-items.js  |    1 +
 .../api/rust/tvm/runtime/string/struct.String.html |   33 +
 .../rust/tvm/runtime/string/struct.StringObj.html  |   12 +
 docs/api/rust/tvm/runtime/struct.DataType.html     |   28 +
 docs/api/rust/tvm/runtime/struct.Device.html       |   24 +
 docs/api/rust/tvm/runtime/struct.Function.html     |   28 +
 .../tvm/runtime/struct.FunctionNotFoundError.html  |   14 +
 docs/api/rust/tvm/runtime/struct.Module.html       |   35 +
 docs/api/rust/tvm/runtime/struct.NDArray.html      |   72 +
 docs/api/rust/tvm/runtime/struct.Object.html       |   21 +
 docs/api/rust/tvm/runtime/struct.ObjectPtr.html    |   47 +
 docs/api/rust/tvm/runtime/struct.ObjectRef.html    |   25 +
 docs/api/rust/tvm/runtime/struct.String.html       |   33 +
 docs/api/rust/tvm/runtime/struct.StringObj.html    |   12 +
 .../rust/tvm/runtime/struct.TypeMismatchError.html |   17 +
 docs/api/rust/tvm/runtime/trait.AsArgValue.html    |    6 +
 docs/api/rust/tvm/runtime/trait.IsObject.html      |    9 +
 docs/api/rust/tvm/runtime/trait.IsObjectRef.html   |   26 +
 docs/api/rust/tvm/sidebar-items.js                 |    1 +
 docs/api/rust/tvm/struct.DataType.html             |   28 +
 docs/api/rust/tvm/struct.Device.html               |   24 +
 docs/api/rust/tvm/struct.Function.html             |   28 +
 .../api/rust/tvm/struct.FunctionNotFoundError.html |   14 +
 docs/api/rust/tvm/struct.Module.html               |   35 +
 docs/api/rust/tvm/struct.NDArray.html              |   72 +
 docs/api/rust/tvm/struct.TypeMismatchError.html    |   17 +
 docs/api/rust/tvm/transform/fn.function_pass.html  |    4 +
 docs/api/rust/tvm/transform/index.html             |    1 +
 docs/api/rust/tvm/transform/sidebar-items.js       |    1 +
 docs/api/rust/tvm/transform/struct.PassInfo.html   |   26 +
 .../rust/tvm/transform/struct.PassInfoNode.html    |   17 +
 docs/api/rust/tvm/transform/type.IRModule.html     |    1 +
 docs/api/rust/tvm/transform/type.Pass.html         |    1 +
 docs/api/rust/tvm/transform/type.PassContext.html  |    1 +
 docs/api/rust/tvm_graph_rt/all.html                |    1 +
 .../tvm_graph_rt/array/constant.DTYPE_FLOAT32.html |   11 +
 .../tvm_graph_rt/array/constant.DTYPE_FLOAT64.html |   11 +
 .../tvm_graph_rt/array/constant.DTYPE_INT32.html   |   11 +
 .../tvm_graph_rt/array/constant.DTYPE_UINT32.html  |   11 +
 docs/api/rust/tvm_graph_rt/array/enum.Storage.html |   11 +
 .../api/rust/tvm_graph_rt/array/struct.Tensor.html |   11 +
 .../rust/tvm_graph_rt/constant.DTYPE_FLOAT32.html  |    1 +
 .../rust/tvm_graph_rt/constant.DTYPE_FLOAT64.html  |    1 +
 .../rust/tvm_graph_rt/constant.DTYPE_INT32.html    |    1 +
 .../rust/tvm_graph_rt/constant.DTYPE_UINT32.html   |    1 +
 docs/api/rust/tvm_graph_rt/enum.ArgValue.html      |   44 +
 docs/api/rust/tvm_graph_rt/enum.RetValue.html      |   50 +
 docs/api/rust/tvm_graph_rt/enum.Storage.html       |   26 +
 .../rust/tvm_graph_rt/errors/enum.ArrayError.html  |   17 +
 .../tvm_graph_rt/errors/enum.GraphFormatError.html |   22 +
 docs/api/rust/tvm_graph_rt/errors/index.html       |    1 +
 docs/api/rust/tvm_graph_rt/errors/sidebar-items.js |    1 +
 .../errors/struct.FunctionNotFound.html            |   14 +
 .../tvm_graph_rt/errors/struct.InvalidPointer.html |   14 +
 .../ffi/constant.DLDataTypeCode_kDLBfloat.html     |    2 +
 .../ffi/constant.DLDataTypeCode_kDLComplex.html    |    3 +
 .../ffi/constant.DLDataTypeCode_kDLFloat.html      |    2 +
 .../ffi/constant.DLDataTypeCode_kDLInt.html        |    2 +
 .../constant.DLDataTypeCode_kDLOpaqueHandle.html   |    3 +
 .../ffi/constant.DLDataTypeCode_kDLUInt.html       |    2 +
 .../ffi/constant.DLDeviceType_kDLCPU.html          |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDA.html         |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDAHost.html     |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDAManaged.html  |    2 +
 .../ffi/constant.DLDeviceType_kDLExtDev.html       |    4 +
 .../ffi/constant.DLDeviceType_kDLHexagon.html      |    2 +
 .../ffi/constant.DLDeviceType_kDLMetal.html        |    2 +
 .../ffi/constant.DLDeviceType_kDLOneAPI.html       |    4 +
 .../ffi/constant.DLDeviceType_kDLOpenCL.html       |    2 +
 .../ffi/constant.DLDeviceType_kDLROCM.html         |    2 +
 .../ffi/constant.DLDeviceType_kDLROCMHost.html     |    2 +
 .../ffi/constant.DLDeviceType_kDLVPI.html          |    2 +
 .../ffi/constant.DLDeviceType_kDLVulkan.html       |    2 +
 .../ffi/constant.DLDeviceType_kDLWebGPU.html       |    2 +
 .../ffi/constant.DLPACK_ABI_VERSION.html           |    1 +
 .../tvm_graph_rt/ffi/constant.DLPACK_VERSION.html  |    1 +
 .../rust/tvm_graph_rt/ffi/constant.INT16_MAX.html  |    1 +
 .../rust/tvm_graph_rt/ffi/constant.INT16_MIN.html  |    1 +
 .../rust/tvm_graph_rt/ffi/constant.INT32_MAX.html  |    1 +
 .../rust/tvm_graph_rt/ffi/constant.INT32_MIN.html  |    1 +
 .../rust/tvm_graph_rt/ffi/constant.INT8_MAX.html   |    1 +
 .../rust/tvm_graph_rt/ffi/constant.INT8_MIN.html   |    1 +
 .../rust/tvm_graph_rt/ffi/constant.INTPTR_MAX.html |    1 +
 .../rust/tvm_graph_rt/ffi/constant.INTPTR_MIN.html |    1 +
 .../tvm_graph_rt/ffi/constant.INT_FAST16_MAX.html  |    1 +
 .../tvm_graph_rt/ffi/constant.INT_FAST16_MIN.html  |    1 +
 .../tvm_graph_rt/ffi/constant.INT_FAST32_MAX.html  |    1 +
 .../tvm_graph_rt/ffi/constant.INT_FAST32_MIN.html  |    1 +
 .../tvm_graph_rt/ffi/constant.INT_FAST8_MAX.html   |    1 +
 .../tvm_graph_rt/ffi/constant.INT_FAST8_MIN.html   |    1 +
 .../tvm_graph_rt/ffi/constant.INT_LEAST16_MAX.html |    1 +
 .../tvm_graph_rt/ffi/constant.INT_LEAST16_MIN.html |    1 +
 .../tvm_graph_rt/ffi/constant.INT_LEAST32_MAX.html |    1 +
 .../tvm_graph_rt/ffi/constant.INT_LEAST32_MIN.html |    1 +
 .../tvm_graph_rt/ffi/constant.INT_LEAST8_MAX.html  |    1 +
 .../tvm_graph_rt/ffi/constant.INT_LEAST8_MIN.html  |    1 +
 .../tvm_graph_rt/ffi/constant.PTRDIFF_MAX.html     |    1 +
 .../tvm_graph_rt/ffi/constant.PTRDIFF_MIN.html     |    1 +
 .../tvm_graph_rt/ffi/constant.SIG_ATOMIC_MAX.html  |    1 +
 .../tvm_graph_rt/ffi/constant.SIG_ATOMIC_MIN.html  |    1 +
 .../rust/tvm_graph_rt/ffi/constant.SIZE_MAX.html   |    1 +
 .../ffi/constant.TVMArgTypeCode_kDLDevice.html     |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMArgFloat.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMArgInt.html    |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMBytes.html     |    1 +
 ...constant.TVMArgTypeCode_kTVMDLTensorHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMDataType.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMExtBegin.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMExtEnd.html    |    1 +
 .../constant.TVMArgTypeCode_kTVMExtReserveEnd.html |    1 +
 .../constant.TVMArgTypeCode_kTVMModuleHandle.html  |    1 +
 .../constant.TVMArgTypeCode_kTVMNDArrayHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNNVMFirst.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNNVMLast.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNullptr.html   |    1 +
 .../constant.TVMArgTypeCode_kTVMObjectHandle.html  |    1 +
 ...tant.TVMArgTypeCode_kTVMObjectRValueRefArg.html |    1 +
 .../constant.TVMArgTypeCode_kTVMOpaqueHandle.html  |    1 +
 ...nstant.TVMArgTypeCode_kTVMPackedFuncHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMStr.html       |    1 +
 ...tant.TVMDeviceExtType_TVMDeviceExtType_End.html |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLAOCL.html     |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLMicroDev.html |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLSDAccel.html  |    1 +
 .../ffi/constant.TVMDeviceExtType_kOpenGL.html     |    1 +
 .../tvm_graph_rt/ffi/constant.TVM_VERSION.html     |    1 +
 .../rust/tvm_graph_rt/ffi/constant.UINT16_MAX.html |    1 +
 .../rust/tvm_graph_rt/ffi/constant.UINT32_MAX.html |    1 +
 .../rust/tvm_graph_rt/ffi/constant.UINT8_MAX.html  |    1 +
 .../tvm_graph_rt/ffi/constant.UINTPTR_MAX.html     |    1 +
 .../tvm_graph_rt/ffi/constant.UINT_FAST16_MAX.html |    1 +
 .../tvm_graph_rt/ffi/constant.UINT_FAST32_MAX.html |    1 +
 .../tvm_graph_rt/ffi/constant.UINT_FAST8_MAX.html  |    1 +
 .../ffi/constant.UINT_LEAST16_MAX.html             |    1 +
 .../ffi/constant.UINT_LEAST32_MAX.html             |    1 +
 .../tvm_graph_rt/ffi/constant.UINT_LEAST8_MAX.html |    1 +
 .../rust/tvm_graph_rt/ffi/constant.WINT_MAX.html   |    1 +
 .../rust/tvm_graph_rt/ffi/constant.WINT_MIN.html   |    1 +
 .../tvm_graph_rt/ffi/constant._ATFILE_SOURCE.html  |    1 +
 .../ffi/constant._BITS_STDINT_INTN_H.html          |    1 +
 .../ffi/constant._BITS_STDINT_UINTN_H.html         |    1 +
 .../tvm_graph_rt/ffi/constant._BITS_TIME64_H.html  |    1 +
 .../ffi/constant._BITS_TYPESIZES_H.html            |    1 +
 .../tvm_graph_rt/ffi/constant._BITS_TYPES_H.html   |    1 +
 .../tvm_graph_rt/ffi/constant._BITS_WCHAR_H.html   |    1 +
 .../tvm_graph_rt/ffi/constant._DEFAULT_SOURCE.html |    1 +
 .../tvm_graph_rt/ffi/constant._FEATURES_H.html     |    1 +
 .../tvm_graph_rt/ffi/constant._POSIX_C_SOURCE.html |    1 +
 .../tvm_graph_rt/ffi/constant._POSIX_SOURCE.html   |    1 +
 .../tvm_graph_rt/ffi/constant._STDC_PREDEF_H.html  |    1 +
 .../rust/tvm_graph_rt/ffi/constant._STDINT_H.html  |    1 +
 .../tvm_graph_rt/ffi/constant._SYS_CDEFS_H.html    |    1 +
 .../tvm_graph_rt/ffi/constant.__FD_SETSIZE.html    |    1 +
 .../tvm_graph_rt/ffi/constant.__GLIBC_MINOR__.html |    1 +
 .../ffi/constant.__GLIBC_USE_DEPRECATED_GETS.html  |    1 +
 .../ffi/constant.__GLIBC_USE_DEPRECATED_SCANF.html |    1 +
 .../constant.__GLIBC_USE_IEC_60559_BFP_EXT.html    |    1 +
 ...constant.__GLIBC_USE_IEC_60559_BFP_EXT_C2X.html |    1 +
 .../ffi/constant.__GLIBC_USE_IEC_60559_EXT.html    |    1 +
 .../constant.__GLIBC_USE_IEC_60559_FUNCS_EXT.html  |    1 +
 ...nstant.__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X.html |    1 +
 .../constant.__GLIBC_USE_IEC_60559_TYPES_EXT.html  |    1 +
 .../ffi/constant.__GLIBC_USE_ISOC2X.html           |    1 +
 .../ffi/constant.__GLIBC_USE_LIB_EXT2.html         |    1 +
 .../rust/tvm_graph_rt/ffi/constant.__GLIBC__.html  |    1 +
 .../tvm_graph_rt/ffi/constant.__GNU_LIBRARY__.html |    1 +
 .../ffi/constant.__HAVE_GENERIC_SELECTION.html     |    1 +
 .../ffi/constant.__INO_T_MATCHES_INO64_T.html      |    1 +
 ...ant.__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64.html |    1 +
 ...nstant.__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI.html |    1 +
 .../ffi/constant.__OFF_T_MATCHES_OFF64_T.html      |    1 +
 .../ffi/constant.__RLIM_T_MATCHES_RLIM64_T.html    |    1 +
 .../ffi/constant.__STATFS_MATCHES_STATFS64.html    |    1 +
 .../ffi/constant.__STDC_IEC_559_COMPLEX__.html     |    1 +
 .../ffi/constant.__STDC_IEC_559__.html             |    1 +
 .../ffi/constant.__STDC_IEC_60559_BFP__.html       |    1 +
 .../ffi/constant.__STDC_IEC_60559_COMPLEX__.html   |    1 +
 .../ffi/constant.__STDC_ISO_10646__.html           |    1 +
 .../ffi/constant.__SYSCALL_WORDSIZE.html           |    1 +
 .../rust/tvm_graph_rt/ffi/constant.__TIMESIZE.html |    1 +
 .../tvm_graph_rt/ffi/constant.__USE_ATFILE.html    |    1 +
 .../ffi/constant.__USE_FORTIFY_LEVEL.html          |    1 +
 .../tvm_graph_rt/ffi/constant.__USE_ISOC11.html    |    1 +
 .../tvm_graph_rt/ffi/constant.__USE_ISOC95.html    |    1 +
 .../tvm_graph_rt/ffi/constant.__USE_ISOC99.html    |    1 +
 .../rust/tvm_graph_rt/ffi/constant.__USE_MISC.html |    1 +
 .../tvm_graph_rt/ffi/constant.__USE_POSIX.html     |    1 +
 .../ffi/constant.__USE_POSIX199309.html            |    1 +
 .../ffi/constant.__USE_POSIX199506.html            |    1 +
 .../tvm_graph_rt/ffi/constant.__USE_POSIX2.html    |    1 +
 .../ffi/constant.__USE_POSIX_IMPLICITLY.html       |    1 +
 .../tvm_graph_rt/ffi/constant.__USE_XOPEN2K.html   |    1 +
 .../tvm_graph_rt/ffi/constant.__USE_XOPEN2K8.html  |    1 +
 .../rust/tvm_graph_rt/ffi/constant.__WORDSIZE.html |    1 +
 .../ffi/constant.__WORDSIZE_TIME64_COMPAT32.html   |    1 +
 .../constant.__glibc_c99_flexarr_available.html    |    1 +
 .../tvm_graph_rt/ffi/fn.TVMAPISetLastError.html    |    4 +
 .../rust/tvm_graph_rt/ffi/fn.TVMArrayAlloc.html    |   21 +
 .../tvm_graph_rt/ffi/fn.TVMArrayCopyFromBytes.html |   10 +
 .../tvm_graph_rt/ffi/fn.TVMArrayCopyFromTo.html    |   10 +
 .../tvm_graph_rt/ffi/fn.TVMArrayCopyToBytes.html   |   10 +
 .../api/rust/tvm_graph_rt/ffi/fn.TVMArrayFree.html |    4 +
 .../tvm_graph_rt/ffi/fn.TVMArrayFromDLPack.html    |    9 +
 .../rust/tvm_graph_rt/ffi/fn.TVMArrayToDLPack.html |    9 +
 .../ffi/fn.TVMBackendAllocWorkspace.html           |   17 +
 .../ffi/fn.TVMBackendFreeWorkspace.html            |   11 +
 .../ffi/fn.TVMBackendGetFuncFromEnv.html           |   12 +
 .../ffi/fn.TVMBackendParallelBarrier.html          |    8 +
 .../ffi/fn.TVMBackendParallelLaunch.html           |   11 +
 .../ffi/fn.TVMBackendRegisterEnvCAPI.html          |   11 +
 .../ffi/fn.TVMBackendRegisterSystemLibSymbol.html  |    8 +
 .../tvm_graph_rt/ffi/fn.TVMBackendRunOnce.html     |   14 +
 .../rust/tvm_graph_rt/ffi/fn.TVMByteArrayFree.html |    6 +
 .../tvm_graph_rt/ffi/fn.TVMCFuncSetReturn.html     |   13 +
 .../rust/tvm_graph_rt/ffi/fn.TVMCbArgToReturn.html |   10 +
 .../ffi/fn.TVMDLManagedTensorCallDeleter.html      |    5 +
 .../ffi/fn.TVMDeviceAllocDataSpace.html            |   15 +
 .../ffi/fn.TVMDeviceAllocDataSpaceWithScope.html   |   19 +
 .../ffi/fn.TVMDeviceCopyDataFromTo.html            |   12 +
 .../ffi/fn.TVMDeviceFreeDataSpace.html             |    8 +
 docs/api/rust/tvm_graph_rt/ffi/fn.TVMFuncCall.html |   22 +
 .../ffi/fn.TVMFuncCreateFromCFunc.html             |   13 +
 docs/api/rust/tvm_graph_rt/ffi/fn.TVMFuncFree.html |    4 +
 .../rust/tvm_graph_rt/ffi/fn.TVMFuncGetGlobal.html |    9 +
 .../ffi/fn.TVMFuncListGlobalNames.html             |    8 +
 .../tvm_graph_rt/ffi/fn.TVMFuncRegisterGlobal.html |   10 +
 .../tvm_graph_rt/ffi/fn.TVMFuncRemoveGlobal.html   |    3 +
 .../rust/tvm_graph_rt/ffi/fn.TVMGetLastError.html  |    7 +
 docs/api/rust/tvm_graph_rt/ffi/fn.TVMModFree.html  |    8 +
 .../tvm_graph_rt/ffi/fn.TVMModGetFunction.html     |   12 +
 .../api/rust/tvm_graph_rt/ffi/fn.TVMModImport.html |    9 +
 .../tvm_graph_rt/ffi/fn.TVMModLoadFromFile.html    |   12 +
 .../tvm_graph_rt/ffi/fn.TVMObjectDerivedFrom.html  |   10 +
 .../rust/tvm_graph_rt/ffi/fn.TVMObjectFree.html    |    6 +
 .../tvm_graph_rt/ffi/fn.TVMObjectGetTypeIndex.html |    8 +
 .../rust/tvm_graph_rt/ffi/fn.TVMObjectRetain.html  |    5 +
 .../ffi/fn.TVMObjectTypeIndex2Key.html             |    8 +
 .../ffi/fn.TVMObjectTypeKey2Index.html             |    8 +
 .../api/rust/tvm_graph_rt/ffi/fn.TVMSetStream.html |   13 +
 .../rust/tvm_graph_rt/ffi/fn.TVMStreamCreate.html  |   10 +
 .../rust/tvm_graph_rt/ffi/fn.TVMStreamFree.html    |   10 +
 .../ffi/fn.TVMStreamStreamSynchronize.html         |   12 +
 .../rust/tvm_graph_rt/ffi/fn.TVMSynchronize.html   |   10 +
 docs/api/rust/tvm_graph_rt/ffi/index.html          |  116 +
 docs/api/rust/tvm_graph_rt/ffi/sidebar-items.js    |    1 +
 .../rust/tvm_graph_rt/ffi/struct.DLDataType.html   |   39 +
 .../api/rust/tvm_graph_rt/ffi/struct.DLDevice.html |   28 +
 .../tvm_graph_rt/ffi/struct.DLManagedTensor.html   |   30 +
 .../api/rust/tvm_graph_rt/ffi/struct.DLTensor.html |   57 +
 .../rust/tvm_graph_rt/ffi/struct.TVMByteArray.html |   21 +
 .../ffi/struct.TVMParallelGroupEnv.html            |   20 +
 .../api/rust/tvm_graph_rt/ffi/struct.__fsid_t.html |   16 +
 .../tvm_graph_rt/ffi/type.BackendPackedCFunc.html  |    1 +
 .../rust/tvm_graph_rt/ffi/type.DLDataTypeCode.html |    2 +
 .../rust/tvm_graph_rt/ffi/type.DLDeviceType.html   |    1 +
 .../tvm_graph_rt/ffi/type.FTVMParallelLambda.html  |    5 +
 .../rust/tvm_graph_rt/ffi/type.TVMArgTypeCode.html |   13 +
 .../rust/tvm_graph_rt/ffi/type.TVMArrayHandle.html |    2 +
 .../ffi/type.TVMBackendPackedCFunc.html            |    9 +
 .../tvm_graph_rt/ffi/type.TVMDeviceExtType.html    |    1 +
 .../ffi/type.TVMExtensionFuncDeclarer.html         |    6 +
 .../tvm_graph_rt/ffi/type.TVMFunctionHandle.html   |    2 +
 .../tvm_graph_rt/ffi/type.TVMModuleHandle.html     |    2 +
 .../tvm_graph_rt/ffi/type.TVMObjectHandle.html     |    2 +
 .../rust/tvm_graph_rt/ffi/type.TVMPackedCFunc.html |    9 +
 .../ffi/type.TVMPackedCFuncFinalizer.html          |    3 +
 .../tvm_graph_rt/ffi/type.TVMRetValueHandle.html   |    2 +
 .../tvm_graph_rt/ffi/type.TVMStreamHandle.html     |    3 +
 .../rust/tvm_graph_rt/ffi/type.__blkcnt64_t.html   |    1 +
 .../api/rust/tvm_graph_rt/ffi/type.__blkcnt_t.html |    1 +
 .../rust/tvm_graph_rt/ffi/type.__blksize_t.html    |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__caddr_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__clock_t.html |    1 +
 .../rust/tvm_graph_rt/ffi/type.__clockid_t.html    |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__daddr_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__dev_t.html   |    1 +
 .../rust/tvm_graph_rt/ffi/type.__fsblkcnt64_t.html |    1 +
 .../rust/tvm_graph_rt/ffi/type.__fsblkcnt_t.html   |    1 +
 .../rust/tvm_graph_rt/ffi/type.__fsfilcnt64_t.html |    1 +
 .../rust/tvm_graph_rt/ffi/type.__fsfilcnt_t.html   |    1 +
 .../api/rust/tvm_graph_rt/ffi/type.__fsword_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__gid_t.html   |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__id_t.html    |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__ino64_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__ino_t.html   |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__int16_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__int32_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__int64_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__int8_t.html  |    1 +
 .../tvm_graph_rt/ffi/type.__int_least16_t.html     |    1 +
 .../tvm_graph_rt/ffi/type.__int_least32_t.html     |    1 +
 .../tvm_graph_rt/ffi/type.__int_least64_t.html     |    1 +
 .../rust/tvm_graph_rt/ffi/type.__int_least8_t.html |    1 +
 .../api/rust/tvm_graph_rt/ffi/type.__intmax_t.html |    1 +
 .../api/rust/tvm_graph_rt/ffi/type.__intptr_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__key_t.html   |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__loff_t.html  |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__mode_t.html  |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__nlink_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__off64_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__off_t.html   |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__pid_t.html   |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__quad_t.html  |    1 +
 .../api/rust/tvm_graph_rt/ffi/type.__rlim64_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__rlim_t.html  |    1 +
 .../rust/tvm_graph_rt/ffi/type.__sig_atomic_t.html |    1 +
 .../rust/tvm_graph_rt/ffi/type.__socklen_t.html    |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__ssize_t.html |    1 +
 .../tvm_graph_rt/ffi/type.__suseconds64_t.html     |    1 +
 .../rust/tvm_graph_rt/ffi/type.__suseconds_t.html  |    1 +
 .../tvm_graph_rt/ffi/type.__syscall_slong_t.html   |    1 +
 .../tvm_graph_rt/ffi/type.__syscall_ulong_t.html   |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__time_t.html  |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__timer_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__u_char.html  |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__u_int.html   |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__u_long.html  |    1 +
 .../api/rust/tvm_graph_rt/ffi/type.__u_quad_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__u_short.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__uid_t.html   |    1 +
 .../api/rust/tvm_graph_rt/ffi/type.__uint16_t.html |    1 +
 .../api/rust/tvm_graph_rt/ffi/type.__uint32_t.html |    1 +
 .../api/rust/tvm_graph_rt/ffi/type.__uint64_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.__uint8_t.html |    1 +
 .../tvm_graph_rt/ffi/type.__uint_least16_t.html    |    1 +
 .../tvm_graph_rt/ffi/type.__uint_least32_t.html    |    1 +
 .../tvm_graph_rt/ffi/type.__uint_least64_t.html    |    1 +
 .../tvm_graph_rt/ffi/type.__uint_least8_t.html     |    1 +
 .../rust/tvm_graph_rt/ffi/type.__uintmax_t.html    |    1 +
 .../rust/tvm_graph_rt/ffi/type.__useconds_t.html   |    1 +
 .../rust/tvm_graph_rt/ffi/type.int_fast16_t.html   |    1 +
 .../rust/tvm_graph_rt/ffi/type.int_fast32_t.html   |    1 +
 .../rust/tvm_graph_rt/ffi/type.int_fast64_t.html   |    1 +
 .../rust/tvm_graph_rt/ffi/type.int_fast8_t.html    |    1 +
 .../rust/tvm_graph_rt/ffi/type.int_least16_t.html  |    1 +
 .../rust/tvm_graph_rt/ffi/type.int_least32_t.html  |    1 +
 .../rust/tvm_graph_rt/ffi/type.int_least64_t.html  |    1 +
 .../rust/tvm_graph_rt/ffi/type.int_least8_t.html   |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.intmax_t.html  |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.size_t.html    |    1 +
 .../rust/tvm_graph_rt/ffi/type.tvm_index_t.html    |    2 +
 .../rust/tvm_graph_rt/ffi/type.uint_fast16_t.html  |    1 +
 .../rust/tvm_graph_rt/ffi/type.uint_fast32_t.html  |    1 +
 .../rust/tvm_graph_rt/ffi/type.uint_fast64_t.html  |    1 +
 .../rust/tvm_graph_rt/ffi/type.uint_fast8_t.html   |    1 +
 .../rust/tvm_graph_rt/ffi/type.uint_least16_t.html |    1 +
 .../rust/tvm_graph_rt/ffi/type.uint_least32_t.html |    1 +
 .../rust/tvm_graph_rt/ffi/type.uint_least64_t.html |    1 +
 .../rust/tvm_graph_rt/ffi/type.uint_least8_t.html  |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.uintmax_t.html |    1 +
 docs/api/rust/tvm_graph_rt/ffi/type.wchar_t.html   |    1 +
 docs/api/rust/tvm_graph_rt/ffi/union.TVMValue.html |   22 +
 .../rust/tvm_graph_rt/fn.TVMAPISetLastError.html   |    2 +
 .../tvm_graph_rt/fn.TVMBackendAllocWorkspace.html  |    8 +
 .../tvm_graph_rt/fn.TVMBackendFreeWorkspace.html   |    6 +
 .../tvm_graph_rt/fn.TVMBackendParallelBarrier.html |    5 +
 .../tvm_graph_rt/fn.TVMBackendParallelLaunch.html  |    6 +
 docs/api/rust/tvm_graph_rt/fn.TVMGetLastError.html |    2 +
 docs/api/rust/tvm_graph_rt/fn.load_param_dict.html |    4 +
 docs/api/rust/tvm_graph_rt/fn.remove_item.html     |    1 +
 .../tvm_graph_rt/graph/fn.load_param_dict.html     |   11 +
 docs/api/rust/tvm_graph_rt/graph/struct.Entry.html |   11 +
 docs/api/rust/tvm_graph_rt/graph/struct.Graph.html |   11 +
 .../tvm_graph_rt/graph/struct.GraphExecutor.html   |   11 +
 docs/api/rust/tvm_graph_rt/graph/struct.Node.html  |   11 +
 docs/api/rust/tvm_graph_rt/index.html              |   14 +
 docs/api/rust/tvm_graph_rt/macro.call_packed!.html |   11 +
 docs/api/rust/tvm_graph_rt/macro.call_packed.html  |    7 +
 .../rust/tvm_graph_rt/macro.import_module!.html    |   11 +
 .../api/rust/tvm_graph_rt/macro.import_module.html |    1 +
 .../tvm_graph_rt/module/dso/struct.DsoModule.html  |   11 +
 .../module/syslib/struct.SystemLibModule.html      |   11 +
 .../api/rust/tvm_graph_rt/module/trait.Module.html |   11 +
 .../tvm_graph_rt/packed_func/enum.ArgValue.html    |   44 +
 .../tvm_graph_rt/packed_func/enum.RetValue.html    |   50 +
 docs/api/rust/tvm_graph_rt/packed_func/index.html  |    4 +
 .../packed_func/macro.call_packed!.html            |   11 +
 .../packed_func/macro.call_packed.html             |    7 +
 .../packed_func/macro.try_downcast!.html           |   11 +
 .../packed_func/macro.try_downcast.html            |    3 +
 .../rust/tvm_graph_rt/packed_func/sidebar-items.js |    1 +
 .../tvm_graph_rt/packed_func/trait.PackedFunc.html |    2 +
 .../tvm_graph_rt/packed_func/union.TVMValue.html   |   22 +
 docs/api/rust/tvm_graph_rt/sidebar-items.js        |    1 +
 docs/api/rust/tvm_graph_rt/struct.DLTensor.html    |   57 +
 docs/api/rust/tvm_graph_rt/struct.DsoModule.html   |   12 +
 docs/api/rust/tvm_graph_rt/struct.Entry.html       |   18 +
 .../rust/tvm_graph_rt/struct.FuncCallError.html    |   14 +
 docs/api/rust/tvm_graph_rt/struct.Graph.html       |   26 +
 .../rust/tvm_graph_rt/struct.GraphExecutor.html    |   38 +
 docs/api/rust/tvm_graph_rt/struct.Node.html        |   20 +
 .../rust/tvm_graph_rt/struct.SystemLibModule.html  |   11 +
 docs/api/rust/tvm_graph_rt/struct.Tensor.html      |   38 +
 .../tvm_graph_rt/struct.ValueDowncastError.html    |   17 +
 .../threading/fn.TVMBackendParallelBarrier.html    |   11 +
 .../threading/fn.TVMBackendParallelLaunch.html     |   11 +
 docs/api/rust/tvm_graph_rt/trait.Module.html       |    4 +
 docs/api/rust/tvm_graph_rt/trait.PackedFunc.html   |    2 +
 docs/api/rust/tvm_graph_rt/union.TVMValue.html     |   22 +
 .../workspace/fn.TVMBackendAllocWorkspace.html     |   11 +
 .../workspace/fn.TVMBackendFreeWorkspace.html      |   11 +
 .../tvm_graph_rt/workspace/fn.remove_item.html     |   11 +
 docs/api/rust/tvm_macros/all.html                  |    1 +
 docs/api/rust/tvm_macros/derive.Object.html        |    9 +
 docs/api/rust/tvm_macros/index.html                |    1 +
 docs/api/rust/tvm_macros/macro.external!.html      |   11 +
 docs/api/rust/tvm_macros/macro.external.html       |    1 +
 docs/api/rust/tvm_macros/macro.import_module!.html |   11 +
 docs/api/rust/tvm_macros/macro.import_module.html  |    1 +
 docs/api/rust/tvm_macros/sidebar-items.js          |    1 +
 docs/api/rust/tvm_rt/all.html                      |    1 +
 docs/api/rust/tvm_rt/array/index.html              |    1 +
 docs/api/rust/tvm_rt/array/sidebar-items.js        |    1 +
 docs/api/rust/tvm_rt/array/struct.Array.html       |   22 +
 docs/api/rust/tvm_rt/array/struct.IntoIter.html    |  338 +++
 docs/api/rust/tvm_rt/device/enum.DeviceType.html   |   37 +
 docs/api/rust/tvm_rt/device/index.html             |    2 +
 docs/api/rust/tvm_rt/device/sidebar-items.js       |    1 +
 docs/api/rust/tvm_rt/device/struct.Device.html     |   24 +
 .../device/struct.UnsupportedDeviceError.html      |   14 +
 docs/api/rust/tvm_rt/enum.ArgValue.html            |   48 +
 docs/api/rust/tvm_rt/enum.ByteArray.html           |   28 +
 docs/api/rust/tvm_rt/enum.DeviceType.html          |   37 +
 docs/api/rust/tvm_rt/enum.RetValue.html            |   69 +
 docs/api/rust/tvm_rt/errors/enum.Error.html        |   27 +
 docs/api/rust/tvm_rt/errors/enum.NDArrayError.html |   22 +
 docs/api/rust/tvm_rt/errors/index.html             |    1 +
 docs/api/rust/tvm_rt/errors/sidebar-items.js       |    1 +
 .../errors/struct.FunctionNotFoundError.html       |   14 +
 .../tvm_rt/errors/struct.TypeMismatchError.html    |   17 +
 docs/api/rust/tvm_rt/fn.get_last_error.html        |    2 +
 docs/api/rust/tvm_rt/fn.version.html               |    2 +
 docs/api/rust/tvm_rt/function/enum.ArgValue.html   |   48 +
 docs/api/rust/tvm_rt/function/enum.RetValue.html   |   69 +
 .../ffi/constant.DLDataTypeCode_kDLBfloat.html     |    2 +
 .../ffi/constant.DLDataTypeCode_kDLComplex.html    |    3 +
 .../ffi/constant.DLDataTypeCode_kDLFloat.html      |    2 +
 .../ffi/constant.DLDataTypeCode_kDLInt.html        |    2 +
 .../constant.DLDataTypeCode_kDLOpaqueHandle.html   |    3 +
 .../ffi/constant.DLDataTypeCode_kDLUInt.html       |    2 +
 .../function/ffi/constant.DLDeviceType_kDLCPU.html |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDA.html         |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDAHost.html     |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDAManaged.html  |    2 +
 .../ffi/constant.DLDeviceType_kDLExtDev.html       |    4 +
 .../ffi/constant.DLDeviceType_kDLHexagon.html      |    2 +
 .../ffi/constant.DLDeviceType_kDLMetal.html        |    2 +
 .../ffi/constant.DLDeviceType_kDLOneAPI.html       |    4 +
 .../ffi/constant.DLDeviceType_kDLOpenCL.html       |    2 +
 .../ffi/constant.DLDeviceType_kDLROCM.html         |    2 +
 .../ffi/constant.DLDeviceType_kDLROCMHost.html     |    2 +
 .../function/ffi/constant.DLDeviceType_kDLVPI.html |    2 +
 .../ffi/constant.DLDeviceType_kDLVulkan.html       |    2 +
 .../ffi/constant.DLDeviceType_kDLWebGPU.html       |    2 +
 .../function/ffi/constant.DLPACK_ABI_VERSION.html  |    1 +
 .../function/ffi/constant.DLPACK_VERSION.html      |    1 +
 .../tvm_rt/function/ffi/constant.INT16_MAX.html    |    1 +
 .../tvm_rt/function/ffi/constant.INT16_MIN.html    |    1 +
 .../tvm_rt/function/ffi/constant.INT32_MAX.html    |    1 +
 .../tvm_rt/function/ffi/constant.INT32_MIN.html    |    1 +
 .../tvm_rt/function/ffi/constant.INT8_MAX.html     |    1 +
 .../tvm_rt/function/ffi/constant.INT8_MIN.html     |    1 +
 .../tvm_rt/function/ffi/constant.INTPTR_MAX.html   |    1 +
 .../tvm_rt/function/ffi/constant.INTPTR_MIN.html   |    1 +
 .../function/ffi/constant.INT_FAST16_MAX.html      |    1 +
 .../function/ffi/constant.INT_FAST16_MIN.html      |    1 +
 .../function/ffi/constant.INT_FAST32_MAX.html      |    1 +
 .../function/ffi/constant.INT_FAST32_MIN.html      |    1 +
 .../function/ffi/constant.INT_FAST8_MAX.html       |    1 +
 .../function/ffi/constant.INT_FAST8_MIN.html       |    1 +
 .../function/ffi/constant.INT_LEAST16_MAX.html     |    1 +
 .../function/ffi/constant.INT_LEAST16_MIN.html     |    1 +
 .../function/ffi/constant.INT_LEAST32_MAX.html     |    1 +
 .../function/ffi/constant.INT_LEAST32_MIN.html     |    1 +
 .../function/ffi/constant.INT_LEAST8_MAX.html      |    1 +
 .../function/ffi/constant.INT_LEAST8_MIN.html      |    1 +
 .../tvm_rt/function/ffi/constant.PTRDIFF_MAX.html  |    1 +
 .../tvm_rt/function/ffi/constant.PTRDIFF_MIN.html  |    1 +
 .../function/ffi/constant.SIG_ATOMIC_MAX.html      |    1 +
 .../function/ffi/constant.SIG_ATOMIC_MIN.html      |    1 +
 .../tvm_rt/function/ffi/constant.SIZE_MAX.html     |    1 +
 .../ffi/constant.TVMArgTypeCode_kDLDevice.html     |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMArgFloat.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMArgInt.html    |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMBytes.html     |    1 +
 ...constant.TVMArgTypeCode_kTVMDLTensorHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMDataType.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMExtBegin.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMExtEnd.html    |    1 +
 .../constant.TVMArgTypeCode_kTVMExtReserveEnd.html |    1 +
 .../constant.TVMArgTypeCode_kTVMModuleHandle.html  |    1 +
 .../constant.TVMArgTypeCode_kTVMNDArrayHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNNVMFirst.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNNVMLast.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNullptr.html   |    1 +
 .../constant.TVMArgTypeCode_kTVMObjectHandle.html  |    1 +
 ...tant.TVMArgTypeCode_kTVMObjectRValueRefArg.html |    1 +
 .../constant.TVMArgTypeCode_kTVMOpaqueHandle.html  |    1 +
 ...nstant.TVMArgTypeCode_kTVMPackedFuncHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMStr.html       |    1 +
 ...tant.TVMDeviceExtType_TVMDeviceExtType_End.html |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLAOCL.html     |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLMicroDev.html |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLSDAccel.html  |    1 +
 .../ffi/constant.TVMDeviceExtType_kOpenGL.html     |    1 +
 .../tvm_rt/function/ffi/constant.TVM_VERSION.html  |    1 +
 .../tvm_rt/function/ffi/constant.UINT16_MAX.html   |    1 +
 .../tvm_rt/function/ffi/constant.UINT32_MAX.html   |    1 +
 .../tvm_rt/function/ffi/constant.UINT8_MAX.html    |    1 +
 .../tvm_rt/function/ffi/constant.UINTPTR_MAX.html  |    1 +
 .../function/ffi/constant.UINT_FAST16_MAX.html     |    1 +
 .../function/ffi/constant.UINT_FAST32_MAX.html     |    1 +
 .../function/ffi/constant.UINT_FAST8_MAX.html      |    1 +
 .../function/ffi/constant.UINT_LEAST16_MAX.html    |    1 +
 .../function/ffi/constant.UINT_LEAST32_MAX.html    |    1 +
 .../function/ffi/constant.UINT_LEAST8_MAX.html     |    1 +
 .../tvm_rt/function/ffi/constant.WINT_MAX.html     |    1 +
 .../tvm_rt/function/ffi/constant.WINT_MIN.html     |    1 +
 .../function/ffi/constant._ATFILE_SOURCE.html      |    1 +
 .../function/ffi/constant._BITS_STDINT_INTN_H.html |    1 +
 .../ffi/constant._BITS_STDINT_UINTN_H.html         |    1 +
 .../function/ffi/constant._BITS_TIME64_H.html      |    1 +
 .../function/ffi/constant._BITS_TYPESIZES_H.html   |    1 +
 .../function/ffi/constant._BITS_TYPES_H.html       |    1 +
 .../function/ffi/constant._BITS_WCHAR_H.html       |    1 +
 .../function/ffi/constant._DEFAULT_SOURCE.html     |    1 +
 .../tvm_rt/function/ffi/constant._FEATURES_H.html  |    1 +
 .../function/ffi/constant._POSIX_C_SOURCE.html     |    1 +
 .../function/ffi/constant._POSIX_SOURCE.html       |    1 +
 .../function/ffi/constant._STDC_PREDEF_H.html      |    1 +
 .../tvm_rt/function/ffi/constant._STDINT_H.html    |    1 +
 .../tvm_rt/function/ffi/constant._SYS_CDEFS_H.html |    1 +
 .../tvm_rt/function/ffi/constant.__FD_SETSIZE.html |    1 +
 .../function/ffi/constant.__GLIBC_MINOR__.html     |    1 +
 .../ffi/constant.__GLIBC_USE_DEPRECATED_GETS.html  |    1 +
 .../ffi/constant.__GLIBC_USE_DEPRECATED_SCANF.html |    1 +
 .../constant.__GLIBC_USE_IEC_60559_BFP_EXT.html    |    1 +
 ...constant.__GLIBC_USE_IEC_60559_BFP_EXT_C2X.html |    1 +
 .../ffi/constant.__GLIBC_USE_IEC_60559_EXT.html    |    1 +
 .../constant.__GLIBC_USE_IEC_60559_FUNCS_EXT.html  |    1 +
 ...nstant.__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X.html |    1 +
 .../constant.__GLIBC_USE_IEC_60559_TYPES_EXT.html  |    1 +
 .../function/ffi/constant.__GLIBC_USE_ISOC2X.html  |    1 +
 .../ffi/constant.__GLIBC_USE_LIB_EXT2.html         |    1 +
 .../tvm_rt/function/ffi/constant.__GLIBC__.html    |    1 +
 .../function/ffi/constant.__GNU_LIBRARY__.html     |    1 +
 .../ffi/constant.__HAVE_GENERIC_SELECTION.html     |    1 +
 .../ffi/constant.__INO_T_MATCHES_INO64_T.html      |    1 +
 ...ant.__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64.html |    1 +
 ...nstant.__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI.html |    1 +
 .../ffi/constant.__OFF_T_MATCHES_OFF64_T.html      |    1 +
 .../ffi/constant.__RLIM_T_MATCHES_RLIM64_T.html    |    1 +
 .../ffi/constant.__STATFS_MATCHES_STATFS64.html    |    1 +
 .../ffi/constant.__STDC_IEC_559_COMPLEX__.html     |    1 +
 .../function/ffi/constant.__STDC_IEC_559__.html    |    1 +
 .../ffi/constant.__STDC_IEC_60559_BFP__.html       |    1 +
 .../ffi/constant.__STDC_IEC_60559_COMPLEX__.html   |    1 +
 .../function/ffi/constant.__STDC_ISO_10646__.html  |    1 +
 .../function/ffi/constant.__SYSCALL_WORDSIZE.html  |    1 +
 .../tvm_rt/function/ffi/constant.__TIMESIZE.html   |    1 +
 .../tvm_rt/function/ffi/constant.__USE_ATFILE.html |    1 +
 .../function/ffi/constant.__USE_FORTIFY_LEVEL.html |    1 +
 .../tvm_rt/function/ffi/constant.__USE_ISOC11.html |    1 +
 .../tvm_rt/function/ffi/constant.__USE_ISOC95.html |    1 +
 .../tvm_rt/function/ffi/constant.__USE_ISOC99.html |    1 +
 .../tvm_rt/function/ffi/constant.__USE_MISC.html   |    1 +
 .../tvm_rt/function/ffi/constant.__USE_POSIX.html  |    1 +
 .../function/ffi/constant.__USE_POSIX199309.html   |    1 +
 .../function/ffi/constant.__USE_POSIX199506.html   |    1 +
 .../tvm_rt/function/ffi/constant.__USE_POSIX2.html |    1 +
 .../ffi/constant.__USE_POSIX_IMPLICITLY.html       |    1 +
 .../function/ffi/constant.__USE_XOPEN2K.html       |    1 +
 .../function/ffi/constant.__USE_XOPEN2K8.html      |    1 +
 .../tvm_rt/function/ffi/constant.__WORDSIZE.html   |    1 +
 .../ffi/constant.__WORDSIZE_TIME64_COMPAT32.html   |    1 +
 .../constant.__glibc_c99_flexarr_available.html    |    1 +
 .../tvm_rt/function/ffi/fn.TVMAPISetLastError.html |    4 +
 .../rust/tvm_rt/function/ffi/fn.TVMArrayAlloc.html |   21 +
 .../function/ffi/fn.TVMArrayCopyFromBytes.html     |   10 +
 .../tvm_rt/function/ffi/fn.TVMArrayCopyFromTo.html |   10 +
 .../function/ffi/fn.TVMArrayCopyToBytes.html       |   10 +
 .../rust/tvm_rt/function/ffi/fn.TVMArrayFree.html  |    4 +
 .../tvm_rt/function/ffi/fn.TVMArrayFromDLPack.html |    9 +
 .../tvm_rt/function/ffi/fn.TVMArrayToDLPack.html   |    9 +
 .../function/ffi/fn.TVMBackendAllocWorkspace.html  |   17 +
 .../function/ffi/fn.TVMBackendFreeWorkspace.html   |   11 +
 .../function/ffi/fn.TVMBackendGetFuncFromEnv.html  |   12 +
 .../function/ffi/fn.TVMBackendParallelBarrier.html |    8 +
 .../function/ffi/fn.TVMBackendParallelLaunch.html  |   11 +
 .../function/ffi/fn.TVMBackendRegisterEnvCAPI.html |   11 +
 .../ffi/fn.TVMBackendRegisterSystemLibSymbol.html  |    8 +
 .../tvm_rt/function/ffi/fn.TVMBackendRunOnce.html  |   14 +
 .../tvm_rt/function/ffi/fn.TVMByteArrayFree.html   |    6 +
 .../tvm_rt/function/ffi/fn.TVMCFuncSetReturn.html  |   13 +
 .../tvm_rt/function/ffi/fn.TVMCbArgToReturn.html   |   10 +
 .../ffi/fn.TVMDLManagedTensorCallDeleter.html      |    5 +
 .../function/ffi/fn.TVMDeviceAllocDataSpace.html   |   15 +
 .../ffi/fn.TVMDeviceAllocDataSpaceWithScope.html   |   19 +
 .../function/ffi/fn.TVMDeviceCopyDataFromTo.html   |   12 +
 .../function/ffi/fn.TVMDeviceFreeDataSpace.html    |    8 +
 .../rust/tvm_rt/function/ffi/fn.TVMFuncCall.html   |   22 +
 .../function/ffi/fn.TVMFuncCreateFromCFunc.html    |   13 +
 .../rust/tvm_rt/function/ffi/fn.TVMFuncFree.html   |    4 +
 .../tvm_rt/function/ffi/fn.TVMFuncGetGlobal.html   |    9 +
 .../function/ffi/fn.TVMFuncListGlobalNames.html    |    8 +
 .../function/ffi/fn.TVMFuncRegisterGlobal.html     |   10 +
 .../function/ffi/fn.TVMFuncRemoveGlobal.html       |    3 +
 .../tvm_rt/function/ffi/fn.TVMGetLastError.html    |    7 +
 .../rust/tvm_rt/function/ffi/fn.TVMModFree.html    |    8 +
 .../tvm_rt/function/ffi/fn.TVMModGetFunction.html  |   12 +
 .../rust/tvm_rt/function/ffi/fn.TVMModImport.html  |    9 +
 .../tvm_rt/function/ffi/fn.TVMModLoadFromFile.html |   12 +
 .../function/ffi/fn.TVMObjectDerivedFrom.html      |   10 +
 .../rust/tvm_rt/function/ffi/fn.TVMObjectFree.html |    6 +
 .../function/ffi/fn.TVMObjectGetTypeIndex.html     |    8 +
 .../tvm_rt/function/ffi/fn.TVMObjectRetain.html    |    5 +
 .../function/ffi/fn.TVMObjectTypeIndex2Key.html    |    8 +
 .../function/ffi/fn.TVMObjectTypeKey2Index.html    |    8 +
 .../rust/tvm_rt/function/ffi/fn.TVMSetStream.html  |   13 +
 .../tvm_rt/function/ffi/fn.TVMStreamCreate.html    |   10 +
 .../rust/tvm_rt/function/ffi/fn.TVMStreamFree.html |   10 +
 .../ffi/fn.TVMStreamStreamSynchronize.html         |   12 +
 .../tvm_rt/function/ffi/fn.TVMSynchronize.html     |   10 +
 docs/api/rust/tvm_rt/function/ffi/index.html       |  116 +
 docs/api/rust/tvm_rt/function/ffi/sidebar-items.js |    1 +
 .../tvm_rt/function/ffi/struct.DLDataType.html     |   41 +
 .../rust/tvm_rt/function/ffi/struct.DLDevice.html  |   30 +
 .../function/ffi/struct.DLManagedTensor.html       |   30 +
 .../rust/tvm_rt/function/ffi/struct.DLTensor.html  |   59 +
 .../tvm_rt/function/ffi/struct.TVMByteArray.html   |   23 +
 .../function/ffi/struct.TVMParallelGroupEnv.html   |   20 +
 .../rust/tvm_rt/function/ffi/struct.__fsid_t.html  |   16 +
 .../function/ffi/type.BackendPackedCFunc.html      |    1 +
 .../tvm_rt/function/ffi/type.DLDataTypeCode.html   |    2 +
 .../tvm_rt/function/ffi/type.DLDeviceType.html     |    1 +
 .../function/ffi/type.FTVMParallelLambda.html      |    5 +
 .../tvm_rt/function/ffi/type.TVMArgTypeCode.html   |   13 +
 .../tvm_rt/function/ffi/type.TVMArrayHandle.html   |    2 +
 .../function/ffi/type.TVMBackendPackedCFunc.html   |    9 +
 .../tvm_rt/function/ffi/type.TVMDeviceExtType.html |    1 +
 .../ffi/type.TVMExtensionFuncDeclarer.html         |    6 +
 .../function/ffi/type.TVMFunctionHandle.html       |    2 +
 .../tvm_rt/function/ffi/type.TVMModuleHandle.html  |    2 +
 .../tvm_rt/function/ffi/type.TVMObjectHandle.html  |    2 +
 .../tvm_rt/function/ffi/type.TVMPackedCFunc.html   |    9 +
 .../function/ffi/type.TVMPackedCFuncFinalizer.html |    3 +
 .../function/ffi/type.TVMRetValueHandle.html       |    2 +
 .../tvm_rt/function/ffi/type.TVMStreamHandle.html  |    3 +
 .../tvm_rt/function/ffi/type.__blkcnt64_t.html     |    1 +
 .../rust/tvm_rt/function/ffi/type.__blkcnt_t.html  |    1 +
 .../rust/tvm_rt/function/ffi/type.__blksize_t.html |    1 +
 .../rust/tvm_rt/function/ffi/type.__caddr_t.html   |    1 +
 .../rust/tvm_rt/function/ffi/type.__clock_t.html   |    1 +
 .../rust/tvm_rt/function/ffi/type.__clockid_t.html |    1 +
 .../rust/tvm_rt/function/ffi/type.__daddr_t.html   |    1 +
 .../api/rust/tvm_rt/function/ffi/type.__dev_t.html |    1 +
 .../tvm_rt/function/ffi/type.__fsblkcnt64_t.html   |    1 +
 .../tvm_rt/function/ffi/type.__fsblkcnt_t.html     |    1 +
 .../tvm_rt/function/ffi/type.__fsfilcnt64_t.html   |    1 +
 .../tvm_rt/function/ffi/type.__fsfilcnt_t.html     |    1 +
 .../rust/tvm_rt/function/ffi/type.__fsword_t.html  |    1 +
 .../api/rust/tvm_rt/function/ffi/type.__gid_t.html |    1 +
 docs/api/rust/tvm_rt/function/ffi/type.__id_t.html |    1 +
 .../rust/tvm_rt/function/ffi/type.__ino64_t.html   |    1 +
 .../api/rust/tvm_rt/function/ffi/type.__ino_t.html |    1 +
 .../rust/tvm_rt/function/ffi/type.__int16_t.html   |    1 +
 .../rust/tvm_rt/function/ffi/type.__int32_t.html   |    1 +
 .../rust/tvm_rt/function/ffi/type.__int64_t.html   |    1 +
 .../rust/tvm_rt/function/ffi/type.__int8_t.html    |    1 +
 .../tvm_rt/function/ffi/type.__int_least16_t.html  |    1 +
 .../tvm_rt/function/ffi/type.__int_least32_t.html  |    1 +
 .../tvm_rt/function/ffi/type.__int_least64_t.html  |    1 +
 .../tvm_rt/function/ffi/type.__int_least8_t.html   |    1 +
 .../rust/tvm_rt/function/ffi/type.__intmax_t.html  |    1 +
 .../rust/tvm_rt/function/ffi/type.__intptr_t.html  |    1 +
 .../api/rust/tvm_rt/function/ffi/type.__key_t.html |    1 +
 .../rust/tvm_rt/function/ffi/type.__loff_t.html    |    1 +
 .../rust/tvm_rt/function/ffi/type.__mode_t.html    |    1 +
 .../rust/tvm_rt/function/ffi/type.__nlink_t.html   |    1 +
 .../rust/tvm_rt/function/ffi/type.__off64_t.html   |    1 +
 .../api/rust/tvm_rt/function/ffi/type.__off_t.html |    1 +
 .../api/rust/tvm_rt/function/ffi/type.__pid_t.html |    1 +
 .../rust/tvm_rt/function/ffi/type.__quad_t.html    |    1 +
 .../rust/tvm_rt/function/ffi/type.__rlim64_t.html  |    1 +
 .../rust/tvm_rt/function/ffi/type.__rlim_t.html    |    1 +
 .../tvm_rt/function/ffi/type.__sig_atomic_t.html   |    1 +
 .../rust/tvm_rt/function/ffi/type.__socklen_t.html |    1 +
 .../rust/tvm_rt/function/ffi/type.__ssize_t.html   |    1 +
 .../tvm_rt/function/ffi/type.__suseconds64_t.html  |    1 +
 .../tvm_rt/function/ffi/type.__suseconds_t.html    |    1 +
 .../function/ffi/type.__syscall_slong_t.html       |    1 +
 .../function/ffi/type.__syscall_ulong_t.html       |    1 +
 .../rust/tvm_rt/function/ffi/type.__time_t.html    |    1 +
 .../rust/tvm_rt/function/ffi/type.__timer_t.html   |    1 +
 .../rust/tvm_rt/function/ffi/type.__u_char.html    |    1 +
 .../api/rust/tvm_rt/function/ffi/type.__u_int.html |    1 +
 .../rust/tvm_rt/function/ffi/type.__u_long.html    |    1 +
 .../rust/tvm_rt/function/ffi/type.__u_quad_t.html  |    1 +
 .../rust/tvm_rt/function/ffi/type.__u_short.html   |    1 +
 .../api/rust/tvm_rt/function/ffi/type.__uid_t.html |    1 +
 .../rust/tvm_rt/function/ffi/type.__uint16_t.html  |    1 +
 .../rust/tvm_rt/function/ffi/type.__uint32_t.html  |    1 +
 .../rust/tvm_rt/function/ffi/type.__uint64_t.html  |    1 +
 .../rust/tvm_rt/function/ffi/type.__uint8_t.html   |    1 +
 .../tvm_rt/function/ffi/type.__uint_least16_t.html |    1 +
 .../tvm_rt/function/ffi/type.__uint_least32_t.html |    1 +
 .../tvm_rt/function/ffi/type.__uint_least64_t.html |    1 +
 .../tvm_rt/function/ffi/type.__uint_least8_t.html  |    1 +
 .../rust/tvm_rt/function/ffi/type.__uintmax_t.html |    1 +
 .../tvm_rt/function/ffi/type.__useconds_t.html     |    1 +
 .../tvm_rt/function/ffi/type.int_fast16_t.html     |    1 +
 .../tvm_rt/function/ffi/type.int_fast32_t.html     |    1 +
 .../tvm_rt/function/ffi/type.int_fast64_t.html     |    1 +
 .../rust/tvm_rt/function/ffi/type.int_fast8_t.html |    1 +
 .../tvm_rt/function/ffi/type.int_least16_t.html    |    1 +
 .../tvm_rt/function/ffi/type.int_least32_t.html    |    1 +
 .../tvm_rt/function/ffi/type.int_least64_t.html    |    1 +
 .../tvm_rt/function/ffi/type.int_least8_t.html     |    1 +
 .../rust/tvm_rt/function/ffi/type.intmax_t.html    |    1 +
 docs/api/rust/tvm_rt/function/ffi/type.size_t.html |    1 +
 .../rust/tvm_rt/function/ffi/type.tvm_index_t.html |    2 +
 .../tvm_rt/function/ffi/type.uint_fast16_t.html    |    1 +
 .../tvm_rt/function/ffi/type.uint_fast32_t.html    |    1 +
 .../tvm_rt/function/ffi/type.uint_fast64_t.html    |    1 +
 .../tvm_rt/function/ffi/type.uint_fast8_t.html     |    1 +
 .../tvm_rt/function/ffi/type.uint_least16_t.html   |    1 +
 .../tvm_rt/function/ffi/type.uint_least32_t.html   |    1 +
 .../tvm_rt/function/ffi/type.uint_least64_t.html   |    1 +
 .../tvm_rt/function/ffi/type.uint_least8_t.html    |    1 +
 .../rust/tvm_rt/function/ffi/type.uintmax_t.html   |    1 +
 .../api/rust/tvm_rt/function/ffi/type.wchar_t.html |    1 +
 .../rust/tvm_rt/function/ffi/union.TVMValue.html   |   22 +
 docs/api/rust/tvm_rt/function/fn.register.html     |   19 +
 .../rust/tvm_rt/function/fn.register_override.html |    8 +
 .../rust/tvm_rt/function/fn.register_untyped.html  |    5 +
 docs/api/rust/tvm_rt/function/index.html           |    9 +
 docs/api/rust/tvm_rt/function/sidebar-items.js     |    1 +
 docs/api/rust/tvm_rt/function/struct.Function.html |   58 +
 docs/api/rust/tvm_rt/function/struct.RawArgs.html  |   24 +
 .../api/rust/tvm_rt/function/trait.ToFunction.html |   53 +
 docs/api/rust/tvm_rt/function/trait.Typed.html     |   68 +
 docs/api/rust/tvm_rt/function/type.Result.html     |    1 +
 docs/api/rust/tvm_rt/graph_rt/index.html           |    1 +
 docs/api/rust/tvm_rt/graph_rt/sidebar-items.js     |    1 +
 docs/api/rust/tvm_rt/graph_rt/struct.GraphRt.html  |   21 +
 docs/api/rust/tvm_rt/index.html                    |   11 +
 docs/api/rust/tvm_rt/macro.check_call!.html        |   11 +
 docs/api/rust/tvm_rt/macro.check_call.html         |    3 +
 docs/api/rust/tvm_rt/macro.external!.html          |   11 +
 docs/api/rust/tvm_rt/macro.external.html           |    1 +
 docs/api/rust/tvm_rt/macro.tvm_call!.html          |   11 +
 docs/api/rust/tvm_rt/macro.tvm_call.html           |    3 +
 docs/api/rust/tvm_rt/map/index.html                |    1 +
 docs/api/rust/tvm_rt/map/sidebar-items.js          |    1 +
 docs/api/rust/tvm_rt/map/struct.IntoIter.html      |  343 +++
 docs/api/rust/tvm_rt/map/struct.Map.html           |   44 +
 docs/api/rust/tvm_rt/module/index.html             |    3 +
 docs/api/rust/tvm_rt/module/sidebar-items.js       |    1 +
 docs/api/rust/tvm_rt/module/struct.Module.html     |   31 +
 docs/api/rust/tvm_rt/module/struct.ModuleNode.html |   14 +
 docs/api/rust/tvm_rt/ndarray/index.html            |   17 +
 docs/api/rust/tvm_rt/ndarray/sidebar-items.js      |    1 +
 docs/api/rust/tvm_rt/ndarray/struct.NDArray.html   |   67 +
 .../tvm_rt/ndarray/struct.NDArrayContainer.html    |   19 +
 docs/api/rust/tvm_rt/ndarray/trait.Num32.html      |    4 +
 docs/api/rust/tvm_rt/object/fn.debug_print.html    |    1 +
 docs/api/rust/tvm_rt/object/index.html             |    7 +
 .../tvm_rt/object/object_ptr/struct.Object.html    |   11 +
 .../tvm_rt/object/object_ptr/struct.ObjectPtr.html |   11 +
 .../tvm_rt/object/object_ptr/struct.ObjectRef.html |   11 +
 .../tvm_rt/object/object_ptr/trait.IsObject.html   |   11 +
 docs/api/rust/tvm_rt/object/sidebar-items.js       |    1 +
 docs/api/rust/tvm_rt/object/struct.Object.html     |   20 +
 docs/api/rust/tvm_rt/object/struct.ObjectPtr.html  |   29 +
 docs/api/rust/tvm_rt/object/struct.ObjectRef.html  |   22 +
 docs/api/rust/tvm_rt/object/trait.AsArgValue.html  |    5 +
 docs/api/rust/tvm_rt/object/trait.IsObject.html    |    9 +
 docs/api/rust/tvm_rt/object/trait.IsObjectRef.html |   25 +
 docs/api/rust/tvm_rt/sidebar-items.js              |    1 +
 docs/api/rust/tvm_rt/string/index.html             |    1 +
 docs/api/rust/tvm_rt/string/sidebar-items.js       |    1 +
 docs/api/rust/tvm_rt/string/struct.String.html     |   28 +
 docs/api/rust/tvm_rt/string/struct.StringObj.html  |   12 +
 docs/api/rust/tvm_rt/struct.DataType.html          |   28 +
 docs/api/rust/tvm_rt/struct.Device.html            |   24 +
 .../api/rust/tvm_rt/to_function/enum.ArgValue.html |   11 +
 .../api/rust/tvm_rt/to_function/enum.RetValue.html |   11 +
 .../ffi/constant.DLDataTypeCode_kDLBfloat.html     |   11 +
 .../ffi/constant.DLDataTypeCode_kDLComplex.html    |   11 +
 .../ffi/constant.DLDataTypeCode_kDLFloat.html      |   11 +
 .../ffi/constant.DLDataTypeCode_kDLInt.html        |   11 +
 .../constant.DLDataTypeCode_kDLOpaqueHandle.html   |   11 +
 .../ffi/constant.DLDataTypeCode_kDLUInt.html       |   11 +
 .../ffi/constant.DLDeviceType_kDLCPU.html          |   11 +
 .../ffi/constant.DLDeviceType_kDLCUDA.html         |   11 +
 .../ffi/constant.DLDeviceType_kDLCUDAHost.html     |   11 +
 .../ffi/constant.DLDeviceType_kDLCUDAManaged.html  |   11 +
 .../ffi/constant.DLDeviceType_kDLExtDev.html       |   11 +
 .../ffi/constant.DLDeviceType_kDLHexagon.html      |   11 +
 .../ffi/constant.DLDeviceType_kDLMetal.html        |   11 +
 .../ffi/constant.DLDeviceType_kDLOneAPI.html       |   11 +
 .../ffi/constant.DLDeviceType_kDLOpenCL.html       |   11 +
 .../ffi/constant.DLDeviceType_kDLROCM.html         |   11 +
 .../ffi/constant.DLDeviceType_kDLROCMHost.html     |   11 +
 .../ffi/constant.DLDeviceType_kDLVPI.html          |   11 +
 .../ffi/constant.DLDeviceType_kDLVulkan.html       |   11 +
 .../ffi/constant.DLDeviceType_kDLWebGPU.html       |   11 +
 .../ffi/constant.DLPACK_ABI_VERSION.html           |   11 +
 .../to_function/ffi/constant.DLPACK_VERSION.html   |   11 +
 .../tvm_rt/to_function/ffi/constant.INT16_MAX.html |   11 +
 .../tvm_rt/to_function/ffi/constant.INT16_MIN.html |   11 +
 .../tvm_rt/to_function/ffi/constant.INT32_MAX.html |   11 +
 .../tvm_rt/to_function/ffi/constant.INT32_MIN.html |   11 +
 .../tvm_rt/to_function/ffi/constant.INT8_MAX.html  |   11 +
 .../tvm_rt/to_function/ffi/constant.INT8_MIN.html  |   11 +
 .../to_function/ffi/constant.INTPTR_MAX.html       |   11 +
 .../to_function/ffi/constant.INTPTR_MIN.html       |   11 +
 .../to_function/ffi/constant.INT_FAST16_MAX.html   |   11 +
 .../to_function/ffi/constant.INT_FAST16_MIN.html   |   11 +
 .../to_function/ffi/constant.INT_FAST32_MAX.html   |   11 +
 .../to_function/ffi/constant.INT_FAST32_MIN.html   |   11 +
 .../to_function/ffi/constant.INT_FAST8_MAX.html    |   11 +
 .../to_function/ffi/constant.INT_FAST8_MIN.html    |   11 +
 .../to_function/ffi/constant.INT_LEAST16_MAX.html  |   11 +
 .../to_function/ffi/constant.INT_LEAST16_MIN.html  |   11 +
 .../to_function/ffi/constant.INT_LEAST32_MAX.html  |   11 +
 .../to_function/ffi/constant.INT_LEAST32_MIN.html  |   11 +
 .../to_function/ffi/constant.INT_LEAST8_MAX.html   |   11 +
 .../to_function/ffi/constant.INT_LEAST8_MIN.html   |   11 +
 .../to_function/ffi/constant.PTRDIFF_MAX.html      |   11 +
 .../to_function/ffi/constant.PTRDIFF_MIN.html      |   11 +
 .../to_function/ffi/constant.SIG_ATOMIC_MAX.html   |   11 +
 .../to_function/ffi/constant.SIG_ATOMIC_MIN.html   |   11 +
 .../tvm_rt/to_function/ffi/constant.SIZE_MAX.html  |   11 +
 .../ffi/constant.TVMArgTypeCode_kDLDevice.html     |   11 +
 .../ffi/constant.TVMArgTypeCode_kTVMArgFloat.html  |   11 +
 .../ffi/constant.TVMArgTypeCode_kTVMArgInt.html    |   11 +
 .../ffi/constant.TVMArgTypeCode_kTVMBytes.html     |   11 +
 ...constant.TVMArgTypeCode_kTVMDLTensorHandle.html |   11 +
 .../ffi/constant.TVMArgTypeCode_kTVMDataType.html  |   11 +
 .../ffi/constant.TVMArgTypeCode_kTVMExtBegin.html  |   11 +
 .../ffi/constant.TVMArgTypeCode_kTVMExtEnd.html    |   11 +
 .../constant.TVMArgTypeCode_kTVMExtReserveEnd.html |   11 +
 .../constant.TVMArgTypeCode_kTVMModuleHandle.html  |   11 +
 .../constant.TVMArgTypeCode_kTVMNDArrayHandle.html |   11 +
 .../ffi/constant.TVMArgTypeCode_kTVMNNVMFirst.html |   11 +
 .../ffi/constant.TVMArgTypeCode_kTVMNNVMLast.html  |   11 +
 .../ffi/constant.TVMArgTypeCode_kTVMNullptr.html   |   11 +
 .../constant.TVMArgTypeCode_kTVMObjectHandle.html  |   11 +
 ...tant.TVMArgTypeCode_kTVMObjectRValueRefArg.html |   11 +
 .../constant.TVMArgTypeCode_kTVMOpaqueHandle.html  |   11 +
 ...nstant.TVMArgTypeCode_kTVMPackedFuncHandle.html |   11 +
 .../ffi/constant.TVMArgTypeCode_kTVMStr.html       |   11 +
 ...tant.TVMDeviceExtType_TVMDeviceExtType_End.html |   11 +
 .../ffi/constant.TVMDeviceExtType_kDLAOCL.html     |   11 +
 .../ffi/constant.TVMDeviceExtType_kDLMicroDev.html |   11 +
 .../ffi/constant.TVMDeviceExtType_kDLSDAccel.html  |   11 +
 .../ffi/constant.TVMDeviceExtType_kOpenGL.html     |   11 +
 .../to_function/ffi/constant.TVM_VERSION.html      |   11 +
 .../to_function/ffi/constant.UINT16_MAX.html       |   11 +
 .../to_function/ffi/constant.UINT32_MAX.html       |   11 +
 .../tvm_rt/to_function/ffi/constant.UINT8_MAX.html |   11 +
 .../to_function/ffi/constant.UINTPTR_MAX.html      |   11 +
 .../to_function/ffi/constant.UINT_FAST16_MAX.html  |   11 +
 .../to_function/ffi/constant.UINT_FAST32_MAX.html  |   11 +
 .../to_function/ffi/constant.UINT_FAST8_MAX.html   |   11 +
 .../to_function/ffi/constant.UINT_LEAST16_MAX.html |   11 +
 .../to_function/ffi/constant.UINT_LEAST32_MAX.html |   11 +
 .../to_function/ffi/constant.UINT_LEAST8_MAX.html  |   11 +
 .../tvm_rt/to_function/ffi/constant.WINT_MAX.html  |   11 +
 .../tvm_rt/to_function/ffi/constant.WINT_MIN.html  |   11 +
 .../to_function/ffi/constant._ATFILE_SOURCE.html   |   11 +
 .../ffi/constant._BITS_STDINT_INTN_H.html          |   11 +
 .../ffi/constant._BITS_STDINT_UINTN_H.html         |   11 +
 .../to_function/ffi/constant._BITS_TIME64_H.html   |   11 +
 .../ffi/constant._BITS_TYPESIZES_H.html            |   11 +
 .../to_function/ffi/constant._BITS_TYPES_H.html    |   11 +
 .../to_function/ffi/constant._BITS_WCHAR_H.html    |   11 +
 .../to_function/ffi/constant._DEFAULT_SOURCE.html  |   11 +
 .../to_function/ffi/constant._FEATURES_H.html      |   11 +
 .../to_function/ffi/constant._POSIX_C_SOURCE.html  |   11 +
 .../to_function/ffi/constant._POSIX_SOURCE.html    |   11 +
 .../to_function/ffi/constant._STDC_PREDEF_H.html   |   11 +
 .../tvm_rt/to_function/ffi/constant._STDINT_H.html |   11 +
 .../to_function/ffi/constant._SYS_CDEFS_H.html     |   11 +
 .../to_function/ffi/constant.__FD_SETSIZE.html     |   11 +
 .../to_function/ffi/constant.__GLIBC_MINOR__.html  |   11 +
 .../ffi/constant.__GLIBC_USE_DEPRECATED_GETS.html  |   11 +
 .../ffi/constant.__GLIBC_USE_DEPRECATED_SCANF.html |   11 +
 .../constant.__GLIBC_USE_IEC_60559_BFP_EXT.html    |   11 +
 ...constant.__GLIBC_USE_IEC_60559_BFP_EXT_C2X.html |   11 +
 .../ffi/constant.__GLIBC_USE_IEC_60559_EXT.html    |   11 +
 .../constant.__GLIBC_USE_IEC_60559_FUNCS_EXT.html  |   11 +
 ...nstant.__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X.html |   11 +
 .../constant.__GLIBC_USE_IEC_60559_TYPES_EXT.html  |   11 +
 .../ffi/constant.__GLIBC_USE_ISOC2X.html           |   11 +
 .../ffi/constant.__GLIBC_USE_LIB_EXT2.html         |   11 +
 .../tvm_rt/to_function/ffi/constant.__GLIBC__.html |   11 +
 .../to_function/ffi/constant.__GNU_LIBRARY__.html  |   11 +
 .../ffi/constant.__HAVE_GENERIC_SELECTION.html     |   11 +
 .../ffi/constant.__INO_T_MATCHES_INO64_T.html      |   11 +
 ...ant.__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64.html |   11 +
 ...nstant.__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI.html |   11 +
 .../ffi/constant.__OFF_T_MATCHES_OFF64_T.html      |   11 +
 .../ffi/constant.__RLIM_T_MATCHES_RLIM64_T.html    |   11 +
 .../ffi/constant.__STATFS_MATCHES_STATFS64.html    |   11 +
 .../ffi/constant.__STDC_IEC_559_COMPLEX__.html     |   11 +
 .../to_function/ffi/constant.__STDC_IEC_559__.html |   11 +
 .../ffi/constant.__STDC_IEC_60559_BFP__.html       |   11 +
 .../ffi/constant.__STDC_IEC_60559_COMPLEX__.html   |   11 +
 .../ffi/constant.__STDC_ISO_10646__.html           |   11 +
 .../ffi/constant.__SYSCALL_WORDSIZE.html           |   11 +
 .../to_function/ffi/constant.__TIMESIZE.html       |   11 +
 .../to_function/ffi/constant.__USE_ATFILE.html     |   11 +
 .../ffi/constant.__USE_FORTIFY_LEVEL.html          |   11 +
 .../to_function/ffi/constant.__USE_ISOC11.html     |   11 +
 .../to_function/ffi/constant.__USE_ISOC95.html     |   11 +
 .../to_function/ffi/constant.__USE_ISOC99.html     |   11 +
 .../to_function/ffi/constant.__USE_MISC.html       |   11 +
 .../to_function/ffi/constant.__USE_POSIX.html      |   11 +
 .../ffi/constant.__USE_POSIX199309.html            |   11 +
 .../ffi/constant.__USE_POSIX199506.html            |   11 +
 .../to_function/ffi/constant.__USE_POSIX2.html     |   11 +
 .../ffi/constant.__USE_POSIX_IMPLICITLY.html       |   11 +
 .../to_function/ffi/constant.__USE_XOPEN2K.html    |   11 +
 .../to_function/ffi/constant.__USE_XOPEN2K8.html   |   11 +
 .../to_function/ffi/constant.__WORDSIZE.html       |   11 +
 .../ffi/constant.__WORDSIZE_TIME64_COMPAT32.html   |   11 +
 .../constant.__glibc_c99_flexarr_available.html    |   11 +
 .../to_function/ffi/fn.TVMAPISetLastError.html     |   11 +
 .../tvm_rt/to_function/ffi/fn.TVMArrayAlloc.html   |   11 +
 .../to_function/ffi/fn.TVMArrayCopyFromBytes.html  |   11 +
 .../to_function/ffi/fn.TVMArrayCopyFromTo.html     |   11 +
 .../to_function/ffi/fn.TVMArrayCopyToBytes.html    |   11 +
 .../tvm_rt/to_function/ffi/fn.TVMArrayFree.html    |   11 +
 .../to_function/ffi/fn.TVMArrayFromDLPack.html     |   11 +
 .../to_function/ffi/fn.TVMArrayToDLPack.html       |   11 +
 .../ffi/fn.TVMBackendAllocWorkspace.html           |   11 +
 .../ffi/fn.TVMBackendFreeWorkspace.html            |   11 +
 .../ffi/fn.TVMBackendGetFuncFromEnv.html           |   11 +
 .../ffi/fn.TVMBackendParallelBarrier.html          |   11 +
 .../ffi/fn.TVMBackendParallelLaunch.html           |   11 +
 .../ffi/fn.TVMBackendRegisterEnvCAPI.html          |   11 +
 .../ffi/fn.TVMBackendRegisterSystemLibSymbol.html  |   11 +
 .../to_function/ffi/fn.TVMBackendRunOnce.html      |   11 +
 .../to_function/ffi/fn.TVMByteArrayFree.html       |   11 +
 .../to_function/ffi/fn.TVMCFuncSetReturn.html      |   11 +
 .../to_function/ffi/fn.TVMCbArgToReturn.html       |   11 +
 .../ffi/fn.TVMDLManagedTensorCallDeleter.html      |   11 +
 .../ffi/fn.TVMDeviceAllocDataSpace.html            |   11 +
 .../ffi/fn.TVMDeviceAllocDataSpaceWithScope.html   |   11 +
 .../ffi/fn.TVMDeviceCopyDataFromTo.html            |   11 +
 .../to_function/ffi/fn.TVMDeviceFreeDataSpace.html |   11 +
 .../tvm_rt/to_function/ffi/fn.TVMFuncCall.html     |   11 +
 .../to_function/ffi/fn.TVMFuncCreateFromCFunc.html |   11 +
 .../tvm_rt/to_function/ffi/fn.TVMFuncFree.html     |   11 +
 .../to_function/ffi/fn.TVMFuncGetGlobal.html       |   11 +
 .../to_function/ffi/fn.TVMFuncListGlobalNames.html |   11 +
 .../to_function/ffi/fn.TVMFuncRegisterGlobal.html  |   11 +
 .../to_function/ffi/fn.TVMFuncRemoveGlobal.html    |   11 +
 .../tvm_rt/to_function/ffi/fn.TVMGetLastError.html |   11 +
 .../rust/tvm_rt/to_function/ffi/fn.TVMModFree.html |   11 +
 .../to_function/ffi/fn.TVMModGetFunction.html      |   11 +
 .../tvm_rt/to_function/ffi/fn.TVMModImport.html    |   11 +
 .../to_function/ffi/fn.TVMModLoadFromFile.html     |   11 +
 .../to_function/ffi/fn.TVMObjectDerivedFrom.html   |   11 +
 .../tvm_rt/to_function/ffi/fn.TVMObjectFree.html   |   11 +
 .../to_function/ffi/fn.TVMObjectGetTypeIndex.html  |   11 +
 .../tvm_rt/to_function/ffi/fn.TVMObjectRetain.html |   11 +
 .../to_function/ffi/fn.TVMObjectTypeIndex2Key.html |   11 +
 .../to_function/ffi/fn.TVMObjectTypeKey2Index.html |   11 +
 .../tvm_rt/to_function/ffi/fn.TVMSetStream.html    |   11 +
 .../tvm_rt/to_function/ffi/fn.TVMStreamCreate.html |   11 +
 .../tvm_rt/to_function/ffi/fn.TVMStreamFree.html   |   11 +
 .../ffi/fn.TVMStreamStreamSynchronize.html         |   11 +
 .../tvm_rt/to_function/ffi/fn.TVMSynchronize.html  |   11 +
 docs/api/rust/tvm_rt/to_function/ffi/index.html    |   11 +
 .../tvm_rt/to_function/ffi/struct.DLDataType.html  |   11 +
 .../tvm_rt/to_function/ffi/struct.DLDevice.html    |   11 +
 .../to_function/ffi/struct.DLManagedTensor.html    |   11 +
 .../tvm_rt/to_function/ffi/struct.DLTensor.html    |   11 +
 .../to_function/ffi/struct.TVMByteArray.html       |   11 +
 .../ffi/struct.TVMParallelGroupEnv.html            |   11 +
 .../tvm_rt/to_function/ffi/struct.__fsid_t.html    |   11 +
 .../to_function/ffi/type.BackendPackedCFunc.html   |   11 +
 .../to_function/ffi/type.DLDataTypeCode.html       |   11 +
 .../tvm_rt/to_function/ffi/type.DLDeviceType.html  |   11 +
 .../to_function/ffi/type.FTVMParallelLambda.html   |   11 +
 .../to_function/ffi/type.TVMArgTypeCode.html       |   11 +
 .../to_function/ffi/type.TVMArrayHandle.html       |   11 +
 .../ffi/type.TVMBackendPackedCFunc.html            |   11 +
 .../to_function/ffi/type.TVMDeviceExtType.html     |   11 +
 .../ffi/type.TVMExtensionFuncDeclarer.html         |   11 +
 .../to_function/ffi/type.TVMFunctionHandle.html    |   11 +
 .../to_function/ffi/type.TVMModuleHandle.html      |   11 +
 .../to_function/ffi/type.TVMObjectHandle.html      |   11 +
 .../to_function/ffi/type.TVMPackedCFunc.html       |   11 +
 .../ffi/type.TVMPackedCFuncFinalizer.html          |   11 +
 .../to_function/ffi/type.TVMRetValueHandle.html    |   11 +
 .../to_function/ffi/type.TVMStreamHandle.html      |   11 +
 .../tvm_rt/to_function/ffi/type.__blkcnt64_t.html  |   11 +
 .../tvm_rt/to_function/ffi/type.__blkcnt_t.html    |   11 +
 .../tvm_rt/to_function/ffi/type.__blksize_t.html   |   11 +
 .../tvm_rt/to_function/ffi/type.__caddr_t.html     |   11 +
 .../tvm_rt/to_function/ffi/type.__clock_t.html     |   11 +
 .../tvm_rt/to_function/ffi/type.__clockid_t.html   |   11 +
 .../tvm_rt/to_function/ffi/type.__daddr_t.html     |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__dev_t.html  |   11 +
 .../to_function/ffi/type.__fsblkcnt64_t.html       |   11 +
 .../tvm_rt/to_function/ffi/type.__fsblkcnt_t.html  |   11 +
 .../to_function/ffi/type.__fsfilcnt64_t.html       |   11 +
 .../tvm_rt/to_function/ffi/type.__fsfilcnt_t.html  |   11 +
 .../tvm_rt/to_function/ffi/type.__fsword_t.html    |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__gid_t.html  |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__id_t.html   |   11 +
 .../tvm_rt/to_function/ffi/type.__ino64_t.html     |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__ino_t.html  |   11 +
 .../tvm_rt/to_function/ffi/type.__int16_t.html     |   11 +
 .../tvm_rt/to_function/ffi/type.__int32_t.html     |   11 +
 .../tvm_rt/to_function/ffi/type.__int64_t.html     |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__int8_t.html |   11 +
 .../to_function/ffi/type.__int_least16_t.html      |   11 +
 .../to_function/ffi/type.__int_least32_t.html      |   11 +
 .../to_function/ffi/type.__int_least64_t.html      |   11 +
 .../to_function/ffi/type.__int_least8_t.html       |   11 +
 .../tvm_rt/to_function/ffi/type.__intmax_t.html    |   11 +
 .../tvm_rt/to_function/ffi/type.__intptr_t.html    |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__key_t.html  |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__loff_t.html |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__mode_t.html |   11 +
 .../tvm_rt/to_function/ffi/type.__nlink_t.html     |   11 +
 .../tvm_rt/to_function/ffi/type.__off64_t.html     |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__off_t.html  |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__pid_t.html  |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__quad_t.html |   11 +
 .../tvm_rt/to_function/ffi/type.__rlim64_t.html    |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__rlim_t.html |   11 +
 .../to_function/ffi/type.__sig_atomic_t.html       |   11 +
 .../tvm_rt/to_function/ffi/type.__socklen_t.html   |   11 +
 .../tvm_rt/to_function/ffi/type.__ssize_t.html     |   11 +
 .../to_function/ffi/type.__suseconds64_t.html      |   11 +
 .../tvm_rt/to_function/ffi/type.__suseconds_t.html |   11 +
 .../to_function/ffi/type.__syscall_slong_t.html    |   11 +
 .../to_function/ffi/type.__syscall_ulong_t.html    |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__time_t.html |   11 +
 .../tvm_rt/to_function/ffi/type.__timer_t.html     |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__u_char.html |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__u_int.html  |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__u_long.html |   11 +
 .../tvm_rt/to_function/ffi/type.__u_quad_t.html    |   11 +
 .../tvm_rt/to_function/ffi/type.__u_short.html     |   11 +
 .../rust/tvm_rt/to_function/ffi/type.__uid_t.html  |   11 +
 .../tvm_rt/to_function/ffi/type.__uint16_t.html    |   11 +
 .../tvm_rt/to_function/ffi/type.__uint32_t.html    |   11 +
 .../tvm_rt/to_function/ffi/type.__uint64_t.html    |   11 +
 .../tvm_rt/to_function/ffi/type.__uint8_t.html     |   11 +
 .../to_function/ffi/type.__uint_least16_t.html     |   11 +
 .../to_function/ffi/type.__uint_least32_t.html     |   11 +
 .../to_function/ffi/type.__uint_least64_t.html     |   11 +
 .../to_function/ffi/type.__uint_least8_t.html      |   11 +
 .../tvm_rt/to_function/ffi/type.__uintmax_t.html   |   11 +
 .../tvm_rt/to_function/ffi/type.__useconds_t.html  |   11 +
 .../tvm_rt/to_function/ffi/type.int_fast16_t.html  |   11 +
 .../tvm_rt/to_function/ffi/type.int_fast32_t.html  |   11 +
 .../tvm_rt/to_function/ffi/type.int_fast64_t.html  |   11 +
 .../tvm_rt/to_function/ffi/type.int_fast8_t.html   |   11 +
 .../tvm_rt/to_function/ffi/type.int_least16_t.html |   11 +
 .../tvm_rt/to_function/ffi/type.int_least32_t.html |   11 +
 .../tvm_rt/to_function/ffi/type.int_least64_t.html |   11 +
 .../tvm_rt/to_function/ffi/type.int_least8_t.html  |   11 +
 .../rust/tvm_rt/to_function/ffi/type.intmax_t.html |   11 +
 .../rust/tvm_rt/to_function/ffi/type.size_t.html   |   11 +
 .../tvm_rt/to_function/ffi/type.tvm_index_t.html   |   11 +
 .../tvm_rt/to_function/ffi/type.uint_fast16_t.html |   11 +
 .../tvm_rt/to_function/ffi/type.uint_fast32_t.html |   11 +
 .../tvm_rt/to_function/ffi/type.uint_fast64_t.html |   11 +
 .../tvm_rt/to_function/ffi/type.uint_fast8_t.html  |   11 +
 .../to_function/ffi/type.uint_least16_t.html       |   11 +
 .../to_function/ffi/type.uint_least32_t.html       |   11 +
 .../to_function/ffi/type.uint_least64_t.html       |   11 +
 .../tvm_rt/to_function/ffi/type.uint_least8_t.html |   11 +
 .../tvm_rt/to_function/ffi/type.uintmax_t.html     |   11 +
 .../rust/tvm_rt/to_function/ffi/type.wchar_t.html  |   11 +
 .../tvm_rt/to_function/ffi/union.TVMValue.html     |   11 +
 .../rust/tvm_rt/to_function/struct.RawArgs.html    |   11 +
 .../rust/tvm_rt/to_function/trait.ToFunction.html  |   11 +
 docs/api/rust/tvm_rt/to_function/trait.Typed.html  |   11 +
 docs/api/rust/tvm_sys/all.html                     |    1 +
 docs/api/rust/tvm_sys/array/index.html             |    1 +
 docs/api/rust/tvm_sys/array/sidebar-items.js       |    1 +
 .../rust/tvm_sys/byte_array/enum.ByteArray.html    |   23 +
 docs/api/rust/tvm_sys/byte_array/index.html        |    1 +
 docs/api/rust/tvm_sys/byte_array/sidebar-items.js  |    1 +
 .../tvm_sys/datatype/enum.ParseDataTypeError.html  |   18 +
 docs/api/rust/tvm_sys/datatype/index.html          |    1 +
 docs/api/rust/tvm_sys/datatype/sidebar-items.js    |    1 +
 .../api/rust/tvm_sys/datatype/struct.DataType.html |   26 +
 docs/api/rust/tvm_sys/device/enum.DeviceType.html  |   35 +
 docs/api/rust/tvm_sys/device/index.html            |   14 +
 docs/api/rust/tvm_sys/device/sidebar-items.js      |    1 +
 docs/api/rust/tvm_sys/device/struct.Device.html    |   21 +
 .../device/struct.UnsupportedDeviceError.html      |   14 +
 docs/api/rust/tvm_sys/errors/index.html            |    1 +
 docs/api/rust/tvm_sys/errors/sidebar-items.js      |    1 +
 .../rust/tvm_sys/errors/struct.FuncCallError.html  |   14 +
 .../tvm_sys/errors/struct.ValueDowncastError.html  |   17 +
 .../ffi/constant.DLDataTypeCode_kDLBfloat.html     |    2 +
 .../ffi/constant.DLDataTypeCode_kDLComplex.html    |    3 +
 .../ffi/constant.DLDataTypeCode_kDLFloat.html      |    2 +
 .../ffi/constant.DLDataTypeCode_kDLInt.html        |    2 +
 .../constant.DLDataTypeCode_kDLOpaqueHandle.html   |    3 +
 .../ffi/constant.DLDataTypeCode_kDLUInt.html       |    2 +
 .../tvm_sys/ffi/constant.DLDeviceType_kDLCPU.html  |    2 +
 .../tvm_sys/ffi/constant.DLDeviceType_kDLCUDA.html |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDAHost.html     |    2 +
 .../ffi/constant.DLDeviceType_kDLCUDAManaged.html  |    2 +
 .../ffi/constant.DLDeviceType_kDLExtDev.html       |    4 +
 .../ffi/constant.DLDeviceType_kDLHexagon.html      |    2 +
 .../ffi/constant.DLDeviceType_kDLMetal.html        |    2 +
 .../ffi/constant.DLDeviceType_kDLOneAPI.html       |    4 +
 .../ffi/constant.DLDeviceType_kDLOpenCL.html       |    2 +
 .../tvm_sys/ffi/constant.DLDeviceType_kDLROCM.html |    2 +
 .../ffi/constant.DLDeviceType_kDLROCMHost.html     |    2 +
 .../tvm_sys/ffi/constant.DLDeviceType_kDLVPI.html  |    2 +
 .../ffi/constant.DLDeviceType_kDLVulkan.html       |    2 +
 .../ffi/constant.DLDeviceType_kDLWebGPU.html       |    2 +
 .../tvm_sys/ffi/constant.DLPACK_ABI_VERSION.html   |    1 +
 .../rust/tvm_sys/ffi/constant.DLPACK_VERSION.html  |    1 +
 docs/api/rust/tvm_sys/ffi/constant.INT16_MAX.html  |    1 +
 docs/api/rust/tvm_sys/ffi/constant.INT16_MIN.html  |    1 +
 docs/api/rust/tvm_sys/ffi/constant.INT32_MAX.html  |    1 +
 docs/api/rust/tvm_sys/ffi/constant.INT32_MIN.html  |    1 +
 docs/api/rust/tvm_sys/ffi/constant.INT8_MAX.html   |    1 +
 docs/api/rust/tvm_sys/ffi/constant.INT8_MIN.html   |    1 +
 docs/api/rust/tvm_sys/ffi/constant.INTPTR_MAX.html |    1 +
 docs/api/rust/tvm_sys/ffi/constant.INTPTR_MIN.html |    1 +
 .../rust/tvm_sys/ffi/constant.INT_FAST16_MAX.html  |    1 +
 .../rust/tvm_sys/ffi/constant.INT_FAST16_MIN.html  |    1 +
 .../rust/tvm_sys/ffi/constant.INT_FAST32_MAX.html  |    1 +
 .../rust/tvm_sys/ffi/constant.INT_FAST32_MIN.html  |    1 +
 .../rust/tvm_sys/ffi/constant.INT_FAST8_MAX.html   |    1 +
 .../rust/tvm_sys/ffi/constant.INT_FAST8_MIN.html   |    1 +
 .../rust/tvm_sys/ffi/constant.INT_LEAST16_MAX.html |    1 +
 .../rust/tvm_sys/ffi/constant.INT_LEAST16_MIN.html |    1 +
 .../rust/tvm_sys/ffi/constant.INT_LEAST32_MAX.html |    1 +
 .../rust/tvm_sys/ffi/constant.INT_LEAST32_MIN.html |    1 +
 .../rust/tvm_sys/ffi/constant.INT_LEAST8_MAX.html  |    1 +
 .../rust/tvm_sys/ffi/constant.INT_LEAST8_MIN.html  |    1 +
 .../api/rust/tvm_sys/ffi/constant.PTRDIFF_MAX.html |    1 +
 .../api/rust/tvm_sys/ffi/constant.PTRDIFF_MIN.html |    1 +
 .../rust/tvm_sys/ffi/constant.SIG_ATOMIC_MAX.html  |    1 +
 .../rust/tvm_sys/ffi/constant.SIG_ATOMIC_MIN.html  |    1 +
 docs/api/rust/tvm_sys/ffi/constant.SIZE_MAX.html   |    1 +
 .../ffi/constant.TVMArgTypeCode_kDLDevice.html     |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMArgFloat.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMArgInt.html    |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMBytes.html     |    1 +
 ...constant.TVMArgTypeCode_kTVMDLTensorHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMDataType.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMExtBegin.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMExtEnd.html    |    1 +
 .../constant.TVMArgTypeCode_kTVMExtReserveEnd.html |    1 +
 .../constant.TVMArgTypeCode_kTVMModuleHandle.html  |    1 +
 .../constant.TVMArgTypeCode_kTVMNDArrayHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNNVMFirst.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNNVMLast.html  |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMNullptr.html   |    1 +
 .../constant.TVMArgTypeCode_kTVMObjectHandle.html  |    1 +
 ...tant.TVMArgTypeCode_kTVMObjectRValueRefArg.html |    1 +
 .../constant.TVMArgTypeCode_kTVMOpaqueHandle.html  |    1 +
 ...nstant.TVMArgTypeCode_kTVMPackedFuncHandle.html |    1 +
 .../ffi/constant.TVMArgTypeCode_kTVMStr.html       |    1 +
 ...tant.TVMDeviceExtType_TVMDeviceExtType_End.html |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLAOCL.html     |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLMicroDev.html |    1 +
 .../ffi/constant.TVMDeviceExtType_kDLSDAccel.html  |    1 +
 .../ffi/constant.TVMDeviceExtType_kOpenGL.html     |    1 +
 .../api/rust/tvm_sys/ffi/constant.TVM_VERSION.html |    1 +
 docs/api/rust/tvm_sys/ffi/constant.UINT16_MAX.html |    1 +
 docs/api/rust/tvm_sys/ffi/constant.UINT32_MAX.html |    1 +
 docs/api/rust/tvm_sys/ffi/constant.UINT8_MAX.html  |    1 +
 .../api/rust/tvm_sys/ffi/constant.UINTPTR_MAX.html |    1 +
 .../rust/tvm_sys/ffi/constant.UINT_FAST16_MAX.html |    1 +
 .../rust/tvm_sys/ffi/constant.UINT_FAST32_MAX.html |    1 +
 .../rust/tvm_sys/ffi/constant.UINT_FAST8_MAX.html  |    1 +
 .../tvm_sys/ffi/constant.UINT_LEAST16_MAX.html     |    1 +
 .../tvm_sys/ffi/constant.UINT_LEAST32_MAX.html     |    1 +
 .../rust/tvm_sys/ffi/constant.UINT_LEAST8_MAX.html |    1 +
 docs/api/rust/tvm_sys/ffi/constant.WINT_MAX.html   |    1 +
 docs/api/rust/tvm_sys/ffi/constant.WINT_MIN.html   |    1 +
 .../rust/tvm_sys/ffi/constant._ATFILE_SOURCE.html  |    1 +
 .../tvm_sys/ffi/constant._BITS_STDINT_INTN_H.html  |    1 +
 .../tvm_sys/ffi/constant._BITS_STDINT_UINTN_H.html |    1 +
 .../rust/tvm_sys/ffi/constant._BITS_TIME64_H.html  |    1 +
 .../tvm_sys/ffi/constant._BITS_TYPESIZES_H.html    |    1 +
 .../rust/tvm_sys/ffi/constant._BITS_TYPES_H.html   |    1 +
 .../rust/tvm_sys/ffi/constant._BITS_WCHAR_H.html   |    1 +
 .../rust/tvm_sys/ffi/constant._DEFAULT_SOURCE.html |    1 +
 .../api/rust/tvm_sys/ffi/constant._FEATURES_H.html |    1 +
 .../rust/tvm_sys/ffi/constant._POSIX_C_SOURCE.html |    1 +
 .../rust/tvm_sys/ffi/constant._POSIX_SOURCE.html   |    1 +
 .../rust/tvm_sys/ffi/constant._STDC_PREDEF_H.html  |    1 +
 docs/api/rust/tvm_sys/ffi/constant._STDINT_H.html  |    1 +
 .../rust/tvm_sys/ffi/constant._SYS_CDEFS_H.html    |    1 +
 .../rust/tvm_sys/ffi/constant.__FD_SETSIZE.html    |    1 +
 .../rust/tvm_sys/ffi/constant.__GLIBC_MINOR__.html |    1 +
 .../ffi/constant.__GLIBC_USE_DEPRECATED_GETS.html  |    1 +
 .../ffi/constant.__GLIBC_USE_DEPRECATED_SCANF.html |    1 +
 .../constant.__GLIBC_USE_IEC_60559_BFP_EXT.html    |    1 +
 ...constant.__GLIBC_USE_IEC_60559_BFP_EXT_C2X.html |    1 +
 .../ffi/constant.__GLIBC_USE_IEC_60559_EXT.html    |    1 +
 .../constant.__GLIBC_USE_IEC_60559_FUNCS_EXT.html  |    1 +
 ...nstant.__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X.html |    1 +
 .../constant.__GLIBC_USE_IEC_60559_TYPES_EXT.html  |    1 +
 .../tvm_sys/ffi/constant.__GLIBC_USE_ISOC2X.html   |    1 +
 .../tvm_sys/ffi/constant.__GLIBC_USE_LIB_EXT2.html |    1 +
 docs/api/rust/tvm_sys/ffi/constant.__GLIBC__.html  |    1 +
 .../rust/tvm_sys/ffi/constant.__GNU_LIBRARY__.html |    1 +
 .../ffi/constant.__HAVE_GENERIC_SELECTION.html     |    1 +
 .../ffi/constant.__INO_T_MATCHES_INO64_T.html      |    1 +
 ...ant.__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64.html |    1 +
 ...nstant.__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI.html |    1 +
 .../ffi/constant.__OFF_T_MATCHES_OFF64_T.html      |    1 +
 .../ffi/constant.__RLIM_T_MATCHES_RLIM64_T.html    |    1 +
 .../ffi/constant.__STATFS_MATCHES_STATFS64.html    |    1 +
 .../ffi/constant.__STDC_IEC_559_COMPLEX__.html     |    1 +
 .../tvm_sys/ffi/constant.__STDC_IEC_559__.html     |    1 +
 .../ffi/constant.__STDC_IEC_60559_BFP__.html       |    1 +
 .../ffi/constant.__STDC_IEC_60559_COMPLEX__.html   |    1 +
 .../tvm_sys/ffi/constant.__STDC_ISO_10646__.html   |    1 +
 .../tvm_sys/ffi/constant.__SYSCALL_WORDSIZE.html   |    1 +
 docs/api/rust/tvm_sys/ffi/constant.__TIMESIZE.html |    1 +
 .../rust/tvm_sys/ffi/constant.__USE_ATFILE.html    |    1 +
 .../tvm_sys/ffi/constant.__USE_FORTIFY_LEVEL.html  |    1 +
 .../rust/tvm_sys/ffi/constant.__USE_ISOC11.html    |    1 +
 .../rust/tvm_sys/ffi/constant.__USE_ISOC95.html    |    1 +
 .../rust/tvm_sys/ffi/constant.__USE_ISOC99.html    |    1 +
 docs/api/rust/tvm_sys/ffi/constant.__USE_MISC.html |    1 +
 .../api/rust/tvm_sys/ffi/constant.__USE_POSIX.html |    1 +
 .../tvm_sys/ffi/constant.__USE_POSIX199309.html    |    1 +
 .../tvm_sys/ffi/constant.__USE_POSIX199506.html    |    1 +
 .../rust/tvm_sys/ffi/constant.__USE_POSIX2.html    |    1 +
 .../ffi/constant.__USE_POSIX_IMPLICITLY.html       |    1 +
 .../rust/tvm_sys/ffi/constant.__USE_XOPEN2K.html   |    1 +
 .../rust/tvm_sys/ffi/constant.__USE_XOPEN2K8.html  |    1 +
 docs/api/rust/tvm_sys/ffi/constant.__WORDSIZE.html |    1 +
 .../ffi/constant.__WORDSIZE_TIME64_COMPAT32.html   |    1 +
 .../constant.__glibc_c99_flexarr_available.html    |    1 +
 .../rust/tvm_sys/ffi/fn.TVMAPISetLastError.html    |    4 +
 docs/api/rust/tvm_sys/ffi/fn.TVMArrayAlloc.html    |   21 +
 .../rust/tvm_sys/ffi/fn.TVMArrayCopyFromBytes.html |   10 +
 .../rust/tvm_sys/ffi/fn.TVMArrayCopyFromTo.html    |   10 +
 .../rust/tvm_sys/ffi/fn.TVMArrayCopyToBytes.html   |   10 +
 docs/api/rust/tvm_sys/ffi/fn.TVMArrayFree.html     |    4 +
 .../rust/tvm_sys/ffi/fn.TVMArrayFromDLPack.html    |    9 +
 docs/api/rust/tvm_sys/ffi/fn.TVMArrayToDLPack.html |    9 +
 .../tvm_sys/ffi/fn.TVMBackendAllocWorkspace.html   |   17 +
 .../tvm_sys/ffi/fn.TVMBackendFreeWorkspace.html    |   11 +
 .../tvm_sys/ffi/fn.TVMBackendGetFuncFromEnv.html   |   12 +
 .../tvm_sys/ffi/fn.TVMBackendParallelBarrier.html  |    8 +
 .../tvm_sys/ffi/fn.TVMBackendParallelLaunch.html   |   11 +
 .../tvm_sys/ffi/fn.TVMBackendRegisterEnvCAPI.html  |   11 +
 .../ffi/fn.TVMBackendRegisterSystemLibSymbol.html  |    8 +
 .../api/rust/tvm_sys/ffi/fn.TVMBackendRunOnce.html |   14 +
 docs/api/rust/tvm_sys/ffi/fn.TVMByteArrayFree.html |    6 +
 .../api/rust/tvm_sys/ffi/fn.TVMCFuncSetReturn.html |   13 +
 docs/api/rust/tvm_sys/ffi/fn.TVMCbArgToReturn.html |   10 +
 .../ffi/fn.TVMDLManagedTensorCallDeleter.html      |    5 +
 .../tvm_sys/ffi/fn.TVMDeviceAllocDataSpace.html    |   15 +
 .../ffi/fn.TVMDeviceAllocDataSpaceWithScope.html   |   19 +
 .../tvm_sys/ffi/fn.TVMDeviceCopyDataFromTo.html    |   12 +
 .../tvm_sys/ffi/fn.TVMDeviceFreeDataSpace.html     |    8 +
 docs/api/rust/tvm_sys/ffi/fn.TVMFuncCall.html      |   22 +
 .../tvm_sys/ffi/fn.TVMFuncCreateFromCFunc.html     |   13 +
 docs/api/rust/tvm_sys/ffi/fn.TVMFuncFree.html      |    4 +
 docs/api/rust/tvm_sys/ffi/fn.TVMFuncGetGlobal.html |    9 +
 .../tvm_sys/ffi/fn.TVMFuncListGlobalNames.html     |    8 +
 .../rust/tvm_sys/ffi/fn.TVMFuncRegisterGlobal.html |   10 +
 .../rust/tvm_sys/ffi/fn.TVMFuncRemoveGlobal.html   |    5 +
 docs/api/rust/tvm_sys/ffi/fn.TVMGetLastError.html  |    7 +
 docs/api/rust/tvm_sys/ffi/fn.TVMModFree.html       |    8 +
 .../api/rust/tvm_sys/ffi/fn.TVMModGetFunction.html |   12 +
 docs/api/rust/tvm_sys/ffi/fn.TVMModImport.html     |    9 +
 .../rust/tvm_sys/ffi/fn.TVMModLoadFromFile.html    |   12 +
 .../rust/tvm_sys/ffi/fn.TVMObjectDerivedFrom.html  |   10 +
 docs/api/rust/tvm_sys/ffi/fn.TVMObjectFree.html    |    6 +
 .../rust/tvm_sys/ffi/fn.TVMObjectGetTypeIndex.html |    8 +
 docs/api/rust/tvm_sys/ffi/fn.TVMObjectRetain.html  |    7 +
 .../tvm_sys/ffi/fn.TVMObjectTypeIndex2Key.html     |    8 +
 .../tvm_sys/ffi/fn.TVMObjectTypeKey2Index.html     |    8 +
 docs/api/rust/tvm_sys/ffi/fn.TVMSetStream.html     |   13 +
 docs/api/rust/tvm_sys/ffi/fn.TVMStreamCreate.html  |   10 +
 docs/api/rust/tvm_sys/ffi/fn.TVMStreamFree.html    |   10 +
 .../tvm_sys/ffi/fn.TVMStreamStreamSynchronize.html |   12 +
 docs/api/rust/tvm_sys/ffi/fn.TVMSynchronize.html   |   10 +
 docs/api/rust/tvm_sys/ffi/index.html               |  116 +
 docs/api/rust/tvm_sys/ffi/sidebar-items.js         |    1 +
 docs/api/rust/tvm_sys/ffi/struct.DLDataType.html   |   33 +
 docs/api/rust/tvm_sys/ffi/struct.DLDevice.html     |   22 +
 .../rust/tvm_sys/ffi/struct.DLManagedTensor.html   |   30 +
 docs/api/rust/tvm_sys/ffi/struct.DLTensor.html     |   51 +
 docs/api/rust/tvm_sys/ffi/struct.TVMByteArray.html |   19 +
 .../tvm_sys/ffi/struct.TVMParallelGroupEnv.html    |   20 +
 docs/api/rust/tvm_sys/ffi/struct.__fsid_t.html     |   16 +
 .../rust/tvm_sys/ffi/type.BackendPackedCFunc.html  |    1 +
 docs/api/rust/tvm_sys/ffi/type.DLDataTypeCode.html |    2 +
 docs/api/rust/tvm_sys/ffi/type.DLDeviceType.html   |    1 +
 .../rust/tvm_sys/ffi/type.FTVMParallelLambda.html  |    5 +
 docs/api/rust/tvm_sys/ffi/type.TVMArgTypeCode.html |   13 +
 docs/api/rust/tvm_sys/ffi/type.TVMArrayHandle.html |    2 +
 .../tvm_sys/ffi/type.TVMBackendPackedCFunc.html    |    9 +
 .../rust/tvm_sys/ffi/type.TVMDeviceExtType.html    |    1 +
 .../tvm_sys/ffi/type.TVMExtensionFuncDeclarer.html |    6 +
 .../rust/tvm_sys/ffi/type.TVMFunctionHandle.html   |    2 +
 .../api/rust/tvm_sys/ffi/type.TVMModuleHandle.html |    2 +
 .../api/rust/tvm_sys/ffi/type.TVMObjectHandle.html |    2 +
 docs/api/rust/tvm_sys/ffi/type.TVMPackedCFunc.html |    9 +
 .../tvm_sys/ffi/type.TVMPackedCFuncFinalizer.html  |    3 +
 .../rust/tvm_sys/ffi/type.TVMRetValueHandle.html   |    2 +
 .../api/rust/tvm_sys/ffi/type.TVMStreamHandle.html |    3 +
 docs/api/rust/tvm_sys/ffi/type.__blkcnt64_t.html   |    1 +
 docs/api/rust/tvm_sys/ffi/type.__blkcnt_t.html     |    1 +
 docs/api/rust/tvm_sys/ffi/type.__blksize_t.html    |    1 +
 docs/api/rust/tvm_sys/ffi/type.__caddr_t.html      |    1 +
 docs/api/rust/tvm_sys/ffi/type.__clock_t.html      |    1 +
 docs/api/rust/tvm_sys/ffi/type.__clockid_t.html    |    1 +
 docs/api/rust/tvm_sys/ffi/type.__daddr_t.html      |    1 +
 docs/api/rust/tvm_sys/ffi/type.__dev_t.html        |    1 +
 docs/api/rust/tvm_sys/ffi/type.__fsblkcnt64_t.html |    1 +
 docs/api/rust/tvm_sys/ffi/type.__fsblkcnt_t.html   |    1 +
 docs/api/rust/tvm_sys/ffi/type.__fsfilcnt64_t.html |    1 +
 docs/api/rust/tvm_sys/ffi/type.__fsfilcnt_t.html   |    1 +
 docs/api/rust/tvm_sys/ffi/type.__fsword_t.html     |    1 +
 docs/api/rust/tvm_sys/ffi/type.__gid_t.html        |    1 +
 docs/api/rust/tvm_sys/ffi/type.__id_t.html         |    1 +
 docs/api/rust/tvm_sys/ffi/type.__ino64_t.html      |    1 +
 docs/api/rust/tvm_sys/ffi/type.__ino_t.html        |    1 +
 docs/api/rust/tvm_sys/ffi/type.__int16_t.html      |    1 +
 docs/api/rust/tvm_sys/ffi/type.__int32_t.html      |    1 +
 docs/api/rust/tvm_sys/ffi/type.__int64_t.html      |    1 +
 docs/api/rust/tvm_sys/ffi/type.__int8_t.html       |    1 +
 .../api/rust/tvm_sys/ffi/type.__int_least16_t.html |    1 +
 .../api/rust/tvm_sys/ffi/type.__int_least32_t.html |    1 +
 .../api/rust/tvm_sys/ffi/type.__int_least64_t.html |    1 +
 docs/api/rust/tvm_sys/ffi/type.__int_least8_t.html |    1 +
 docs/api/rust/tvm_sys/ffi/type.__intmax_t.html     |    1 +
 docs/api/rust/tvm_sys/ffi/type.__intptr_t.html     |    1 +
 docs/api/rust/tvm_sys/ffi/type.__key_t.html        |    1 +
 docs/api/rust/tvm_sys/ffi/type.__loff_t.html       |    1 +
 docs/api/rust/tvm_sys/ffi/type.__mode_t.html       |    1 +
 docs/api/rust/tvm_sys/ffi/type.__nlink_t.html      |    1 +
 docs/api/rust/tvm_sys/ffi/type.__off64_t.html      |    1 +
 docs/api/rust/tvm_sys/ffi/type.__off_t.html        |    1 +
 docs/api/rust/tvm_sys/ffi/type.__pid_t.html        |    1 +
 docs/api/rust/tvm_sys/ffi/type.__quad_t.html       |    1 +
 docs/api/rust/tvm_sys/ffi/type.__rlim64_t.html     |    1 +
 docs/api/rust/tvm_sys/ffi/type.__rlim_t.html       |    1 +
 docs/api/rust/tvm_sys/ffi/type.__sig_atomic_t.html |    1 +
 docs/api/rust/tvm_sys/ffi/type.__socklen_t.html    |    1 +
 docs/api/rust/tvm_sys/ffi/type.__ssize_t.html      |    1 +
 .../api/rust/tvm_sys/ffi/type.__suseconds64_t.html |    1 +
 docs/api/rust/tvm_sys/ffi/type.__suseconds_t.html  |    1 +
 .../rust/tvm_sys/ffi/type.__syscall_slong_t.html   |    1 +
 .../rust/tvm_sys/ffi/type.__syscall_ulong_t.html   |    1 +
 docs/api/rust/tvm_sys/ffi/type.__time_t.html       |    1 +
 docs/api/rust/tvm_sys/ffi/type.__timer_t.html      |    1 +
 docs/api/rust/tvm_sys/ffi/type.__u_char.html       |    1 +
 docs/api/rust/tvm_sys/ffi/type.__u_int.html        |    1 +
 docs/api/rust/tvm_sys/ffi/type.__u_long.html       |    1 +
 docs/api/rust/tvm_sys/ffi/type.__u_quad_t.html     |    1 +
 docs/api/rust/tvm_sys/ffi/type.__u_short.html      |    1 +
 docs/api/rust/tvm_sys/ffi/type.__uid_t.html        |    1 +
 docs/api/rust/tvm_sys/ffi/type.__uint16_t.html     |    1 +
 docs/api/rust/tvm_sys/ffi/type.__uint32_t.html     |    1 +
 docs/api/rust/tvm_sys/ffi/type.__uint64_t.html     |    1 +
 docs/api/rust/tvm_sys/ffi/type.__uint8_t.html      |    1 +
 .../rust/tvm_sys/ffi/type.__uint_least16_t.html    |    1 +
 .../rust/tvm_sys/ffi/type.__uint_least32_t.html    |    1 +
 .../rust/tvm_sys/ffi/type.__uint_least64_t.html    |    1 +
 .../api/rust/tvm_sys/ffi/type.__uint_least8_t.html |    1 +
 docs/api/rust/tvm_sys/ffi/type.__uintmax_t.html    |    1 +
 docs/api/rust/tvm_sys/ffi/type.__useconds_t.html   |    1 +
 docs/api/rust/tvm_sys/ffi/type.int_fast16_t.html   |    1 +
 docs/api/rust/tvm_sys/ffi/type.int_fast32_t.html   |    1 +
 docs/api/rust/tvm_sys/ffi/type.int_fast64_t.html   |    1 +
 docs/api/rust/tvm_sys/ffi/type.int_fast8_t.html    |    1 +
 docs/api/rust/tvm_sys/ffi/type.int_least16_t.html  |    1 +
 docs/api/rust/tvm_sys/ffi/type.int_least32_t.html  |    1 +
 docs/api/rust/tvm_sys/ffi/type.int_least64_t.html  |    1 +
 docs/api/rust/tvm_sys/ffi/type.int_least8_t.html   |    1 +
 docs/api/rust/tvm_sys/ffi/type.intmax_t.html       |    1 +
 docs/api/rust/tvm_sys/ffi/type.size_t.html         |    1 +
 docs/api/rust/tvm_sys/ffi/type.tvm_index_t.html    |    2 +
 docs/api/rust/tvm_sys/ffi/type.uint_fast16_t.html  |    1 +
 docs/api/rust/tvm_sys/ffi/type.uint_fast32_t.html  |    1 +
 docs/api/rust/tvm_sys/ffi/type.uint_fast64_t.html  |    1 +
 docs/api/rust/tvm_sys/ffi/type.uint_fast8_t.html   |    1 +
 docs/api/rust/tvm_sys/ffi/type.uint_least16_t.html |    1 +
 docs/api/rust/tvm_sys/ffi/type.uint_least32_t.html |    1 +
 docs/api/rust/tvm_sys/ffi/type.uint_least64_t.html |    1 +
 docs/api/rust/tvm_sys/ffi/type.uint_least8_t.html  |    1 +
 docs/api/rust/tvm_sys/ffi/type.uintmax_t.html      |    1 +
 docs/api/rust/tvm_sys/ffi/type.wchar_t.html        |    1 +
 docs/api/rust/tvm_sys/ffi/union.TVMValue.html      |   23 +
 docs/api/rust/tvm_sys/index.html                   |    7 +
 docs/api/rust/tvm_sys/macro.call_packed!.html      |   11 +
 docs/api/rust/tvm_sys/macro.call_packed.html       |    7 +
 docs/api/rust/tvm_sys/macro.try_downcast!.html     |   11 +
 docs/api/rust/tvm_sys/macro.try_downcast.html      |    3 +
 .../rust/tvm_sys/packed_func/enum.ArgValue.html    |   32 +
 .../rust/tvm_sys/packed_func/enum.RetValue.html    |   42 +
 docs/api/rust/tvm_sys/packed_func/index.html       |    3 +
 docs/api/rust/tvm_sys/packed_func/sidebar-items.js |    1 +
 .../rust/tvm_sys/packed_func/trait.PackedFunc.html |    2 +
 docs/api/rust/tvm_sys/sidebar-items.js             |    1 +
 docs/api/rust/tvm_sys/value/index.html             |    1 +
 docs/api/rust/tvm_sys/value/sidebar-items.js       |    1 +
 .../value/struct.UnsupportedDeviceError.html       |   14 +
 docs/api/rust/tyck/all.html                        |    1 +
 docs/api/rust/tyck/fn.main.html                    |    1 +
 docs/api/rust/tyck/index.html                      |    1 +
 docs/api/rust/tyck/sidebar-items.js                |    1 +
 docs/api/rust/tyck/struct.Opt.html                 |   28 +
 docs/commit_hash                                   |    2 +-
 docs/how_to/compile_models/from_darknet.html       |    2 +-
 docs/how_to/compile_models/from_mxnet.html         |    2 +-
 docs/how_to/compile_models/from_oneflow.html       |   15 +-
 docs/how_to/compile_models/from_paddle.html        |    2 +-
 docs/how_to/compile_models/from_pytorch.html       |   14 +-
 docs/how_to/compile_models/from_tensorflow.html    |    2 +-
 docs/how_to/compile_models/sg_execution_times.html |   26 +-
 .../deploy_models/deploy_model_on_adreno.html      |    4 +-
 .../deploy_models/deploy_model_on_adreno_tvmc.html |   33 +-
 .../deploy_models/deploy_model_on_android.html     |    2 +-
 .../deploy_object_detection_pytorch.html           |   57 +-
 docs/how_to/deploy_models/deploy_prequantized.html |   11 +-
 .../deploy_models/deploy_prequantized_tflite.html  |    2 +-
 docs/how_to/deploy_models/deploy_quantized.html    |    2 +-
 docs/how_to/deploy_models/sg_execution_times.html  |   24 +-
 .../extend_tvm/bring_your_own_datatypes.html       |    2 +-
 docs/how_to/extend_tvm/sg_execution_times.html     |   10 +-
 docs/how_to/extend_tvm/use_pass_instrument.html    |   16 +-
 docs/how_to/optimize_operators/opt_conv_cuda.html  |    2 +-
 .../optimize_operators/opt_conv_tensorcore.html    |    2 +-
 docs/how_to/optimize_operators/opt_gemm.html       |   16 +-
 .../optimize_operators/sg_execution_times.html     |    8 +-
 .../sg_execution_times.html                        |   12 +-
 .../tune_conv2d_layer_cuda.html                    |    2 +-
 .../tune_with_autoscheduler/tune_network_cuda.html |    4 +-
 .../tune_with_autoscheduler/tune_network_x86.html  |    4 +-
 .../tune_with_autotvm/sg_execution_times.html      |    8 +-
 .../how_to/tune_with_autotvm/tune_conv2d_cuda.html |    2 +-
 docs/how_to/work_with_microtvm/micro_autotune.html |   18 +-
 docs/how_to/work_with_microtvm/micro_pytorch.html  |    5 +-
 docs/how_to/work_with_microtvm/micro_train.html    |   16 +-
 .../work_with_microtvm/sg_execution_times.html     |   14 +-
 .../how_to/work_with_relay/sg_execution_times.html |   10 +-
 docs/how_to/work_with_schedules/intrin_math.html   |    2 +-
 .../work_with_schedules/sg_execution_times.html    |   16 +-
 docs/reference/api/links.html                      |    1 +
 docs/reference/api/python/auto_scheduler.html      |    4 +-
 .../api/typedoc/classes/bytestreamreader.html      |   12 +-
 .../api/typedoc/classes/cachedcallstack.html       |   34 +-
 docs/reference/api/typedoc/classes/dldatatype.html |   12 +-
 docs/reference/api/typedoc/classes/dldevice.html   |   10 +-
 .../reference/api/typedoc/classes/environment.html |   12 +-
 docs/reference/api/typedoc/classes/ffilibrary.html |   20 +-
 docs/reference/api/typedoc/classes/instance.html   |   58 +-
 docs/reference/api/typedoc/classes/memory.html     |   34 +-
 docs/reference/api/typedoc/classes/module.html     |   10 +-
 docs/reference/api/typedoc/classes/ndarray.html    |   22 +-
 .../api/typedoc/classes/packedfunccell.html        |    6 +-
 docs/reference/api/typedoc/classes/rpcserver.html  |   14 +-
 .../api/typedoc/classes/runtimecontext.html        |   22 +-
 docs/reference/api/typedoc/classes/scalar.html     |    6 +-
 docs/reference/api/typedoc/classes/tvmarray.html   |   16 +-
 docs/reference/api/typedoc/classes/tvmobject.html  |   12 +-
 .../api/typedoc/classes/webgpucontext.html         |   12 +-
 docs/reference/api/typedoc/enums/argtypecode.html  |   30 +-
 .../api/typedoc/enums/aynccallbackcode.html        |    4 +-
 .../api/typedoc/enums/dldatatypecode.html          |    8 +-
 .../api/typedoc/enums/rpcserverstate.html          |   12 +-
 docs/reference/api/typedoc/enums/sizeof.html       |   18 +-
 docs/reference/api/typedoc/index.html              |  124 +-
 .../api/typedoc/interfaces/disposable.html         |    2 +-
 .../api/typedoc/interfaces/functioninfo.html       |    6 +-
 .../api/typedoc/interfaces/libraryprovider.html    |    4 +-
 docs/searchindex.js                                |    2 +-
 .../vta/tutorials/autotvm/sg_execution_times.html  |    6 +-
 .../tutorials/frontend/deploy_classification.html  |    4 +-
 .../vta/tutorials/frontend/deploy_detection.html   |    4 +-
 .../vta/tutorials/frontend/sg_execution_times.html |    6 +-
 .../vta/tutorials/optimize/sg_execution_times.html |    4 +-
 docs/topic/vta/tutorials/sg_execution_times.html   |    4 +-
 docs/tutorial/auto_scheduler_matmul_x86.html       |    4 +-
 docs/tutorial/autotvm_matmul_x86.html              |   20 +-
 docs/tutorial/autotvm_relay_x86.html               |  264 +--
 docs/tutorial/cross_compilation_and_rpc.html       |    2 +-
 docs/tutorial/intro_topi.html                      |    2 +-
 docs/tutorial/sg_execution_times.html              |   18 +-
 docs/tutorial/tensor_expr_get_started.html         |   46 +-
 2750 files changed, 46129 insertions(+), 846 deletions(-)

diff --git a/docs/_sources/how_to/compile_models/from_darknet.rst.txt b/docs/_sources/how_to/compile_models/from_darknet.rst.txt
index 895372e91c..fb3d574c10 100644
--- a/docs/_sources/how_to/compile_models/from_darknet.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_darknet.rst.txt
@@ -318,7 +318,7 @@ The process is no different from other examples.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  34.227 seconds)
+   **Total running time of the script:** ( 1 minutes  33.473 seconds)
 
 
 .. _sphx_glr_download_how_to_compile_models_from_darknet.py:
diff --git a/docs/_sources/how_to/compile_models/from_mxnet.rst.txt b/docs/_sources/how_to/compile_models/from_mxnet.rst.txt
index caa9ea6074..c47c80cc0d 100644
--- a/docs/_sources/how_to/compile_models/from_mxnet.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_mxnet.rst.txt
@@ -116,7 +116,7 @@ In this section, we download a pretrained imagenet model and classify an image.
 
  .. code-block:: none
 
-    Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zip23872b7a-9192-443a-9a95-68de7089e1ed from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
+    Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zip5c8ef973-334a-494d-a2d9-9ebe058db3b1 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
     x (1, 3, 224, 224)
 
 
diff --git a/docs/_sources/how_to/compile_models/from_oneflow.rst.txt b/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
index 1b525f3ee8..eb6a24288a 100644
--- a/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
@@ -121,7 +121,7 @@ Load a pretrained OneFlow model and save model
  .. code-block:: none
 
     Downloading: "https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/flowvision/classification/ResNet/resnet18.zip" to /workspace/.oneflow/flowvision_cache/resnet18.zip
-
      0%|          | 0.00/41.5M [00:00<?, ?B/s]
      6%|6         | 2.66M/41.5M [00:00<00:01, 26.3MB/s]
     19%|#9        | 7.99M/41.5M [00:00<00:00, 40.9MB/s]
     35%|###4      | 14.3M/41.5M [00:00<00:00, 37.7MB/s]
     43%|####3     | 18.0M/41.5M [00:00<00:00, 31.2MB/s]
     58%|#####7    | 24.0M/41.5M [00:00<00:00, 32.9MB/s]
     77%|#######7  | 32.0M/41.5M [00:00<00:00, 34.0MB/s]
     94%|#########4| 39.2M/41.5M [00:01<00:00, 42.5MB/s]
    100%|##########| 41.5M/41.5M [00:01<00:00, 37.7MB/s]
+
      0%|          | 0.00/41.5M [00:00<?, ?B/s]
     15%|#5        | 6.33M/41.5M [00:00<00:00, 53.9MB/s]
     28%|##7       | 11.5M/41.5M [00:00<00:00, 36.2MB/s]
     39%|###8      | 16.0M/41.5M [00:00<00:00, 37.2MB/s]
     58%|#####7    | 24.0M/41.5M [00:00<00:00, 38.3MB/s]
     77%|#######7  | 32.0M/41.5M [00:00<00:00, 43.7MB/s]
     92%|#########2| 38.3M/41.5M [00:00<00:00, 43.1MB/s]
    100%|##########| 41.5M/41.5M [00:01<00:00, 42.7MB/s]
 
 
 
diff --git a/docs/_sources/how_to/compile_models/from_paddle.rst.txt b/docs/_sources/how_to/compile_models/from_paddle.rst.txt
index 1bbf9c7c80..86b01ef1b8 100644
--- a/docs/_sources/how_to/compile_models/from_paddle.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_paddle.rst.txt
@@ -209,7 +209,7 @@ Look up prediction top 1 index in 1000 class synset.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  2.014 seconds)
+   **Total running time of the script:** ( 1 minutes  2.222 seconds)
 
 
 .. _sphx_glr_download_how_to_compile_models_from_paddle.py:
diff --git a/docs/_sources/how_to/compile_models/from_pytorch.rst.txt b/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
index aad1a1845c..ff4137eb2e 100644
--- a/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
@@ -101,7 +101,7 @@ Load a pretrained PyTorch model
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.
       warnings.warn(msg)
     Downloading: "https://download.pytorch.org/models/resnet18-f37072fd.pth" to /workspace/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth
-
      0%|          | 0.00/44.7M [00:00<?, ?B/s]
     18%|#7        | 7.99M/44.7M [00:00<00:01, 30.8MB/s]
     36%|###5      | 16.0M/44.7M [00:00<00:00, 40.5MB/s]
     59%|#####8    | 26.2M/44.7M [00:00<00:00, 59.8MB/s]
     74%|#######4  | 33.1M/44.7M [00:00<00:00, 42.6MB/s]
     90%|########9 | 40.0M/44.7M [00:01<00:00, 39.6MB/s]
    100%|##########| 44.7M/44.7M [00:01<00:00, 44.3MB/s]
+
      0%|          | 0.00/44.7M [00:00<?, ?B/s]
     18%|#7        | 7.99M/44.7M [00:00<00:01, 36.1MB/s]
     32%|###2      | 14.3M/44.7M [00:00<00:00, 45.2MB/s]
     43%|####2     | 19.0M/44.7M [00:00<00:00, 36.1MB/s]
     54%|#####3    | 24.0M/44.7M [00:00<00:00, 37.7MB/s]
     72%|#######1  | 32.0M/44.7M [00:00<00:00, 41.4MB/s]
     90%|########9 | 40.0M/44.7M [00:01<00:00, 41.4MB/s]
     99%|#########8| 44.2M/44.7M [00:01<00:00, 39.7MB/s]
    100%|##########| 44.7M/44.7M [00:01<00:00, 40.1MB/s]
 
 
 
diff --git a/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt b/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
index 53010e3c32..d4a2a31c8d 100644
--- a/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
@@ -430,7 +430,7 @@ Run the corresponding model on tensorflow
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  37.598 seconds)
+   **Total running time of the script:** ( 1 minutes  37.043 seconds)
 
 
 .. _sphx_glr_download_how_to_compile_models_from_tensorflow.py:
diff --git a/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt b/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
index 9f4489ead6..0de72d1b10 100644
--- a/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
@@ -5,26 +5,26 @@
 
 Computation times
 =================
-**07:22.893** total execution time for **how_to_compile_models** files:
+**07:20.131** total execution time for **how_to_compile_models** files:
 
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``) | 01:37.598 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``) | 01:37.043 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)       | 01:34.227 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)       | 01:33.473 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)         | 01:02.014 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)         | 01:02.222 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)       | 00:42.538 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)       | 00:41.784 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)         | 00:37.760 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)         | 00:37.134 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_mxnet.py` (``from_mxnet.py``)           | 00:35.546 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_mxnet.py` (``from_mxnet.py``)           | 00:35.136 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)       | 00:28.713 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)           | 00:28.820 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)           | 00:28.327 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)       | 00:28.315 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)         | 00:13.290 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)         | 00:13.346 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)             | 00:02.880 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)             | 00:02.858 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt
index 2460a7125f..c1d3fdac5a 100644
--- a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt
@@ -673,7 +673,7 @@ well as provides information about the model's performance
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-     4225.8621    4224.7345    4235.2978    4221.7412      3.7704                  
+     4236.3370    4236.1469    4243.3073    4230.6285      3.8175                  
 
 
 
@@ -681,7 +681,7 @@ well as provides information about the model's performance
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  20.707 seconds)
+   **Total running time of the script:** ( 1 minutes  20.415 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_model_on_adreno.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno_tvmc.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno_tvmc.rst.txt
index 31cc843d28..704d501bde 100644
--- a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno_tvmc.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno_tvmc.rst.txt
@@ -127,7 +127,7 @@ Make a Keras Resnet50 Model
  .. code-block:: none
 
     Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/resnet/resnet50_weights_tf_dim_ordering_tf_kernels.h5
-
         8192/102967424 [..............................] - ETA: 0s
      8380416/102967424 [=>............................] - ETA: 1s
     16482304/102967424 [===>..........................] - ETA: 0s
     17113088/102967424 [===>..........................] - ETA: 1s
     22216704/102967424 [=====>........................] - ETA: 0s
     25157632/102967424 [======>.......................] - ETA: 1s
     29720576/102967424 [=======>......................] - ETA: 0s
     33546240/102967424 [========>.....................] - ETA: 0s
 
     41934848/102967424 [===========>..................] - ETA: 0s
     50323456/102967424 [=============>................] - ETA: 0s
     56967168/102967424 [===============>..............] - ETA: 0s
     60260352/102967424 [================>.............] - ETA: 0s
     66813952/102967424 [==================>...........] - ETA: 0s
     69296128/102967424 [===================>..........] - ETA: 0s
     75202560/102967424 [====================>.........] - ETA: 0s
     75489280/102967424 [====================>.........] -
  ETA: 0s
     83877888/102967424 [=======================>......] - ETA: 0s
     92266496/102967424 [=========================>....] - ETA: 0s
    100646912/102967424 [============================>.] - ETA: 0s
    102967424/102967424 [==============================] - 1s 0us/step
+
         8192/102967424 [..............................] - ETA: 0s
       131072/102967424 [..............................] - ETA: 1:24
      6635520/102967424 [>.............................] - ETA: 2s  
      8380416/102967424 [=>............................] - ETA: 3s
     15024128/102967424 [===>..........................] - ETA: 2s
     16769024/102967424 [===>..........................] - ETA: 2s
     25157632/102967424 [======>.......................] - ETA: 1s
     33546240/102967424 [========>.....................] - ETA: 1s
 
     41025536/102967424 [==========>...................] - ETA: 1s
     41934848/102967424 [===========>..................] - ETA: 1s
     48578560/102967424 [=============>................] - ETA: 1s
     50323456/102967424 [=============>................] - ETA: 1s
     56786944/102967424 [===============>..............] - ETA: 0s
     58712064/102967424 [================>.............] - ETA: 0s
     64405504/102967424 [=================>............] - ETA: 0s
     67100672/102967424 [==================>........
 ...] - ETA: 0s
     69296128/102967424 [===================>..........] - ETA: 0s
     73744384/102967424 [====================>.........] - ETA: 0s
     75489280/102967424 [====================>.........] - ETA: 0s
     82124800/102967424 [======================>.......] - ETA: 0s
     83877888/102967424 [=======================>......] - ETA: 0s
     90521600/102967424 [=========================>....] - ETA: 0s
     92266496/102967424 [=========================>....] - ETA: 0s
     94461952/102
 967424 [==========================>...] - ETA: 0s
    100646912/102967424 [============================>.] - ETA: 0s
    102850560/102967424 [============================>.] - ETA: 0s
    102967424/102967424 [==============================] - 2s 0us/step
 
 
 
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
index 31a69c2360..8bcc124577 100644
--- a/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
@@ -437,7 +437,7 @@ Execute on TVM
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      16.0250      16.0721      17.0551      15.3638       0.4506                  
+      15.3623      15.3106      15.9169      15.0873       0.2372                  
 
 
 
diff --git a/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt b/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
index 5c2721ac3b..bbe4e84a42 100644
--- a/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
@@ -130,7 +130,7 @@ Load pre-trained maskrcnn from torchvision and do tracing
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=MaskRCNN_ResNet50_FPN_Weights.COCO_V1`. You can also use `weights=MaskRCNN_ResNet50_FPN_Weights.DEFAULT` to get the most up-to-date weights.
       warnings.warn(msg)
     Downloading: "https://download.pytorch.org/models/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth" to /workspace/.cache/torch/hub/checkpoints/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth
-
      0%|          | 0.00/170M [00:00<?, ?B/s]
      4%|3         | 6.30M/170M [00:00<00:04, 42.7MB/s]
      6%|6         | 10.4M/170M [00:00<00:04, 40.3MB/s]
      8%|8         | 14.3M/170M [00:00<00:04, 35.8MB/s]
     10%|#         | 17.7M/170M [00:00<00:04, 35.1MB/s]
     13%|#3        | 22.3M/170M [00:00<00:04, 31.2MB/s]
     15%|#4        | 25.4M/170M [00:00<00:05, 29.8MB/s]
     19%|#8        | 32.0M/170M [00:00<00:04, 33.2MB/s]
     24%|##3       | 40.0M/170M [00:01<00:03, 40.8MB/s]
     27%|##7       | 46.3M/170M [00:01<00:02, 46.2MB/s]
     31%|###1      | 52.7M/170M [00:01<00:02, 51.4MB/s]
     34%|###4      | 57.8M/170M [00:01<00:02, 51.6MB/s]
     38%|###7      | 64.0M/170M [00:01<00:02, 49.3MB/s]
     42%|####2     | 72.0M/170M [00:01<00:01, 51.8MB/s]
     47%|####7     | 80.0M/170M [00:01<00:01, 53.0MB/s]
     52%|#####1    | 88.0M/170M [00:02<00:01, 54.2MB/s]
     57%|#####6    | 96.0M/170M [00:02<00:01, 45.4MB/s]
     61%|######1   | 104M/170M [00:02<00:01, 42.0MB/s
 ] 
     66%|######5   | 112M/170M [00:02<00:01, 43.5MB/s]
     73%|#######2  | 123M/170M [00:02<00:00, 57.7MB/s]
     76%|#######6  | 130M/170M [00:03<00:01, 38.9MB/s]
     79%|#######9  | 135M/170M [00:03<00:00, 37.4MB/s]
     82%|########2 | 139M/170M [00:03<00:00, 38.8MB/s]
     85%|########4 | 144M/170M [00:03<00:00, 37.0MB/s]
     89%|########9 | 152M/170M [00:03<00:00, 40.1MB/s]
     94%|#########4| 160M/170M [00:03<00:00, 41.7MB/s]
     99%|#########8| 168M/170M [00:04<00:00, 47.5MB/s]
    100%|##########| 170M/170M [00:04<00:00, 43.8MB/s]
+
      0%|          | 0.00/170M [00:00<?, ?B/s]
      4%|3         | 6.30M/170M [00:00<00:02, 60.4MB/s]
      7%|7         | 12.1M/170M [00:00<00:03, 43.4MB/s]
     10%|9         | 16.4M/170M [00:00<00:05, 31.4MB/s]
     13%|#3        | 22.3M/170M [00:00<00:05, 30.3MB/s]
     15%|#5        | 26.0M/170M [00:00<00:04, 32.2MB/s]
     19%|#8        | 32.0M/170M [00:01<00:05, 27.9MB/s]
     24%|##3       | 40.0M/170M [00:01<00:03, 35.9MB/s]
     28%|##8       | 48.0M/170M [00:01<00:03, 35.1MB/s]
     31%|###       | 52.2M/170M [00:01<00:03, 36.7MB/s]
     36%|###5      | 61.1M/170M [00:01<00:02, 48.5MB/s]
     39%|###9      | 66.5M/170M [00:01<00:02, 39.4MB/s]
     42%|####2     | 72.0M/170M [00:02<00:02, 40.3MB/s]
     47%|####7     | 80.0M/170M [00:02<00:02, 39.6MB/s]
     52%|#####1    | 88.0M/170M [00:02<00:01, 47.2MB/s]
     56%|#####5    | 94.3M/170M [00:02<00:01, 47.4MB/s]
     58%|#####8    | 99.2M/170M [00:02<00:01, 44.1MB/s]
     61%|######1   | 104M/170M [00:02<00:01, 44.7MB/s
 ] 
     66%|######5   | 112M/170M [00:02<00:01, 46.4MB/s]
     71%|#######   | 120M/170M [00:03<00:01, 51.5MB/s]
     74%|#######4  | 126M/170M [00:03<00:00, 52.6MB/s]
     77%|#######7  | 131M/170M [00:03<00:00, 51.9MB/s]
     80%|########  | 136M/170M [00:03<00:00, 49.7MB/s]
     85%|########4 | 144M/170M [00:03<00:00, 51.6MB/s]
     89%|########9 | 152M/170M [00:03<00:00, 51.2MB/s]
     93%|#########3| 158M/170M [00:03<00:00, 54.1MB/s]
     96%|#########6| 164M/170M [00:03<00:00, 50.3MB/s]
     99%|#########9| 168M/170M [00:04<00:00, 44.9MB/s]
    100%|##########| 170M/170M [00:04<00:00, 43.6MB/s]
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torch/nn/functional.py:3912: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
       (torch.floor((input.size(i + 2).float() * torch.tensor(scale_factors[i], dtype=torch.float32)).float()))
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/ops/boxes.py:157: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
@@ -295,7 +295,7 @@ Get boxes with score larger than 0.9
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 3 minutes  35.648 seconds)
+   **Total running time of the script:** ( 3 minutes  31.163 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_object_detection_pytorch.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt b/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
index 7c5f0ef620..179b61092c 100644
--- a/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
@@ -227,7 +227,7 @@ training. Other models require a full post training calibration.
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=MobileNet_V2_Weights.IMAGENET1K_V1`. You can also use `weights=MobileNet_V2_Weights.DEFAULT` to get the most up-to-date weights.
       warnings.warn(msg)
     Downloading: "https://download.pytorch.org/models/mobilenet_v2-b0353104.pth" to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2-b0353104.pth
-
      0%|          | 0.00/13.6M [00:00<?, ?B/s]
     59%|#####8    | 7.99M/13.6M [00:00<00:00, 45.1MB/s]
     91%|######### | 12.3M/13.6M [00:00<00:00, 43.3MB/s]
    100%|##########| 13.6M/13.6M [00:00<00:00, 47.2MB/s]
+
      0%|          | 0.00/13.6M [00:00<?, ?B/s]
     47%|####6     | 6.30M/13.6M [00:00<00:00, 27.6MB/s]
     66%|######5   | 8.95M/13.6M [00:00<00:00, 21.0MB/s]
     90%|########9 | 12.2M/13.6M [00:00<00:00, 21.9MB/s]
    100%|##########| 13.6M/13.6M [00:00<00:00, 24.7MB/s]
 
 
 
@@ -409,7 +409,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      89.0392      88.9665      92.2953      88.6935       0.3908                  
+      89.5340      89.1702      94.4391      88.6121       1.1897                  
 
 
 
@@ -457,7 +457,7 @@ TODO
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  28.347 seconds)
+   **Total running time of the script:** ( 1 minutes  27.786 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_prequantized.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt b/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
index ef4ab769ed..048219a3d1 100644
--- a/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
@@ -423,7 +423,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      110.2604     110.1576     116.3456     109.5915      0.6932                  
+      110.6529     110.4227     112.8648     109.8214      0.6950                  
 
 
 
diff --git a/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt b/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt
index b26f340f1a..36d4334632 100644
--- a/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt
@@ -257,7 +257,7 @@ We create a Relay VM to build and execute the model.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 2 minutes  3.143 seconds)
+   **Total running time of the script:** ( 2 minutes  9.788 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_quantized.py:
diff --git a/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt b/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
index 5a018112da..88c4777b86 100644
--- a/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
@@ -5,26 +5,26 @@
 
 Computation times
 =================
-**12:07.759** total execution time for **how_to_deploy_models** files:
+**12:06.890** total execution time for **how_to_deploy_models** files:
 
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``) | 03:35.648 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``) | 03:31.163 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_quantized.py` (``deploy_quantized.py``)                               | 02:03.143 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_quantized.py` (``deploy_quantized.py``)                               | 02:09.788 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)                         | 01:28.347 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)                         | 01:27.786 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno.py` (``deploy_model_on_adreno.py``)                   | 01:20.707 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno.py` (``deploy_model_on_adreno.py``)                   | 01:20.415 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)           | 00:58.153 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)           | 00:57.918 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)                 | 00:50.714 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno_tvmc.py` (``deploy_model_on_adreno_tvmc.py``)         | 00:49.912 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno_tvmc.py` (``deploy_model_on_adreno_tvmc.py``)         | 00:49.964 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)                 | 00:49.318 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_nano.py` (``deploy_model_on_nano.py``)                       | 00:30.806 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_nano.py` (``deploy_model_on_nano.py``)                       | 00:30.431 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)                       | 00:30.270 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)                       | 00:30.152 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_deploy_models_deploy_sparse.py` (``deploy_sparse.py``)                                     | 00:00.007 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/extend_tvm/bring_your_own_datatypes.rst.txt b/docs/_sources/how_to/extend_tvm/bring_your_own_datatypes.rst.txt
index f187c49ae5..fbd7d779a0 100644
--- a/docs/_sources/how_to/extend_tvm/bring_your_own_datatypes.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/bring_your_own_datatypes.rst.txt
@@ -463,7 +463,7 @@ First let us define two helper functions to get the mobilenet model and a cat im
 
  .. code-block:: none
 
-    Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zip3f38b6ec-cbb4-4498-b494-4b3511cd8bea from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
+    Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zipcb807ade-9e0c-4887-ab85-e5a0bdb9b81c from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
 
 
 
diff --git a/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt b/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
index 72749270d1..f077a36f1d 100644
--- a/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
@@ -5,14 +5,14 @@
 
 Computation times
 =================
-**00:58.157** total execution time for **how_to_extend_tvm** files:
+**00:57.173** total execution time for **how_to_extend_tvm** files:
 
 +-------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``) | 00:54.229 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``) | 00:53.298 | 0.0 MB |
 +-------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)           | 00:02.736 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)           | 00:02.692 | 0.0 MB |
 +-------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)                     | 00:01.184 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)                     | 00:01.176 | 0.0 MB |
 +-------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_low_level_custom_pass.py` (``low_level_custom_pass.py``)       | 00:00.008 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_low_level_custom_pass.py` (``low_level_custom_pass.py``)       | 00:00.007 | 0.0 MB |
 +-------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt b/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
index 5ff23be566..724b777502 100644
--- a/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
@@ -220,10 +220,10 @@ profile the execution time of each passes.
  .. code-block:: none
 
     Printing results of timing profile...
-    InferType: 24001us [24001us] (48.88%; 48.88%)
-    FoldScaleAxis: 25105us [9us] (51.12%; 51.12%)
-            FoldConstant: 25095us [1834us] (51.11%; 99.96%)
-                    InferType: 23261us [23261us] (47.37%; 92.69%)
+    InferType: 23362us [23362us] (48.42%; 48.42%)
+    FoldScaleAxis: 24888us [9us] (51.58%; 51.58%)
+            FoldConstant: 24879us [1835us] (51.56%; 99.96%)
+                    InferType: 23044us [23044us] (47.76%; 92.62%)
 
 
 
@@ -262,10 +262,10 @@ Refer to following sections and :py:func:`tvm.instrument.pass_instrument` for th
  .. code-block:: none
 
     Printing results of timing profile...
-    InferType: 23153us [23153us] (47.62%; 47.62%)
-    FoldScaleAxis: 25467us [8us] (52.38%; 52.38%)
-            FoldConstant: 25459us [1896us] (52.36%; 99.97%)
-                    InferType: 23563us [23563us] (48.46%; 92.55%)
+    InferType: 22892us [22892us] (47.90%; 47.90%)
+    FoldScaleAxis: 24902us [8us] (52.10%; 52.10%)
+            FoldConstant: 24894us [1837us] (52.09%; 99.97%)
+                    InferType: 23057us [23057us] (48.24%; 92.62%)
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt b/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
index ccd50a7d05..ce95729940 100644
--- a/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
@@ -331,7 +331,7 @@ latency of convolution.
 
  .. code-block:: none
 
-    Convolution: 52.356864 ms
+    Convolution: 53.613857 ms
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt b/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
index 0abb1e6681..46419f74a8 100644
--- a/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
@@ -598,7 +598,7 @@ be able to run on our build server
 
  .. code-block:: none
 
-    conv2d with tensor core: 12.269360 ms
+    conv2d with tensor core: 11.177712 ms
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt b/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
index 86343ae410..2f33f32c26 100644
--- a/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
@@ -134,8 +134,8 @@ Then we write a baseline implementation, the simplest way to write a matrix mult
 
  .. code-block:: none
 
-    Numpy running time: 0.018396
-    Baseline: 3.403296
+    Numpy running time: 0.018570
+    Baseline: 3.338445
 
 
 
@@ -227,7 +227,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 
  .. code-block:: none
 
-    Opt1: 0.303003
+    Opt1: 0.293716
 
 
 
@@ -318,7 +318,7 @@ In this tutorial, we chose to vectorize the inner loop row data since it is cach
 
  .. code-block:: none
 
-    Opt2: 0.296286
+    Opt2: 0.269722
 
 
 
@@ -406,7 +406,7 @@ the access pattern for A matrix is more cache friendly.
 
  .. code-block:: none
 
-    Opt3: 0.117868
+    Opt3: 0.117036
 
 
 
@@ -523,7 +523,7 @@ flattening.
 
  .. code-block:: none
 
-    Opt4: 0.108255
+    Opt4: 0.108992
 
 
 
@@ -635,7 +635,7 @@ write to C when all the block results are ready.
 
  .. code-block:: none
 
-    Opt5: 0.112735
+    Opt5: 0.113988
 
 
 
@@ -748,7 +748,7 @@ Furthermore, we can also utilize multi-core processors to do the thread-level pa
 
  .. code-block:: none
 
-    Opt6: 0.133583
+    Opt6: 0.133943
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt b/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
index d6319b5028..714e7fcb1d 100644
--- a/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
@@ -5,12 +5,12 @@
 
 Computation times
 =================
-**00:34.682** total execution time for **how_to_optimize_operators** files:
+**00:34.179** total execution time for **how_to_optimize_operators** files:
 
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)                       | 00:31.166 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)                       | 00:30.624 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``) | 00:02.121 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``) | 00:02.106 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)             | 00:01.394 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)             | 00:01.448 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
index 5bffb70ea0..be5035b083 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
@@ -5,18 +5,18 @@
 
 Computation times
 =================
-**03:52.111** total execution time for **how_to_tune_with_autoscheduler** files:
+**03:48.692** total execution time for **how_to_tune_with_autoscheduler** files:
 
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)             | 01:41.450 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)             | 01:39.558 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)           | 01:19.577 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)           | 01:19.317 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``) | 00:17.654 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``) | 00:17.183 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)           | 00:16.850 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)           | 00:16.392 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)             | 00:16.478 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)             | 00:16.140 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)               | 00:00.103 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt
index be8c033e2c..e105c5249e 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt
@@ -767,7 +767,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 0.345 ms
+    Execution time of this operator: 0.343 ms
 
 
 
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
index 916428ee28..111c37cbca 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
@@ -647,7 +647,7 @@ so we can read the log file and load the best schedules.
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       8.1140       8.1141       8.1148       8.1130       0.0008                  
+       8.1504       8.1510       8.1524       8.1478       0.0019                  
 
 
 
@@ -674,7 +674,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  19.577 seconds)
+   **Total running time of the script:** ( 1 minutes  19.317 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_network_cuda.py:
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
index 00ff1b80d2..c8ec58cc3a 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
@@ -666,7 +666,7 @@ so we can read the log file and load the best schedules.
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      763.2210     762.9345     763.8772     762.8513      0.4652                  
+      761.4281     761.0394     764.1824     759.0626      2.1081                  
 
 
 
@@ -693,7 +693,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  41.450 seconds)
+   **Total running time of the script:** ( 1 minutes  39.558 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_network_x86.py:
diff --git a/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt b/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
index 6a6dd22506..585159d81f 100644
--- a/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
@@ -5,16 +5,16 @@
 
 Computation times
 =================
-**00:23.530** total execution time for **how_to_tune_with_autotvm** files:
+**00:23.531** total execution time for **how_to_tune_with_autotvm** files:
 
 +--------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)           | 00:23.492 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)               | 00:00.021 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)               | 00:00.023 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)             | 00:00.006 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)               | 00:00.005 | 0.0 MB |
-+--------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_mobile_gpu.py` (``tune_relay_mobile_gpu.py``) | 00:00.005 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)               | 00:00.005 | 0.0 MB |
++--------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt b/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
index 94c5b34fe2..b0d89c7a7c 100644
--- a/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
@@ -326,7 +326,7 @@ and measure running time.
 
     Best config:
     ,None
-    Time cost of this operator: 0.037132
+    Time cost of this operator: 0.037089
 
 
 
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
index 647c9d36ad..1a473e8680 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
@@ -360,10 +360,10 @@ Timing the untuned program
     ########## Build without Autotuning ##########
     Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)  
     ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------  
-    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  305.2     98.735   (1, 2, 10, 10, 3)  2       1        [305.2]           
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.941     0.951    (1, 6, 10, 10)     1       1        [2.941]           
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.969     0.314    (1, 1, 10, 10, 3)  1       1        [0.969]           
-    Total_time                                    -                                             309.11    -        -                  -       -        -                 
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  304.2     98.74    (1, 2, 10, 10, 3)  2       1        [304.2]           
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.91      0.945    (1, 6, 10, 10)     1       1        [2.91]            
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.972     0.316    (1, 1, 10, 10, 3)  1       1        [0.972]           
+    Total_time                                    -                                             308.082   -        -                  -       -        -                 
 
 
 
@@ -428,10 +428,10 @@ Timing the tuned program
     ########## Build with Autotuning ##########
     Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)  
     ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------  
-    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  100.3     97.32    (1, 6, 10, 10, 1)  2       1        [100.3]           
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.779     1.726    (1, 6, 10, 10)     1       1        [1.779]           
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.983     0.954    (1, 1, 10, 10, 3)  1       1        [0.983]           
-    Total_time                                    -                                             103.062   -        -                  -       -        -                 
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  100.3     97.352   (1, 6, 10, 10, 1)  2       1        [100.3]           
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.759     1.707    (1, 6, 10, 10)     1       1        [1.759]           
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.969     0.94     (1, 1, 10, 10, 3)  1       1        [0.969]           
+    Total_time                                    -                                             103.028   -        -                  -       -        -                 
 
 
 
@@ -439,7 +439,7 @@ Timing the tuned program
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  28.029 seconds)
+   **Total running time of the script:** ( 1 minutes  25.592 seconds)
 
 
 .. _sphx_glr_download_how_to_work_with_microtvm_micro_autotune.py:
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt
index d028c8c9bd..7625f51f5c 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt
@@ -118,7 +118,7 @@ download a cat image and preprocess it to use as the model input.
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torch/ao/quantization/utils.py:310: UserWarning: must run observer before calling calculate_qparams. Returning default values.
       warnings.warn(
     Downloading: "https://download.pytorch.org/models/quantized/mobilenet_v2_qnnpack_37f702c5.pth" to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2_qnnpack_37f702c5.pth
-
      0%|          | 0.00/3.42M [00:00<?, ?B/s]
     61%|######    | 2.09M/3.42M [00:00<00:00, 9.83MB/s]
    100%|##########| 3.42M/3.42M [00:00<00:00, 15.8MB/s]
+
      0%|          | 0.00/3.42M [00:00<?, ?B/s]
    100%|##########| 3.42M/3.42M [00:00<00:00, 41.6MB/s]
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torch/_utils.py:314: UserWarning: TypedStorage is deprecated. It will be removed in the future and UntypedStorage will be the only storage class. This should only matter to you if you are using storages directly.  To access UntypedStorage directly, use tensor.untyped_storage() instead of tensor.storage()
       device=storage.device,
     /workspace/python/tvm/relay/frontend/pytorch_utils.py:47: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
@@ -326,7 +326,7 @@ Look up prediction top 1 index in 1000 class synset.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  29.335 seconds)
+   **Total running time of the script:** ( 1 minutes  27.468 seconds)
 
 
 .. _sphx_glr_download_how_to_work_with_microtvm_micro_pytorch.py:
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
index d0eb275eef..375a36adcb 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
@@ -217,7 +217,7 @@ take about **2 minutes** to download the Stanford Cars, while COCO 2017 validati
  .. code-block:: none
 
 
-    '/tmp/tmpqqtdnlkt/images/random'
+    '/tmp/tmpv1_u0l_j/images/random'
 
 
 
@@ -317,8 +317,8 @@ objects to other stuff? We can display some examples from our datasets using ``m
 
  .. code-block:: none
 
-    /tmp/tmpqqtdnlkt/images/target contains 8144 images
-    /tmp/tmpqqtdnlkt/images/random contains 5000 images
+    /tmp/tmpv1_u0l_j/images/target contains 8144 images
+    /tmp/tmpv1_u0l_j/images/random contains 5000 images
 
 
 
@@ -493,13 +493,13 @@ the time on our validation set).
  .. code-block:: none
 
     Epoch 1/3
-    328/328 - 41s - loss: 0.2216 - accuracy: 0.9251 - val_loss: 0.1627 - val_accuracy: 0.9437 - 41s/epoch - 124ms/step
+    328/328 - 42s - loss: 0.2299 - accuracy: 0.9196 - val_loss: 0.1361 - val_accuracy: 0.9509 - 42s/epoch - 128ms/step
     Epoch 2/3
-    328/328 - 36s - loss: 0.1010 - accuracy: 0.9630 - val_loss: 0.1434 - val_accuracy: 0.9486 - 36s/epoch - 108ms/step
+    328/328 - 36s - loss: 0.1005 - accuracy: 0.9626 - val_loss: 0.1683 - val_accuracy: 0.9332 - 36s/epoch - 108ms/step
     Epoch 3/3
-    328/328 - 35s - loss: 0.0638 - accuracy: 0.9766 - val_loss: 0.1001 - val_accuracy: 0.9679 - 35s/epoch - 108ms/step
+    328/328 - 35s - loss: 0.0647 - accuracy: 0.9758 - val_loss: 0.1047 - val_accuracy: 0.9675 - 35s/epoch - 108ms/step
 
-    <keras.callbacks.History object at 0x7f66517b19d0>
+    <keras.callbacks.History object at 0x7fcacf16e910>
 
 
 
@@ -860,7 +860,7 @@ Arduino tutorial for how to do that `on GitHub <https://github.com/guberti/tvm-a
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 4 minutes  35.866 seconds)
+   **Total running time of the script:** ( 4 minutes  47.426 seconds)
 
 
 .. _sphx_glr_download_how_to_work_with_microtvm_micro_train.py:
diff --git a/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
index b16bdddfcd..8ed15ec461 100644
--- a/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
@@ -5,20 +5,20 @@
 
 Computation times
 =================
-**08:03.835** total execution time for **how_to_work_with_microtvm** files:
+**08:10.793** total execution time for **how_to_work_with_microtvm** files:
 
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_train.py` (``micro_train.py``)           | 04:35.866 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_train.py` (``micro_train.py``)           | 04:47.426 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_pytorch.py` (``micro_pytorch.py``)       | 01:29.335 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_pytorch.py` (``micro_pytorch.py``)       | 01:27.468 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)     | 01:28.029 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)     | 01:25.592 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_aot.py` (``micro_aot.py``)               | 00:12.589 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_aot.py` (``micro_aot.py``)               | 00:12.522 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)         | 00:09.074 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)         | 00:09.177 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_custom_ide.py` (``micro_custom_ide.py``) | 00:08.941 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_custom_ide.py` (``micro_custom_ide.py``) | 00:08.609 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_work_with_microtvm_micro_ethosu.py` (``micro_ethosu.py``)         | 00:00.000 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
index bba3061431..13c691e154 100644
--- a/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
@@ -5,14 +5,14 @@
 
 Computation times
 =================
-**00:40.242** total execution time for **how_to_work_with_relay** files:
+**00:40.929** total execution time for **how_to_work_with_relay** files:
 
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_pipeline_executor.py` (``using_pipeline_executor.py``) | 00:35.071 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_pipeline_executor.py` (``using_pipeline_executor.py``) | 00:35.662 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)           | 00:03.302 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)           | 00:03.337 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)                             | 00:01.862 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)                             | 00:01.924 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_relay_viz.py` (``using_relay_viz.py``)                 | 00:00.007 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_relay_viz.py` (``using_relay_viz.py``)                 | 00:00.006 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt b/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
index 127d92b43d..4b6b919900 100644
--- a/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
@@ -278,7 +278,7 @@ The following example customizes CUDA lowering rule for :code:`exp`.
  .. code-block:: none
 
 
-    <function my_cuda_math_rule at 0x7f6651a04af0>
+    <function my_cuda_math_rule at 0x7fcaeba603a0>
 
 
 
diff --git a/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
index 728bb07f5c..472a2dc7e9 100644
--- a/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
@@ -5,22 +5,22 @@
 
 Computation times
 =================
-**00:06.485** total execution time for **how_to_work_with_schedules** files:
+**00:09.358** total execution time for **how_to_work_with_schedules** files:
 
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_intrin_math.py` (``intrin_math.py``)                 | 00:03.369 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_intrin_math.py` (``intrin_math.py``)                 | 00:05.977 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)                     | 00:01.319 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)                     | 00:01.559 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)                     | 00:00.758 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)                     | 00:00.769 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)                               | 00:00.745 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)                               | 00:00.762 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)                     | 00:00.119 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)                               | 00:00.083 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)                               | 00:00.081 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``) | 00:00.060 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``) | 00:00.059 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tuple_inputs.py` (``tuple_inputs.py``)               | 00:00.031 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tuple_inputs.py` (``tuple_inputs.py``)               | 00:00.032 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/reference/api/links.rst.txt b/docs/_sources/reference/api/links.rst.txt
index a2a43bf7d0..445b88d61f 100644
--- a/docs/_sources/reference/api/links.rst.txt
+++ b/docs/_sources/reference/api/links.rst.txt
@@ -24,3 +24,4 @@ build system.
 * `C++ doyxgen API <doxygen/index.html>`_
 * `Typescript typedoc API <typedoc/index.html>`_
 * `Java Javadoc API <javadoc/index.html>`_
+* `Rust Rustdoc API <rust/index.html>`_
diff --git a/docs/_sources/topic/vta/tutorials/autotvm/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/autotvm/sg_execution_times.rst.txt
index db2a5d2e64..5f61d9202b 100644
--- a/docs/_sources/topic/vta/tutorials/autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/autotvm/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:36.123** total execution time for **topic_vta_tutorials_autotvm** files:
+**00:34.867** total execution time for **topic_vta_tutorials_autotvm** files:
 
 +---------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``) | 00:36.115 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``) | 00:34.859 | 0.0 MB |
 +---------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_alu_vta.py` (``tune_alu_vta.py``)     | 00:00.008 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_alu_vta.py` (``tune_alu_vta.py``)     | 00:00.007 | 0.0 MB |
 +---------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt
index 5a81f21804..74cf81accb 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt
@@ -293,7 +293,7 @@ The compilation steps are:
       warnings.warn(
     /workspace/vta/tutorials/frontend/deploy_classification.py:212: DeprecationWarning: legacy graph executor behavior of producing json / lib / params will be removed in the next release. Please see documents of tvm.contrib.graph_executor.GraphModule for the  new recommended usage.
       graph, lib, params = relay.build(
-    resnet18_v1 inference graph built in 38.08s!
+    resnet18_v1 inference graph built in 37.00s!
 
 
 
@@ -416,7 +416,7 @@ and an input test image.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  5.348 seconds)
+   **Total running time of the script:** ( 1 minutes  4.353 seconds)
 
 
 .. _sphx_glr_download_topic_vta_tutorials_frontend_deploy_classification.py:
diff --git a/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
index a4b9eb445b..1e9532c69f 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
@@ -337,7 +337,7 @@ The compilation steps are:
 
     /workspace/python/tvm/relay/build_module.py:345: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
       warnings.warn(
-    yolov3-tiny inference graph built in 26.35s!
+    yolov3-tiny inference graph built in 25.43s!
 
 
 
@@ -447,7 +447,7 @@ Download test image
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  9.674 seconds)
+   **Total running time of the script:** ( 1 minutes  8.999 seconds)
 
 
 .. _sphx_glr_download_topic_vta_tutorials_frontend_deploy_detection.py:
diff --git a/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
index 4c123c5d2a..7ae89513d4 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**02:15.022** total execution time for **topic_vta_tutorials_frontend** files:
+**02:13.352** total execution time for **topic_vta_tutorials_frontend** files:
 
 +------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``)           | 01:09.674 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``)           | 01:08.999 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``) | 01:05.348 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``) | 01:04.353 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
index 10bd67101f..34b07999c7 100644
--- a/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:03.412** total execution time for **topic_vta_tutorials_optimize** files:
+**00:03.409** total execution time for **topic_vta_tutorials_optimize** files:
 
 +--------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)         | 00:02.876 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``) | 00:00.537 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``) | 00:00.533 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
index 914d821f9c..f0aa240dc3 100644
--- a/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:00.895** total execution time for **topic_vta_tutorials** files:
+**00:00.897** total execution time for **topic_vta_tutorials** files:
 
 +---------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``) | 00:00.461 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``) | 00:00.463 | 0.0 MB |
 +---------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``) | 00:00.434 | 0.0 MB |
 +---------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
index ddee52529b..deed15426f 100644
--- a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
+++ b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
@@ -318,7 +318,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 96.838 ms
+    Execution time of this operator: 94.087 ms
 
 
 
@@ -434,7 +434,7 @@ operations.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  22.764 seconds)
+   **Total running time of the script:** ( 1 minutes  28.364 seconds)
 
 
 .. _sphx_glr_download_tutorial_auto_scheduler_matmul_x86.py:
diff --git a/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt b/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
index c604cd6e3f..739f9225d5 100644
--- a/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
+++ b/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
@@ -454,16 +454,16 @@ reduce variance, we take 5 measurements and average them.
     waiting for device...
     device available
     Get devices for measurement successfully!
-    No: 1   GFLOPS: 11.03/11.03     result: MeasureResult(costs=(0.0243402054,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6580624580383301, timestamp=1688561052.18844) [('tile_y', [-1, 256]), ('tile_x', [-1, 32])],None,58
-    No: 2   GFLOPS: 8.94/11.03      result: MeasureResult(costs=(0.030034741799999997,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7534565925598145, timestamp=1688561052.9329858)       [('tile_y', [-1, 256]), ('tile_x', [-1, 16])],None,48
-    No: 3   GFLOPS: 10.96/11.03     result: MeasureResult(costs=(0.0244939726,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6550290584564209, timestamp=1688561053.5934615)       [('tile_y', [-1, 256]), ('tile_x', [-1, 512])],None,98
-    No: 4   GFLOPS: 13.03/13.03     result: MeasureResult(costs=(0.0206022854,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.660233736038208, timestamp=1688561054.1924822)        [('tile_y', [-1, 128]), ('tile_x', [-1, 128])],None,77
-    No: 5   GFLOPS: 12.81/13.03     result: MeasureResult(costs=(0.0209497434,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6226224899291992, timestamp=1688561054.9792883)       [('tile_y', [-1, 256]), ('tile_x', [-1, 64])],None,68
-    No: 6   GFLOPS: 2.02/13.03      result: MeasureResult(costs=(0.13310045139999999,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.4033315181732178, timestamp=1688561057.3763075)        [('tile_y', [-1, 64]), ('tile_x', [-1, 4])],None,26
-    No: 7   GFLOPS: 8.29/13.03      result: MeasureResult(costs=(0.0323952904,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.8658661842346191, timestamp=1688561058.1639986)       [('tile_y', [-1, 512]), ('tile_x', [-1, 64])],None,69
-    No: 8   GFLOPS: 3.74/13.03      result: MeasureResult(costs=(0.071714369,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.4182660579681396, timestamp=1688561059.5741203)        [('tile_y', [-1, 32]), ('tile_x', [-1, 8])],None,35
-    No: 9   GFLOPS: 2.02/13.03      result: MeasureResult(costs=(0.132654979,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.3566856384277344, timestamp=1688561062.0532813)        [('tile_y', [-1, 128]), ('tile_x', [-1, 4])],None,27
-    No: 10  GFLOPS: 11.65/13.03     result: MeasureResult(costs=(0.0230438962,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.623960018157959, timestamp=1688561062.6905413)        [('tile_y', [-1, 8]), ('tile_x', [-1, 256])],None,83
+    No: 1   GFLOPS: 9.45/9.45       result: MeasureResult(costs=(0.0284038404,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.86932373046875, timestamp=1688571855.9991925) [('tile_y', [-1, 8]), ('tile_x', [-1, 128])],None,73
+    No: 2   GFLOPS: 7.34/9.45       result: MeasureResult(costs=(0.0365779432,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.8827605247497559, timestamp=1688571856.8494415)       [('tile_y', [-1, 32]), ('tile_x', [-1, 16])],None,45
+    No: 3   GFLOPS: 3.75/9.45       result: MeasureResult(costs=(0.0715569948,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.4340097904205322, timestamp=1688571858.2544663)       [('tile_y', [-1, 32]), ('tile_x', [-1, 8])],None,35
+    No: 4   GFLOPS: 10.17/10.17     result: MeasureResult(costs=(0.026389847,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7498488426208496, timestamp=1688571858.9399385)        [('tile_y', [-1, 8]), ('tile_x', [-1, 64])],None,63
+    No: 5   GFLOPS: 10.40/10.40     result: MeasureResult(costs=(0.025801091000000005,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7216079235076904, timestamp=1688571859.8370395)       [('tile_y', [-1, 8]), ('tile_x', [-1, 32])],None,53
+    No: 6   GFLOPS: 11.98/11.98     result: MeasureResult(costs=(0.022402112600000003,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6412110328674316, timestamp=1688571860.4586544)       [('tile_y', [-1, 16]), ('tile_x', [-1, 16])],None,44
+    No: 7   GFLOPS: 12.62/12.62     result: MeasureResult(costs=(0.0212743148,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7132542133331299, timestamp=1688571861.0687368)       [('tile_y', [-1, 256]), ('tile_x', [-1, 128])],None,78
+    No: 8   GFLOPS: 9.56/12.62      result: MeasureResult(costs=(0.0280660354,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7668099403381348, timestamp=1688571861.7875617)       [('tile_y', [-1, 512]), ('tile_x', [-1, 128])],None,79
+    No: 9   GFLOPS: 10.88/12.62     result: MeasureResult(costs=(0.0246712936,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7064931392669678, timestamp=1688571862.6037488)       [('tile_y', [-1, 512]), ('tile_x', [-1, 64])],None,69
+    No: 10  GFLOPS: 2.01/12.62      result: MeasureResult(costs=(0.13331414079999998,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.3751115798950195, timestamp=1688571865.0000176)        [('tile_y', [-1, 64]), ('tile_x', [-1, 4])],None,26
 
 
 
diff --git a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
index d4e96e875b..c3ce05f07d 100644
--- a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
+++ b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
@@ -311,7 +311,7 @@ standard deviation.
 
  .. code-block:: none
 
-    {'mean': 492.42305131010653, 'median': 492.02672249994066, 'std': 1.9230358173532875}
+    {'mean': 493.1730829400112, 'median': 493.10015995001777, 'std': 1.346728671812525}
 
 
 
@@ -582,29 +582,30 @@ the tuning data to.
 
  .. code-block:: none
 
-
    [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  1/25]  Current/Best:   19.81/  21.75 GFLOPS | Progress: (4/20) | 8.38 s
    [Task  1/25]  Current/Best:   12.79/  23.17 GFLOPS | Progress: (8/20) | 11.18 s
    [Task  1/25]  Current/Best:    8.57/  23.17 GFLOPS | Progress: (12/20) | 13.60 s
    [Task  1/25]  Current/Best:    6.67/  23.17 GFLOPS | Progress: (16/20) | 21.91 s
    [Task  1/25]  Current/Best:   20.64/  23.17 GFLOPS | Progress: (20/20) | 24.35 s Done.
-
    [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  2/25]  Current/Best:    5.62/  14.19 GFLOPS | Progress: (4/20) | 4.24 s
    [Task  2/25]  Current/Best:   13.00/  17.98 GFLOPS | Progress: (8/20) | 6.14 s
    [Task  2/25]  Current/Best:    3.94/  17.98 GFLOPS | Progress: (12/20) | 7.87 s
    [Task  2/25]  Current/Best:    8.67/  17.98 GFLOPS | Progress: (16/20) | 9.42 s
    [Task  2/25]  Current/Best:   18.54/  20.32 GFLOPS | Progress: (20/20) | 10.93 s Done.
-
    [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  3/25]  Current/Best:   19.41/  19.41 GFLOPS | Progress: (4/20) | 5.13 s
    [Task  3/25]  Current/Best:   13.97/  20.98 GFLOPS | Progress: (8/20) | 7.78 s
    [Task  3/25]  Current/Best:    5.53/  20.98 GFLOPS | Progress: (12/20) | 10.70 s
    [Task  3/25]  Current/Best:   13.22/  22.68 GFLOPS | Progress: (16/20) | 13.02 s
    [Task  3/25]  Current/Best:    7.88/  23.19 GFLOPS | Progress: (20/20) | 16.88 s Done.
-
    [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  4/25]  Current/Best:    7.28/  16.26 GFLOPS | Progress: (4/20) | 4.97 s
    [Task  4/25]  Current/Best:   13.84/  16.26 GFLOPS | Progress: (8/20) | 6.94 s
    [Task  4/25]  Current/Best:   15.13/  22.14 GFLOPS | Progress: (12/20) | 9.49 s
    [Task  4/25]  Current/Best:    7.84/  22.14 GFLOPS | Progress: (16/20) | 13.99 s
    [Task  4/25]  Current/Best:   13.61/  22.14 GFLOPS | Progress: (20/20) | 15.95 s Done.
-
    [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  5/25]  Current/Best:   11.58/  17.05 GFLOPS | Progress: (4/20) | 4.92 s
    [Task  5/25]  Current/Best:    5.52/  19.67 GFLOPS | Progress: (8/20) | 6.79 s
    [Task  5/25]  Current/Best:   16.03/  19.67 GFLOPS | Progress: (12/20) | 9.17 s
    [Task  5/25]  Current/Best:   17.48/  19.67 GFLOPS | Progress: (16/20) | 10.93 s
    [Task  5/25]  Current/Best:   13.34/  19.67 GFLOPS | Progress: (20/20) | 13.13 s Done.
-
    [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  6/25]  Current/Best:   14.81/  14.81 GFLOPS | Progress: (4/20) | 5.84 s
    [Task  6/25]  Current/Best:   13.91/  14.81 GFLOPS | Progress: (8/20) | 8.81 s
    [Task  6/25]  Current/Best:    8.77/  15.50 GFLOPS | Progress: (12/20) | 12.78 s
    [Task  6/25]  Current/Best:   12.31/  18.22 GFLOPS | Progress: (16/20) | 15.97 s
    [Task  6/25]  Current/Best:   22.84/  22.84 GFLOPS | Progress: (20/20) | 18.77 s Done.
-
    [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  7/25]  Current/Best:    8.45/   8.45 GFLOPS | Progress: (4/20) | 6.13 s
    [Task  7/25]  Current/Best:   11.81/  20.46 GFLOPS | Progress: (8/20) | 8.65 s
    [Task  7/25]  Current/Best:   12.51/  20.46 GFLOPS | Progress: (12/20) | 11.09 s
    [Task  7/25]  Current/Best:   12.27/  20.46 GFLOPS | Progress: (16/20) | 13.73 s
    [Task  7/25]  Current/Best:    9.18/  20.46 GFLOPS | Progress: (20/20) | 17.25 s Done.
-
    [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  8/25]  Current/Best:   12.93/  16.77 GFLOPS | Progress: (4/20) | 8.97 s
    [Task  8/25]  Current/Best:   12.82/  19.28 GFLOPS | Progress: (8/20) | 12.70 s
    [Task  8/25]  Current/Best:    7.11/  19.28 GFLOPS | Progress: (12/20) | 15.22 s
    [Task  8/25]  Current/Best:   10.18/  19.28 GFLOPS | Progress: (16/20) | 18.23 s
    [Task  8/25]  Current/Best:    8.73/  19.28 GFLOPS | Progress: (20/20) | 25.17 s Done.
-
    [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  9/25]  Current/Best:   13.27/  19.58 GFLOPS | Progress: (4/20) | 5.12 s
    [Task  9/25]  Current/Best:   10.39/  19.58 GFLOPS | Progress: (8/20) | 6.97 s
    [Task  9/25]  Current/Best:    6.67/  19.58 GFLOPS | Progress: (12/20) | 16.27 s
    [Task  9/25]  Current/Best:   12.33/  19.58 GFLOPS | Progress: (16/20) | 24.56 s
    [Task  9/25]  Current/Best:    1.95/  19.58 GFLOPS | Progress: (20/20) | 30.57 s Done.
-
    [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 10/25]  Current/Best:   10.05/  11.87 GFLOPS | Progress: (4/20) | 5.52 s
    [Task 10/25]  Current/Best:   14.35/  14.70 GFLOPS | Progress: (8/20) | 8.26 s
    [Task 10/25]  Current/Best:   14.30/  17.79 GFLOPS | Progress: (12/20) | 10.01 s
    [Task 10/25]  Current/Best:   16.92/  17.79 GFLOPS | Progress: (16/20) | 11.81 s
    [Task 10/25]  Current/Best:   15.71/  18.77 GFLOPS | Progress: (20/20) | 14.13 s Done.
-
    [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 11/25]  Current/Best:   22.55/  22.59 GFLOPS | Progress: (4/20) | 5.60 s
    [Task 11/25]  Current/Best:   16.33/  22.59 GFLOPS | Progress: (8/20) | 7.85 s
    [Task 11/25]  Current/Best:   22.47/  22.59 GFLOPS | Progress: (12/20) | 10.09 s
    [Task 11/25]  Current/Best:   11.84/  22.59 GFLOPS | Progress: (16/20) | 12.80 s
    [Task 11/25]  Current/Best:   19.82/  22.59 GFLOPS | Progress: (20/20) | 15.09 s Done.
-
    [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 12/25]  Current/Best:   15.70/  18.07 GFLOPS | Progress: (4/20) | 5.45 s
    [Task 12/25]  Current/Best:   10.65/  18.80 GFLOPS | Progress: (8/20) | 7.55 s
    [Task 12/25]  Current/Best:    8.49/  18.80 GFLOPS | Progress: (12/20) | 16.26 s
    [Task 12/25]  Current/Best:   12.70/  18.80 GFLOPS | Progress: (16/20) | 20.80 s
    [Task 12/25]  Current/Best:   20.39/  20.39 GFLOPS | Progress: (20/20) | 24.73 s Done.
-
    [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 13/25]  Current/Best:   17.88/  19.60 GFLOPS | Progress: (4/20) | 5.79 s
    [Task 13/25]  Current/Best:   12.22/  19.78 GFLOPS | Progress: (8/20) | 7.92 s
    [Task 13/25]  Current/Best:   11.20/  19.78 GFLOPS | Progress: (12/20) | 10.79 s
    [Task 13/25]  Current/Best:    8.71/  19.78 GFLOPS | Progress: (16/20) | 13.83 s
    [Task 13/25]  Current/Best:   20.45/  20.45 GFLOPS | Progress: (20/20) | 16.85 s Done.
-
    [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 14/25]  Current/Best:   14.11/  22.22 GFLOPS | Progress: (4/20) | 7.35 s
    [Task 14/25]  Current/Best:   16.08/  22.22 GFLOPS | Progress: (8/20) | 12.78 s
    [Task 14/25]  Current/Best:    1.61/  22.22 GFLOPS | Progress: (12/20) | 22.56 s
    [Task 14/25]  Current/Best:   12.10/  22.22 GFLOPS | Progress: (16/20) | 28.36 s
    [Task 14/25]  Current/Best:   19.77/  22.22 GFLOPS | Progress: (20/20) | 30.55 s Done.
-
    [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 15/25]  Current/Best:   17.31/  17.31 GFLOPS | Progress: (4/20) | 5.07 s
    [Task 15/25]  Current/Best:   16.75/  17.31 GFLOPS | Progress: (8/20) | 7.04 s
    [Task 15/25]  Current/Best:    8.87/  17.31 GFLOPS | Progress: (12/20) | 13.74 s
    [Task 15/25]  Current/Best:   17.93/  17.93 GFLOPS | Progress: (16/20) | 15.56 s
    [Task 15/25]  Current/Best:   14.60/  20.94 GFLOPS | Progress: (20/20) | 20.01 s Done.
-
    [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 16/25]  Current/Best:   11.02/  17.53 GFLOPS | Progress: (4/20) | 5.10 s
    [Task 16/25]  Current/Best:   18.66/  20.18 GFLOPS | Progress: (8/20) | 7.08 s
    [Task 16/25]  Current/Best:   18.97/  20.18 GFLOPS | Progress: (12/20) | 8.62 s
    [Task 16/25]  Current/Best:   14.56/  20.18 GFLOPS | Progress: (16/20) | 10.36 s
    [Task 16/25]  Current/Best:   12.84/  20.18 GFLOPS | Progress: (20/20) | 11.93 s Done.
-
    [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 17/25]  Current/Best:   17.60/  22.53 GFLOPS | Progress: (4/20) | 4.91 s
    [Task 17/25]  Current/Best:    4.87/  22.53 GFLOPS | Progress: (8/20) | 7.32 s
    [Task 17/25]  Current/Best:    6.89/  22.53 GFLOPS | Progress: (12/20) | 10.53 s
    [Task 17/25]  Current/Best:   11.71/  22.53 GFLOPS | Progress: (16/20) | 13.37 s
    [Task 17/25]  Current/Best:    8.48/  22.53 GFLOPS | Progress: (20/20) | 16.31 s Done.
-
    [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 18/25]  Current/Best:    3.30/  18.40 GFLOPS | Progress: (4/20) | 5.40 s
    [Task 18/25]  Current/Best:    1.56/  20.85 GFLOPS | Progress: (8/20) | 10.40 s
    [Task 18/25]  Current/Best:    8.68/  20.85 GFLOPS | Progress: (12/20) | 16.39 s
    [Task 18/25]  Current/Best:   14.88/  20.85 GFLOPS | Progress: (16/20) | 18.85 s
    [Task 18/25]  Current/Best:    7.20/  20.85 GFLOPS | Progress: (20/20) | 21.47 s Done.
-
    [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 19/25]  Current/Best:   12.05/  12.05 GFLOPS | Progress: (4/20) | 10.00 s
    [Task 19/25]  Current/Best:   12.05/  15.66 GFLOPS | Progress: (8/20) | 14.58 s
    [Task 19/25]  Current/Best:   20.25/  20.25 GFLOPS | Progress: (12/20) | 18.75 s
    [Task 19/25]  Current/Best:    7.76/  20.25 GFLOPS | Progress: (16/20) | 24.19 s
    [Task 19/25]  Current/Best:   21.67/  21.67 GFLOPS | Progress: (20/20) | 27.97 s Done.
-
    [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 20/25]  Current/Best:    2.36/  17.52 GFLOPS | Progress: (4/20) | 6.08 s
    [Task 20/25]  Current/Best:   14.09/  17.52 GFLOPS | Progress: (8/20) | 12.05 s
    [Task 20/25]  Current/Best:   13.44/  17.96 GFLOPS | Progress: (12/20) | 18.65 s
    [Task 20/25]  Current/Best:   13.51/  20.21 GFLOPS | Progress: (16/20) | 20.69 s
    [Task 20/25]  Current/Best:    7.80/  20.21 GFLOPS | Progress: (20/20) | 32.41 s
    [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 21/25]  Current/Best:    5.45/  20.48 GFLOPS | Progress: (4/20) | 6.62 s
    [Task 21/25]  Current/Best:   17.88/  20.48 GFLOPS | Progress: (8/20) | 8.54 s
    [Task 21/25]  Current/Best:   18.53/  20.48 GFLOPS | Progress: (12/20) | 11.14 s
    [Task 21/25]  Current/Best:   19.26/  20.48 GFLOPS | Progress: (16/20) | 18.88 s
    [Task 21/25]  Current/Best:   12.92/  20.48 GFLOPS | Progress: (20/2
 0) | 21.28 s Done.
-
    [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 22/25]  Current/Best:   18.69/  18.69 GFLOPS | Progress: (4/20) | 5.20 s
    [Task 22/25]  Current/Best:    8.19/  18.79 GFLOPS | Progress: (8/20) | 8.90 s
    [Task 22/25]  Current/Best:   15.99/  18.79 GFLOPS | Progress: (12/20) | 12.56 s
    [Task 22/25]  Current/Best:   10.45/  18.79 GFLOPS | Progress: (16/20) | 15.23 s
    [Task 22/25]  Current/Best:    5.26/  20.24 GFLOPS | Progress: (20/20) | 18.21 s Done.
-
    [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 23/25]  Current/Best:   18.29/  21.53 GFLOPS | Progress: (4/20) | 5.14 s
    [Task 23/25]  Current/Best:    1.55/  21.53 GFLOPS | Progress: (8/20) | 10.16 s
    [Task 23/25]  Current/Best:   20.99/  21.53 GFLOPS | Progress: (12/20) | 14.22 s
    [Task 23/25]  Current/Best:   11.85/  21.59 GFLOPS | Progress: (16/20) | 16.76 s
    [Task 23/25]  Current/Best:   19.61/  22.75 GFLOPS | Progress: (20/20) | 19.50 s Done.
-
    [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 24/25]  Current/Best:    2.23/   5.43 GFLOPS | Progress: (4/20) | 8.39 s
    [Task 24/25]  Current/Best:    2.06/   5.72 GFLOPS | Progress: (8/20) | 15.34 s
    [Task 24/25]  Current/Best:    3.40/   5.72 GFLOPS | Progress: (12/20) | 23.57 s
    [Task 24/25]  Current/Best:    9.52/   9.52 GFLOPS | Progress: (16/20) | 34.57 s
    [Task 24/25]  Current/Best:    2.84/   9.52 GFLOPS | Progress: (20/20) | 47.07 s
    [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 25/25]  Current/Best:    5.94/   7.31 GFLOPS | Progress: (4/20) | 13.31 s
    [Task 25/25]  Current/Best:    1.55/   7.31 GFLOPS | Progress: (8/20) | 24.33 s
    [Task 25/25]  Current/Best:    4.39/   8.39 GFLOPS | Progress: (12/20) | 27.80 s
    [Task 25/25]  Current/Best:    8.92/   8.92 GFLOPS | Progress: (16/20) | 30.86 s
    [Task 25/25]  Current/Best:    5.57/   8.92 GFLOPS | Progress: (20
 /20) | 32.61 s
+
    [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  1/25]  Current/Best:   16.03/  17.93 GFLOPS | Progress: (4/20) | 9.34 s
    [Task  1/25]  Current/Best:   11.85/  21.87 GFLOPS | Progress: (8/20) | 12.22 s
    [Task  1/25]  Current/Best:   19.54/  22.18 GFLOPS | Progress: (12/20) | 14.99 s
    [Task  1/25]  Current/Best:   11.09/  22.18 GFLOPS | Progress: (16/20) | 18.09 s
    [Task  1/25]  Current/Best:    6.15/  22.18 GFLOPS | Progress: (20/20) | 24.60 s Done.
+
    [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  2/25]  Current/Best:   16.16/  16.16 GFLOPS | Progress: (4/20) | 4.57 s
    [Task  2/25]  Current/Best:    8.32/  18.97 GFLOPS | Progress: (8/20) | 6.08 s
    [Task  2/25]  Current/Best:   11.97/  18.97 GFLOPS | Progress: (12/20) | 7.64 s
    [Task  2/25]  Current/Best:    3.79/  18.97 GFLOPS | Progress: (16/20) | 9.62 s
    [Task  2/25]  Current/Best:   11.06/  18.97 GFLOPS | Progress: (20/20) | 11.60 s Done.
+
    [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  3/25]  Current/Best:    5.95/  21.68 GFLOPS | Progress: (4/20) | 5.22 s
    [Task  3/25]  Current/Best:   16.67/  21.68 GFLOPS | Progress: (8/20) | 7.17 s
    [Task  3/25]  Current/Best:   19.81/  21.68 GFLOPS | Progress: (12/20) | 10.05 s
    [Task  3/25]  Current/Best:   12.86/  21.68 GFLOPS | Progress: (16/20) | 12.40 s
    [Task  3/25]  Current/Best:   23.99/  23.99 GFLOPS | Progress: (20/20) | 14.80 s Done.
+
    [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  4/25]  Current/Best:    9.40/  17.93 GFLOPS | Progress: (4/20) | 8.85 s
    [Task  4/25]  Current/Best:   16.83/  17.93 GFLOPS | Progress: (8/20) | 10.73 s
    [Task  4/25]  Current/Best:   15.98/  17.93 GFLOPS | Progress: (12/20) | 14.96 s
    [Task  4/25]  Current/Best:   10.41/  17.93 GFLOPS | Progress: (16/20) | 18.17 s
    [Task  4/25]  Current/Best:    6.68/  18.67 GFLOPS | Progress: (20/20) | 20.42 s Done.
+
    [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  5/25]  Current/Best:    5.70/  15.02 GFLOPS | Progress: (4/20) | 4.67 s
    [Task  5/25]  Current/Best:   17.55/  17.55 GFLOPS | Progress: (8/20) | 6.94 s
    [Task  5/25]  Current/Best:   18.19/  18.19 GFLOPS | Progress: (12/20) | 9.25 s
    [Task  5/25]  Current/Best:   10.65/  18.78 GFLOPS | Progress: (16/20) | 11.35 s
    [Task  5/25]  Current/Best:    5.45/  18.78 GFLOPS | Progress: (20/20) | 13.94 s Done.
+
    [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  6/25]  Current/Best:   22.09/  22.09 GFLOPS | Progress: (4/20) | 6.54 s
    [Task  6/25]  Current/Best:   15.92/  22.09 GFLOPS | Progress: (8/20) | 10.86 s
    [Task  6/25]  Current/Best:   11.48/  22.09 GFLOPS | Progress: (12/20) | 13.88 s
    [Task  6/25]  Current/Best:   15.38/  22.09 GFLOPS | Progress: (16/20) | 16.33 s
    [Task  6/25]  Current/Best:   10.89/  22.09 GFLOPS | Progress: (20/20) | 19.01 s Done.
+
    [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  7/25]  Current/Best:   18.78/  18.78 GFLOPS | Progress: (4/20) | 5.22 s
    [Task  7/25]  Current/Best:    6.30/  18.78 GFLOPS | Progress: (8/20) | 8.65 s
    [Task  7/25]  Current/Best:    7.94/  18.78 GFLOPS | Progress: (12/20) | 11.37 s
    [Task  7/25]  Current/Best:   18.77/  20.85 GFLOPS | Progress: (16/20) | 13.27 s
    [Task  7/25]  Current/Best:   18.23/  22.30 GFLOPS | Progress: (20/20) | 15.39 s Done.
+
    [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  8/25]  Current/Best:   16.01/  18.76 GFLOPS | Progress: (4/20) | 5.56 s
    [Task  8/25]  Current/Best:   13.23/  18.76 GFLOPS | Progress: (8/20) | 9.59 s
    [Task  8/25]  Current/Best:    8.18/  18.76 GFLOPS | Progress: (12/20) | 16.75 s
    [Task  8/25]  Current/Best:    6.44/  18.76 GFLOPS | Progress: (16/20) | 22.57 s
    [Task  8/25]  Current/Best:   17.75/  18.76 GFLOPS | Progress: (20/20) | 24.96 s Done.
+
    [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  9/25]  Current/Best:    7.66/  11.14 GFLOPS | Progress: (4/20) | 6.78 s
    [Task  9/25]  Current/Best:    1.95/  11.14 GFLOPS | Progress: (8/20) | 14.13 s
    [Task  9/25]  Current/Best:    8.80/  13.58 GFLOPS | Progress: (12/20) | 17.96 s
    [Task  9/25]  Current/Best:   12.56/  20.38 GFLOPS | Progress: (16/20) | 23.86 s
    [Task  9/25]  Current/Best:   21.33/  21.33 GFLOPS | Progress: (20/20) | 29.58 s Done.
+
    [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 10/25]  Current/Best:    9.74/  14.05 GFLOPS | Progress: (4/20) | 5.43 s
    [Task 10/25]  Current/Best:   15.54/  15.54 GFLOPS | Progress: (8/20) | 7.20 s
    [Task 10/25]  Current/Best:   14.59/  15.89 GFLOPS | Progress: (12/20) | 8.94 s
    [Task 10/25]  Current/Best:    6.56/  18.35 GFLOPS | Progress: (16/20) | 10.90 s
    [Task 10/25]  Current/Best:    7.73/  18.35 GFLOPS | Progress: (20/20) | 14.19 s Done.
+
    [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 11/25]  Current/Best:   11.04/  15.58 GFLOPS | Progress: (4/20) | 6.86 s
    [Task 11/25]  Current/Best:    3.10/  22.64 GFLOPS | Progress: (8/20) | 10.08 s
    [Task 11/25]  Current/Best:   12.34/  22.64 GFLOPS | Progress: (12/20) | 12.42 s
    [Task 11/25]  Current/Best:   10.37/  22.64 GFLOPS | Progress: (16/20) | 14.61 s
    [Task 11/25]  Current/Best:    6.19/  22.64 GFLOPS | Progress: (20/20) | 17.07 s Done.
+
    [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 12/25]  Current/Best:    4.82/  14.37 GFLOPS | Progress: (4/20) | 5.75 s
    [Task 12/25]  Current/Best:   14.87/  15.71 GFLOPS | Progress: (8/20) | 9.25 s
    [Task 12/25]  Current/Best:    4.51/  15.71 GFLOPS | Progress: (12/20) | 12.35 s
    [Task 12/25]  Current/Best:   11.14/  15.71 GFLOPS | Progress: (16/20) | 15.40 s
    [Task 12/25]  Current/Best:   11.76/  21.85 GFLOPS | Progress: (20/20) | 17.49 s Done.
+
    [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 13/25]  Current/Best:   17.58/  18.98 GFLOPS | Progress: (4/20) | 6.01 s
    [Task 13/25]  Current/Best:    7.39/  18.98 GFLOPS | Progress: (8/20) | 10.76 s
    [Task 13/25]  Current/Best:    8.87/  19.72 GFLOPS | Progress: (12/20) | 13.08 s
    [Task 13/25]  Current/Best:   19.14/  20.09 GFLOPS | Progress: (16/20) | 15.20 s
    [Task 13/25]  Current/Best:    9.59/  20.09 GFLOPS | Progress: (20/20) | 18.34 s Done.
+
    [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 14/25]  Current/Best:    6.71/  14.06 GFLOPS | Progress: (4/20) | 11.63 s
    [Task 14/25]  Current/Best:   17.55/  17.55 GFLOPS | Progress: (8/20) | 13.77 s
    [Task 14/25]  Current/Best:   13.72/  19.02 GFLOPS | Progress: (12/20) | 16.96 s
    [Task 14/25]  Current/Best:    1.62/  19.02 GFLOPS | Progress: (16/20) | 29.57 s
    [Task 14/25]  Current/Best:   11.23/  19.02 GFLOPS | Progress: (20/20) | 35.30 s Done.
+
    [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 15/25]  Current/Best:    6.92/   6.92 GFLOPS | Progress: (4/20) | 14.29 s
    [Task 15/25]  Current/Best:    9.51/  16.77 GFLOPS | Progress: (8/20) | 17.46 s
    [Task 15/25]  Current/Best:   19.06/  19.06 GFLOPS | Progress: (12/20) | 19.30 s
    [Task 15/25]  Current/Best:   11.81/  19.06 GFLOPS | Progress: (16/20) | 24.73 s
    [Task 15/25]  Current/Best:    7.19/  19.06 GFLOPS | Progress: (20/20) | 27.95 s Done.
+
    [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 16/25]  Current/Best:   11.11/  16.72 GFLOPS | Progress: (4/20) | 5.05 s
    [Task 16/25]  Current/Best:   14.48/  18.00 GFLOPS | Progress: (8/20) | 7.40 s
    [Task 16/25]  Current/Best:    5.80/  18.00 GFLOPS | Progress: (12/20) | 9.55 s
    [Task 16/25]  Current/Best:   14.01/  18.00 GFLOPS | Progress: (16/20) | 11.67 s
    [Task 16/25]  Current/Best:   14.54/  18.00 GFLOPS | Progress: (20/20) | 13.78 s Done.
+
    [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 17/25]  Current/Best:    5.37/   9.01 GFLOPS | Progress: (4/20) | 6.57 s
    [Task 17/25]  Current/Best:   21.40/  21.40 GFLOPS | Progress: (8/20) | 9.45 s
    [Task 17/25]  Current/Best:    6.55/  21.40 GFLOPS | Progress: (12/20) | 12.96 s
    [Task 17/25]  Current/Best:   23.46/  23.46 GFLOPS | Progress: (16/20) | 15.48 s
    [Task 17/25]  Current/Best:   19.35/  23.46 GFLOPS | Progress: (20/20) | 18.40 s Done.
+
    [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 18/25]  Current/Best:   14.92/  17.88 GFLOPS | Progress: (4/20) | 5.32 s
    [Task 18/25]  Current/Best:    9.47/  17.88 GFLOPS | Progress: (8/20) | 9.12 s
    [Task 18/25]  Current/Best:   18.20/  18.20 GFLOPS | Progress: (12/20) | 13.79 s
    [Task 18/25]  Current/Best:   14.88/  21.28 GFLOPS | Progress: (16/20) | 18.07 s
    [Task 18/25]  Current/Best:   18.78/  22.91 GFLOPS | Progress: (20/20) | 20.67 s Done.
+
    [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 19/25]  Current/Best:    3.09/   9.91 GFLOPS | Progress: (4/20) | 7.52 s
    [Task 19/25]  Current/Best:    2.69/  21.59 GFLOPS | Progress: (8/20) | 14.11 s
    [Task 19/25]  Current/Best:    6.82/  21.59 GFLOPS | Progress: (12/20) | 19.83 s
    [Task 19/25]  Current/Best:   20.48/  22.07 GFLOPS | Progress: (16/20) | 23.46 s
    [Task 19/25]  Current/Best:   17.98/  22.07 GFLOPS | Progress: (20/20) | 27.04 s Done.
+
    [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 20/25]  Current/Best:    3.09/  18.04 GFLOPS | Progress: (4/20) | 15.48 s
    [Task 20/25]  Current/Best:   12.43/  18.48 GFLOPS | Progress: (8/20) | 18.95 s
    [Task 20/25]  Current/Best:    5.34/  18.48 GFLOPS | Progress: (12/20) | 22.80 s
    [Task 20/25]  Current/Best:    8.99/  18.48 GFLOPS | Progress: (16/20) | 25.48 s
    [Task 20/25]  Current/Best:   12.63/  18.48 GFLOPS | Progress: (20/20) | 29.96 s
    [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 21/25]  Current/Best:    5.30/  19.82 GFLOPS | Progress: (4/20) | 4.60 s
    [Task 21/25]  Current/Best:    5.01/  19.82 GFLOPS | Progress: (8/20) | 7.24 s
    [Task 21/25]  Current/Best:    2.76/  19.82 GFLOPS | Progress: (12/20) | 14.44 s
    [Task 21/25]  Current/Best:    6.78/  19.82 GFLOPS | Progress: (16/20) | 25.62 s
    [Task 21/25]  Current/Best:   17.94/  20.63 GFLOPS | Progress: (20/
 20) | 28.63 s
    [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 22/25]  Current/Best:    7.01/  19.24 GFLOPS | Progress: (4/20) | 5.69 s
    [Task 22/25]  Current/Best:    6.77/  19.24 GFLOPS | Progress: (8/20) | 8.24 s
    [Task 22/25]  Current/Best:   16.99/  19.24 GFLOPS | Progress: (12/20) | 10.06 s
    [Task 22/25]  Current/Best:   20.57/  21.20 GFLOPS | Progress: (16/20) | 11.62 s
    [Task 22/25]  Current/Best:   19.70/  21.20 GFLOPS | Progress: (20/20) | 13.70 s Done.
+
    [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 23/25]  Current/Best:    5.34/  21.31 GFLOPS | Progress: (4/20) | 5.59 s
    [Task 23/25]  Current/Best:   10.00/  21.87 GFLOPS | Progress: (8/20) | 8.00 s
    [Task 23/25]  Current/Best:    8.06/  21.87 GFLOPS | Progress: (12/20) | 11.39 s
    [Task 23/25]  Current/Best:    7.21/  21.87 GFLOPS | Progress: (16/20) | 14.17 s
    [Task 23/25]  Current/Best:   13.07/  22.73 GFLOPS | Progress: (20/20) | 16.78 s Done.
+
    [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 24/25]  Current/Best:    1.00/   3.41 GFLOPS | Progress: (4/20) | 10.81 s
    [Task 24/25]  Current/Best:    6.46/   8.52 GFLOPS | Progress: (8/20) | 15.96 s
    [Task 24/25]  Current/Best:    3.54/   8.60 GFLOPS | Progress: (12/20) | 26.93 s
    [Task 24/25]  Current/Best:    1.18/   8.60 GFLOPS | Progress: (16/20) | 37.67 s Done.
+     Done.
+
    [Task 24/25]  Current/Best:    4.43/   8.60 GFLOPS | Progress: (20/20) | 50.14 s
    [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 25/25]  Current/Best:    8.73/   8.73 GFLOPS | Progress: (4/20) | 9.95 s
    [Task 25/25]  Current/Best:    1.54/   8.73 GFLOPS | Progress: (8/20) | 11.71 s
    [Task 25/25]  Current/Best:    1.55/   8.73 GFLOPS | Progress: (12/20) | 14.84 s
    [Task 25/25]  Current/Best:    1.53/   8.73 GFLOPS | Progress: (16/20) | 23.47 s
    [Task 25/25]  Current/Best:    3.80/   8.73 GFLOPS | Progress: (20/20) | 34.44 s
 
 
 
@@ -674,7 +675,6 @@ model using optimized operators to speed up our computations.
 
      Done.
      Done.
-     Done.
 
 
 
@@ -708,7 +708,7 @@ Verify that the optimized model runs and produces the same results:
 
  .. code-block:: none
 
-    class='n02123045 tabby, tabby cat' with probability=0.621103
+    class='n02123045 tabby, tabby cat' with probability=0.621104
     class='n02123159 tiger cat' with probability=0.356379
     class='n02124075 Egyptian cat' with probability=0.019712
     class='n02129604 tiger, Panthera tigris' with probability=0.001215
@@ -766,8 +766,8 @@ improvement in comparing the optimized model to the unoptimized model.
 
  .. code-block:: none
 
-    optimized: {'mean': 406.16556831002526, 'median': 405.9295711504092, 'std': 2.1522289666982393}
-    unoptimized: {'mean': 492.42305131010653, 'median': 492.02672249994066, 'std': 1.9230358173532875}
+    optimized: {'mean': 408.77945757001726, 'median': 409.039544100051, 'std': 1.960274395206214}
+    unoptimized: {'mean': 493.1730829400112, 'median': 493.10015995001777, 'std': 1.346728671812525}
 
 
 
@@ -790,7 +790,7 @@ profiling/benchmarking.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 13 minutes  14.512 seconds)
+   **Total running time of the script:** ( 13 minutes  25.613 seconds)
 
 
 .. _sphx_glr_download_tutorial_autotvm_relay_x86.py:
diff --git a/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt b/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
index 782f36a99f..50904fc02f 100644
--- a/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
+++ b/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
@@ -274,7 +274,7 @@ device and returns the measured cost. Network overhead is excluded.
 
  .. code-block:: none
 
-    1.146e-07 secs/op
+    1.323e-07 secs/op
 
 
 
diff --git a/docs/_sources/tutorial/intro_topi.rst.txt b/docs/_sources/tutorial/intro_topi.rst.txt
index f697433d3a..94305b0900 100644
--- a/docs/_sources/tutorial/intro_topi.rst.txt
+++ b/docs/_sources/tutorial/intro_topi.rst.txt
@@ -270,7 +270,7 @@ As you can see, scheduled stages of computation have been accumulated and we can
 
  .. code-block:: none
 
-    [stage(a, placeholder(a, 0x2b072a00)), stage(b, placeholder(b, 0x2b1edd50)), stage(T_add, compute(T_add, body=[a[ax0, ax1, ax2] + b[ax1, ax2]], axis=[T.iter_var(ax0, T.Range(0, 100), "DataPar", ""), T.iter_var(ax1, T.Range(0, 10), "DataPar", ""), T.iter_var(ax2, T.Range(0, 10), "DataPar", "")], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[a[ax0, ax1, ax2] * b[ax1, ax2]], axis=[T.iter_var(ax0, T.Range(0, 100), "DataPar", ""), T.iter_var(ax1, T [...]
+    [stage(a, placeholder(a, 0x82cf570)), stage(b, placeholder(b, 0xd14ad60)), stage(T_add, compute(T_add, body=[a[ax0, ax1, ax2] + b[ax1, ax2]], axis=[T.iter_var(ax0, T.Range(0, 100), "DataPar", ""), T.iter_var(ax1, T.Range(0, 10), "DataPar", ""), T.iter_var(ax2, T.Range(0, 10), "DataPar", "")], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[a[ax0, ax1, ax2] * b[ax1, ax2]], axis=[T.iter_var(ax0, T.Range(0, 100), "DataPar", ""), T.iter_var(ax1, T.R [...]
 
 
 
diff --git a/docs/_sources/tutorial/sg_execution_times.rst.txt b/docs/_sources/tutorial/sg_execution_times.rst.txt
index 0734faf298..c831f734f5 100644
--- a/docs/_sources/tutorial/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorial/sg_execution_times.rst.txt
@@ -5,24 +5,24 @@
 
 Computation times
 =================
-**16:41.592** total execution time for **tutorial** files:
+**16:56.330** total execution time for **tutorial** files:
 
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)                 | 13:14.512 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)                 | 13:25.613 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``) | 01:22.764 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``) | 01:28.364 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)     | 01:00.491 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)     | 01:00.707 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)                 | 00:43.831 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)                 | 00:43.121 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)               | 00:17.952 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)               | 00:16.461 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)                               | 00:01.008 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)                               | 00:01.006 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)       | 00:00.844 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)       | 00:00.872 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``) | 00:00.191 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``) | 00:00.186 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_tutorial_uma.py` (``uma.py``)                                             | 00:00.000 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
index b5223b470f..1c1adf6479 100644
--- a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
+++ b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
@@ -286,7 +286,7 @@ helper function to run a profile of the TVM generated code.
  .. code-block:: none
 
     Numpy running time: 0.000007
-    naive: 0.000007
+    naive: 0.000008
 
 
 
@@ -389,7 +389,7 @@ compile and run this new schedule with the parallel operation applied:
 
  .. code-block:: none
 
-    parallel: 0.000007
+    parallel: 0.000013
 
 
 
@@ -444,7 +444,7 @@ factor to be the number of threads on your CPU.
 
  .. code-block:: none
 
-    vector: 0.000039
+    vector: 0.000043
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -498,10 +498,10 @@ We can now compare the different schedules
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                   numpy    6.896490012877621e-06                    1.0
-                   naive    6.7998000000000005e-06    0.9859798226783373
-                parallel              6.9587e-06      1.0090205288496346
-                  vector             3.90234e-05      5.6584436325047545
+                   numpy    7.499560015276075e-06                    1.0
+                   naive    8.315599999999999e-06       1.10881171469549
+                parallel    1.3258600000000002e-05    1.7679170475325445
+                  vector             4.33849e-05       5.784992707789259
 
 
 
@@ -922,7 +922,7 @@ matrix multiplication.
 
  .. code-block:: none
 
-    Numpy running time: 0.018753
+    Numpy running time: 0.018171
 
 
 
@@ -980,7 +980,7 @@ optimizations.
 
  .. code-block:: none
 
-    none: 3.412786
+    none: 3.448399
 
 
 
@@ -1080,7 +1080,7 @@ schedule.
 
  .. code-block:: none
 
-    blocking: 0.303967
+    blocking: 0.297918
 
 
 
@@ -1164,7 +1164,7 @@ already cache friendly from our previous optimizations.
 
  .. code-block:: none
 
-    vectorization: 0.295515
+    vectorization: 0.281544
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1230,7 +1230,7 @@ more cache friendly.
 
  .. code-block:: none
 
-    loop permutation: 0.118542
+    loop permutation: 0.114594
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1321,7 +1321,7 @@ optimized schedule.
 
  .. code-block:: none
 
-    array packing: 0.107932
+    array packing: 0.107713
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1404,7 +1404,7 @@ to `C` when all the block results are ready.
 
  .. code-block:: none
 
-    block caching: 0.111253
+    block caching: 0.112273
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1478,7 +1478,7 @@ of thread-level parallelization.
 
  .. code-block:: none
 
-    parallelization: 0.132670
+    parallelization: 0.133006
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1548,13 +1548,13 @@ working, we can compare the results.
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                    none            3.4127856664                     1.0
-                blocking            0.3039669798     0.08906711686955765
-           vectorization            0.2955146439     0.08659044920676943
-        loop permutation            0.1185416869      0.0347345829733997
-           array packing            0.1079322868    0.031625861495677546
-           block caching     0.11125346250000001     0.03259901833136696
-         parallelization            0.1326699571     0.03887438886250006
+                    none      3.4483993605000003                     1.0
+                blocking            0.2979181445     0.08639316777300508
+           vectorization            0.2815437775      0.0816447714046605
+        loop permutation     0.11459397909999999     0.03323106378357072
+           array packing     0.10771287500000001     0.03123561506065881
+           block caching     0.11227331139999999     0.03255809425266827
+         parallelization            0.1330058102     0.03857030358012676
 
 
 
@@ -1596,7 +1596,7 @@ the computation for specific platforms.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  0.491 seconds)
+   **Total running time of the script:** ( 1 minutes  0.707 seconds)
 
 
 .. _sphx_glr_download_tutorial_tensor_expr_get_started.py:
diff --git a/docs/api/rust/.lock b/docs/api/rust/.lock
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docs/api/rust/array/all.html b/docs/api/rust/array/all.html
new file mode 100644
index 0000000000..30809192a6
--- /dev/null
+++ b/docs/api/rust/array/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
diff --git a/docs/api/rust/array/fn.main.html b/docs/api/rust/array/fn.main.html
new file mode 100644
index 0000000000..d162953db4
--- /dev/null
+++ b/docs/api/rust/array/fn.main.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `main` fn in crate `array`."><title>main in array - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hr [...]
\ No newline at end of file
diff --git a/docs/api/rust/array/fn.sum.html b/docs/api/rust/array/fn.sum.html
new file mode 100644
index 0000000000..10b1593173
--- /dev/null
+++ b/docs/api/rust/array/fn.sum.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `sum` fn in crate `array`."><title>sum in array - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href [...]
\ No newline at end of file
diff --git a/docs/api/rust/array/index.html b/docs/api/rust/array/index.html
new file mode 100644
index 0000000000..3444df7d12
--- /dev/null
+++ b/docs/api/rust/array/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `array` crate."><title>array - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/F [...]
\ No newline at end of file
diff --git a/docs/api/rust/array/sidebar-items.js b/docs/api/rust/array/sidebar-items.js
new file mode 100644
index 0000000000..59aa4c9099
--- /dev/null
+++ b/docs/api/rust/array/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"fn":["main","sum"]};
\ No newline at end of file
diff --git a/docs/api/rust/basics/all.html b/docs/api/rust/basics/all.html
new file mode 100644
index 0000000000..f4fa9c7066
--- /dev/null
+++ b/docs/api/rust/basics/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
diff --git a/docs/api/rust/basics/fn.main.html b/docs/api/rust/basics/fn.main.html
new file mode 100644
index 0000000000..a04f54a376
--- /dev/null
+++ b/docs/api/rust/basics/fn.main.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `main` fn in crate `basics`."><title>main in basics - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin  [...]
\ No newline at end of file
diff --git a/docs/api/rust/basics/index.html b/docs/api/rust/basics/index.html
new file mode 100644
index 0000000000..19f5df6611
--- /dev/null
+++ b/docs/api/rust/basics/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `basics` crate."><title>basics - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files [...]
\ No newline at end of file
diff --git a/docs/api/rust/basics/sidebar-items.js b/docs/api/rust/basics/sidebar-items.js
new file mode 100644
index 0000000000..9b556a055c
--- /dev/null
+++ b/docs/api/rust/basics/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"fn":["main"]};
\ No newline at end of file
diff --git a/docs/api/rust/compiler_ext/all.html b/docs/api/rust/compiler_ext/all.html
new file mode 100644
index 0000000000..b368fb175a
--- /dev/null
+++ b/docs/api/rust/compiler_ext/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
diff --git a/docs/api/rust/compiler_ext/fn.tvm_export.html b/docs/api/rust/compiler_ext/fn.tvm_export.html
new file mode 100644
index 0000000000..e584bcda0d
--- /dev/null
+++ b/docs/api/rust/compiler_ext/fn.tvm_export.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `tvm_export` fn in crate `compiler_ext`."><title>tvm_export in compiler_ext - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type=" [...]
\ No newline at end of file
diff --git a/docs/api/rust/compiler_ext/index.html b/docs/api/rust/compiler_ext/index.html
new file mode 100644
index 0000000000..9031df3bde
--- /dev/null
+++ b/docs/api/rust/compiler_ext/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `compiler_ext` crate."><title>compiler_ext - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../ [...]
\ No newline at end of file
diff --git a/docs/api/rust/compiler_ext/sidebar-items.js b/docs/api/rust/compiler_ext/sidebar-items.js
new file mode 100644
index 0000000000..5c641cb076
--- /dev/null
+++ b/docs/api/rust/compiler_ext/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"fn":["tvm_export"]};
\ No newline at end of file
diff --git a/docs/api/rust/crates.js b/docs/api/rust/crates.js
new file mode 100644
index 0000000000..1c8157e684
--- /dev/null
+++ b/docs/api/rust/crates.js
@@ -0,0 +1 @@
+window.ALL_CRATES = ["array","basics","compiler_ext","error","float","int","resnet","string","test_rt_nn","test_rt_tvm_basic","test_rt_tvm_dso","tvm","tvm_graph_rt","tvm_macros","tvm_rt","tvm_sys","tyck"];
\ No newline at end of file
diff --git a/docs/api/rust/error/all.html b/docs/api/rust/error/all.html
new file mode 100644
index 0000000000..ad0b3babc3
--- /dev/null
+++ b/docs/api/rust/error/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
diff --git a/docs/api/rust/error/fn.error.html b/docs/api/rust/error/fn.error.html
new file mode 100644
index 0000000000..8b884f0a1e
--- /dev/null
+++ b/docs/api/rust/error/fn.error.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `error` fn in crate `error`."><title>error in error - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin  [...]
\ No newline at end of file
diff --git a/docs/api/rust/error/fn.main.html b/docs/api/rust/error/fn.main.html
new file mode 100644
index 0000000000..79e67591fe
--- /dev/null
+++ b/docs/api/rust/error/fn.main.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `main` fn in crate `error`."><title>main in error - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hr [...]
\ No newline at end of file
diff --git a/docs/api/rust/error/index.html b/docs/api/rust/error/index.html
new file mode 100644
index 0000000000..3b6ab9584f
--- /dev/null
+++ b/docs/api/rust/error/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `error` crate."><title>error - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/F [...]
\ No newline at end of file
diff --git a/docs/api/rust/error/sidebar-items.js b/docs/api/rust/error/sidebar-items.js
new file mode 100644
index 0000000000..069da2e640
--- /dev/null
+++ b/docs/api/rust/error/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"fn":["error","main"]};
\ No newline at end of file
diff --git a/docs/api/rust/float/all.html b/docs/api/rust/float/all.html
new file mode 100644
index 0000000000..a961e3a011
--- /dev/null
+++ b/docs/api/rust/float/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
diff --git a/docs/api/rust/float/fn.main.html b/docs/api/rust/float/fn.main.html
new file mode 100644
index 0000000000..78a1bd167c
--- /dev/null
+++ b/docs/api/rust/float/fn.main.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `main` fn in crate `float`."><title>main in float - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hr [...]
\ No newline at end of file
diff --git a/docs/api/rust/float/fn.sum.html b/docs/api/rust/float/fn.sum.html
new file mode 100644
index 0000000000..c1333c74b2
--- /dev/null
+++ b/docs/api/rust/float/fn.sum.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `sum` fn in crate `float`."><title>sum in float - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href [...]
\ No newline at end of file
diff --git a/docs/api/rust/float/index.html b/docs/api/rust/float/index.html
new file mode 100644
index 0000000000..a6120cb395
--- /dev/null
+++ b/docs/api/rust/float/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `float` crate."><title>float - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/F [...]
\ No newline at end of file
diff --git a/docs/api/rust/float/sidebar-items.js b/docs/api/rust/float/sidebar-items.js
new file mode 100644
index 0000000000..59aa4c9099
--- /dev/null
+++ b/docs/api/rust/float/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"fn":["main","sum"]};
\ No newline at end of file
diff --git a/docs/api/rust/help.html b/docs/api/rust/help.html
new file mode 100644
index 0000000000..a3c3134f2b
--- /dev/null
+++ b/docs/api/rust/help.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Documentation for Rustdoc"><title>Rustdoc help</title><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/FiraSans-Regular-018c14 [...]
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/clone/trait.Clone.js b/docs/api/rust/implementors/core/clone/trait.Clone.js
new file mode 100644
index 0000000000..5fbfd230cb
--- /dev/null
+++ b/docs/api/rust/implementors/core/clone/trait.Clone.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"tvm/ir/relay/attrs/reduce/struct.ReduceAttrs.html\" title=\"struct tvm::ir::relay::attrs::reduce::ReduceAttrs\">ReduceAttrs</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"tvm/ir/rela [...]
+"tvm_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"tvm_rt/string/struct.String.html\" title=\"struct tvm_rt::string::String\">String</a>"],["impl&lt;T: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> + <a class=\"trait\" href=\"tvm_rt/object/trait.IsObjectRef.html\" title=\" [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.DLDevice.html\" title=\"struct tvm_sys::ffi::DLDevice\">DLDevice</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"tvm_sys/packed_func/enum.ArgValue.html\ [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/cmp/trait.Eq.js b/docs/api/rust/implementors/core/cmp/trait.Eq.js
new file mode 100644
index 0000000000..81058dc279
--- /dev/null
+++ b/docs/api/rust/implementors/core/cmp/trait.Eq.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"tvm/ir/relay/attrs/nn/struct.BatchMatmulAttrs.html\" title=\"struct tvm::ir::relay::attrs::nn::BatchMatmulAttrs\">BatchMatmulAttrs</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"tvm/ir/relay/struct.Call.html\ [...]
+"tvm_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"tvm_rt/string/struct.String.html\" title=\"struct tvm_rt::string::String\">String</a>"],["impl&lt;T: <a class=\"trait\" href=\"tvm_rt/object/trait.IsObject.html\" title=\"trait tvm_rt::object::IsObject\">IsObject</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.Eq.html\" title=\"trait core [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.__fsid_t.html\" title=\"struct tvm_sys::ffi::__fsid_t\">__fsid_t</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"tvm_sys/device/enum.DeviceType.html\" title=\"enum tvm_sys::device::DeviceT [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/cmp/trait.Ord.js b/docs/api/rust/implementors/core/cmp/trait.Ord.js
new file mode 100644
index 0000000000..45699a572e
--- /dev/null
+++ b/docs/api/rust/implementors/core/cmp/trait.Ord.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"tvm_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"tvm_rt/string/struct.String.html\" title=\"struct tvm_rt::string::String\">String</a>"]],
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"tvm_sys/datatype/struct.DataType.html\" title=\"struct tvm_sys::datatype::DataType\">DataType</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/cmp/trait.PartialEq.js b/docs/api/rust/implementors/core/cmp/trait.PartialEq.js
new file mode 100644
index 0000000000..7f50d0cb12
--- /dev/null
+++ b/docs/api/rust/implementors/core/cmp/trait.PartialEq.js
@@ -0,0 +1,6 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"struct\" href=\"tvm/ir/relay/attrs/transform/struct.StridedSliceAttrs.html\" title=\"struct tvm::ir::relay::attrs::transform::StridedSliceAttrs\">StridedSliceAttrs</a>&gt; for <a class=\"struct\" href=\"tvm/ir/relay/attrs/transform/struct.StridedSliceAttrs.html\" title=\"struct tvm::ir::relay::attrs::transform::StridedSl [...]
+"tvm_graph_rt":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"enum\" href=\"tvm_graph_rt/enum.Storage.html\" title=\"enum tvm_graph_rt::Storage\">Storage</a>&lt;'a&gt;&gt; for <a class=\"enum\" href=\"tvm_graph_rt/enum.Storage.html\" title=\"enum tvm_graph_rt::Storage\">Storage</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1 [...]
+"tvm_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"struct\" href=\"tvm_rt/ndarray/struct.NDArray.html\" title=\"struct tvm_rt::ndarray::NDArray\">NDArray</a>&gt; for <a class=\"struct\" href=\"tvm_rt/ndarray/struct.NDArray.html\" title=\"struct tvm_rt::ndarray::NDArray\">NDArray</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.Par [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"struct\" href=\"tvm_sys/ffi/struct.DLDevice.html\" title=\"struct tvm_sys::ffi::DLDevice\">DLDevice</a>&gt; for <a class=\"struct\" href=\"tvm_sys/ffi/struct.DLDevice.html\" title=\"struct tvm_sys::ffi::DLDevice\">DLDevice</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.PartialE [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/cmp/trait.PartialOrd.js b/docs/api/rust/implementors/core/cmp/trait.PartialOrd.js
new file mode 100644
index 0000000000..21afe782ba
--- /dev/null
+++ b/docs/api/rust/implementors/core/cmp/trait.PartialOrd.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"tvm_rt":[["impl&lt;T: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a>&lt;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.69.0/std/primitive.u8.html\">u8</a>]&gt;&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>&lt;T&gt; for <a class=\"struct\" href=\"tvm_rt/string/struct.String.html\" titl [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>&lt;<a class=\"struct\" href=\"tvm_sys/datatype/struct.DataType.html\" title=\"struct tvm_sys::datatype::DataType\">DataType</a>&gt; for <a class=\"struct\" href=\"tvm_sys/datatype/struct.DataType.html\" title=\"struct tvm_sys::datatype::DataType\">DataType</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/convert/trait.AsRef.js b/docs/api/rust/implementors/core/convert/trait.AsRef.js
new file mode 100644
index 0000000000..606f7ca2be
--- /dev/null
+++ b/docs/api/rust/implementors/core/convert/trait.AsRef.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"tvm":[["impl&lt;O&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a>&lt;O&gt; for <a class=\"struct\" href=\"tvm/ir/relay/attrs/transform/struct.ClipAttrsNode.html\" title=\"struct tvm::ir::relay::attrs::transform::ClipAttrsNode\">ClipAttrsNode</a><span class=\"where fmt-newline\">where\n    <a class=\"struct\" href=\"tvm/ir/attrs/struct.BaseAttrsNode.html\" title=\"struct tvm::ir::attrs::BaseAttr [...]
+"tvm_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a>&lt;<a class=\"struct\" href=\"tvm_rt/ndarray/struct.NDArrayContainer.html\" title=\"struct tvm_rt::ndarray::NDArrayContainer\">NDArrayContainer</a>&gt; for <a class=\"struct\" href=\"tvm_rt/ndarray/struct.NDArrayContainer.html\" title=\"struct tvm_rt::ndarray::NDArrayContainer\">NDArrayContainer</a>"],["impl&lt;O&gt; <a class=\"trait\" [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/convert/trait.From.js b/docs/api/rust/implementors/core/convert/trait.From.js
new file mode 100644
index 0000000000..4bc073f75e
--- /dev/null
+++ b/docs/api/rust/implementors/core/convert/trait.From.js
@@ -0,0 +1,6 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"struct\" href=\"tvm/runtime/struct.ObjectPtr.html\" title=\"struct tvm::runtime::ObjectPtr\">ObjectPtr</a>&lt;<a class=\"struct\" href=\"tvm/ir/ty/struct.PrimTypeNode.html\" title=\"struct tvm::ir::ty::PrimTypeNode\">PrimTypeNode</a>&gt;&gt; for <a class=\"struct\" href=\"tvm/ir/ty/struct.PrimType.html\" title=\"struct tvm::ir: [...]
+"tvm_graph_rt":[["impl&lt;'a, D: <a class=\"trait\" href=\"https://docs.rs/ndarray/0.12/ndarray/dimension/dimension_trait/trait.Dimension.html\" title=\"trait ndarray::dimension::dimension_trait::Dimension\">Dimension</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;&amp;'a <a class=\"struct\" href=\"https://docs.rs/ndarray/0.12/ndarray/struct.ArrayBase.html\" title=\"struct ndarray::ArrayBas [...]
+"tvm_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"struct\" href=\"tvm_rt/function/struct.Function.html\" title=\"struct tvm_rt::function::Function\">Function</a>&gt; for <a class=\"enum\" href=\"tvm_rt/enum.RetValue.html\" title=\"enum tvm_rt::RetValue\">RetValue</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.From.html\" title=\"t [...]
+"tvm_sys":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;&amp;'a <a class=\"struct\" href=\"tvm_sys/device/struct.Device.html\" title=\"struct tvm_sys::device::Device\">Device</a>&gt; for <a class=\"struct\" href=\"tvm_sys/ffi/struct.DLDevice.html\" title=\"struct tvm_sys::ffi::DLDevice\">DLDevice</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/convert/trait.TryFrom.js b/docs/api/rust/implementors/core/convert/trait.TryFrom.js
new file mode 100644
index 0000000000..61118732ba
--- /dev/null
+++ b/docs/api/rust/implementors/core/convert/trait.TryFrom.js
@@ -0,0 +1,6 @@
+(function() {var implementors = {
+"tvm":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a>&lt;<a class=\"enum\" href=\"tvm/function/enum.ArgValue.html\" title=\"enum tvm::function::ArgValue\">ArgValue</a>&lt;'a&gt;&gt; for <a class=\"struct\" href=\"tvm/ir/tir/struct.Sub.html\" title=\"struct tvm::ir::tir::Sub\">Sub</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/tr [...]
+"tvm_graph_rt":[["impl&lt;'t&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a>&lt;<a class=\"struct\" href=\"tvm_graph_rt/struct.Tensor.html\" title=\"struct tvm_graph_rt::Tensor\">Tensor</a>&lt;'t&gt;&gt; for <a class=\"type\" href=\"https://docs.rs/ndarray/0.12/ndarray/aliases/type.ArrayD.html\" title=\"type ndarray::aliases::ArrayD\">ArrayD</a>&lt;<a class=\"primitive\" href=\"https://doc [...]
+"tvm_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a>&lt;<a class=\"enum\" href=\"tvm_rt/enum.RetValue.html\" title=\"enum tvm_rt::RetValue\">RetValue</a>&gt; for <a class=\"struct\" href=\"tvm_rt/object/struct.ObjectRef.html\" title=\"struct tvm_rt::object::ObjectRef\">ObjectRef</a>"],["impl&lt;'a, T: <a class=\"trait\" href=\"tvm_rt/object/trait.IsObjectRef.html\" title=\"trait tv [...]
+"tvm_sys":[["impl&lt;'a, 'v&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a>&lt;&amp;'a <a class=\"enum\" href=\"tvm_sys/packed_func/enum.ArgValue.html\" title=\"enum tvm_sys::packed_func::ArgValue\">ArgValue</a>&lt;'v&gt;&gt; for <a class=\"primitive\" href=\"https://doc.rust-lang.org/1.69.0/std/primitive.i8.html\">i8</a>"],["impl&lt;'a, 'v&gt; <a class=\"trait\" href=\"https://doc.rust-la [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/default/trait.Default.js b/docs/api/rust/implementors/core/default/trait.Default.js
new file mode 100644
index 0000000000..c810b56fe5
--- /dev/null
+++ b/docs/api/rust/implementors/core/default/trait.Default.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"tvm/compiler/graph_rt/struct.CompilerConfig.html\" title=\"struct tvm::compiler::graph_rt::CompilerConfig\">CompilerConfig</a>"]],
+"tvm_graph_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"tvm_graph_rt/struct.SystemLibModule.html\" title=\"struct tvm_graph_rt::SystemLibModule\">SystemLibModule</a>"]],
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.DLTensor.html\" title=\"struct tvm_sys::ffi::DLTensor\">DLTensor</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"union\" href=\"tvm_sys/ffi/union.TVMValue.h [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/error/trait.Error.js b/docs/api/rust/implementors/core/error/trait.Error.js
new file mode 100644
index 0000000000..f4137a271a
--- /dev/null
+++ b/docs/api/rust/implementors/core/error/trait.Error.js
@@ -0,0 +1,6 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"tvm/compiler/graph_rt/enum.Error.html\" title=\"enum tvm::compiler::graph_rt::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"tvm/ir/module/enum.Error.html\" title=\"enum tv [...]
+"tvm_graph_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"tvm_graph_rt/errors/enum.GraphFormatError.html\" title=\"enum tvm_graph_rt::errors::GraphFormatError\">GraphFormatError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"tvm_grap [...]
+"tvm_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"tvm_rt/errors/struct.TypeMismatchError.html\" title=\"struct tvm_rt::errors::TypeMismatchError\">TypeMismatchError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"tvm_rt/errors/enum. [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"tvm_sys/errors/struct.ValueDowncastError.html\" title=\"struct tvm_sys::errors::ValueDowncastError\">ValueDowncastError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"tvm_sys/dev [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/fmt/trait.Debug.js b/docs/api/rust/implementors/core/fmt/trait.Debug.js
new file mode 100644
index 0000000000..3873f4f395
--- /dev/null
+++ b/docs/api/rust/implementors/core/fmt/trait.Debug.js
@@ -0,0 +1,7 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"tvm/ir/tir/struct.GeNode.html\" title=\"struct tvm::ir::tir::GeNode\">GeNode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"tvm/ir/relay/struct.MatchNode.html\" title=\"struct tvm::ir::relay [...]
+"tvm_graph_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"tvm_graph_rt/struct.Entry.html\" title=\"struct tvm_graph_rt::Entry\">Entry</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"tvm_graph_rt/errors/struct.FunctionNotFound.html\" title=\ [...]
+"tvm_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"tvm_rt/module/struct.ModuleNode.html\" title=\"struct tvm_rt::module::ModuleNode\">ModuleNode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"tvm_rt/object/struct.Object.html\" title=\"str [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"tvm_sys/device/struct.Device.html\" title=\"struct tvm_sys::device::Device\">Device</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.DLManagedTensor.html\" title=\"struc [...]
+"tyck":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"tyck/struct.Opt.html\" title=\"struct tyck::Opt\">Opt</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/fmt/trait.Display.js b/docs/api/rust/implementors/core/fmt/trait.Display.js
new file mode 100644
index 0000000000..795f9a7f2d
--- /dev/null
+++ b/docs/api/rust/implementors/core/fmt/trait.Display.js
@@ -0,0 +1,6 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"tvm/ir/module/enum.Error.html\" title=\"enum tvm::ir::module::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"tvm/compiler/graph_rt/enum.Error.html\" title=\"enum tvm::c [...]
+"tvm_graph_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"tvm_graph_rt/errors/enum.ArrayError.html\" title=\"enum tvm_graph_rt::errors::ArrayError\">ArrayError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"tvm_graph_rt/errors/st [...]
+"tvm_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"tvm_rt/errors/enum.Error.html\" title=\"enum tvm_rt::errors::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"tvm_rt/errors/struct.TypeMismatchError.html\" title=\"s [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"tvm_sys/value/struct.UnsupportedDeviceError.html\" title=\"struct tvm_sys::value::UnsupportedDeviceError\">UnsupportedDeviceError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/hash/trait.Hash.js b/docs/api/rust/implementors/core/hash/trait.Hash.js
new file mode 100644
index 0000000000..c72bedaceb
--- /dev/null
+++ b/docs/api/rust/implementors/core/hash/trait.Hash.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"tvm/ir/relay/attrs/transform/struct.SplitAttrs.html\" title=\"struct tvm::ir::relay::attrs::transform::SplitAttrs\">SplitAttrs</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"tvm/ir/span/struct [...]
+"tvm_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"tvm_rt/module/struct.Module.html\" title=\"struct tvm_rt::module::Module\">Module</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"tvm_rt/string/struct.String.html\" title=\"struct tvm_rt::st [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"tvm_sys/device/enum.DeviceType.html\" title=\"enum tvm_sys::device::DeviceType\">DeviceType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"tvm_sys/device/struct.Device.html\" title=\"struct  [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/iter/traits/collect/trait.FromIterator.js b/docs/api/rust/implementors/core/iter/traits/collect/trait.FromIterator.js
new file mode 100644
index 0000000000..92ad95e9d0
--- /dev/null
+++ b/docs/api/rust/implementors/core/iter/traits/collect/trait.FromIterator.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"tvm_rt":[["impl&lt;'a, K, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/iter/traits/collect/trait.FromIterator.html\" title=\"trait core::iter::traits::collect::FromIterator\">FromIterator</a>&lt;(<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.69.0/std/primitive.reference.html\">&amp;'a K</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/1.69.0/std/primitive.reference.html\">&amp;'a V</a>)&gt; for <a class=\"struct\" href=\"tvm_rt/map/struct [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/iter/traits/collect/trait.IntoIterator.js b/docs/api/rust/implementors/core/iter/traits/collect/trait.IntoIterator.js
new file mode 100644
index 0000000000..16f30145bd
--- /dev/null
+++ b/docs/api/rust/implementors/core/iter/traits/collect/trait.IntoIterator.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"tvm_rt":[["impl&lt;T: <a class=\"trait\" href=\"tvm_rt/object/trait.IsObjectRef.html\" title=\"trait tvm_rt::object::IsObjectRef\">IsObjectRef</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/iter/traits/collect/trait.IntoIterator.html\" title=\"trait core::iter::traits::collect::IntoIterator\">IntoIterator</a> for <a class=\"struct\" href=\"tvm_rt/array/struct.Array.html\" title=\"struct tvm_rt::array::Array\">Array</a>&lt;T&gt;"],["impl&lt;K, V&gt; <a class=\"tr [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/iter/traits/iterator/trait.Iterator.js b/docs/api/rust/implementors/core/iter/traits/iterator/trait.Iterator.js
new file mode 100644
index 0000000000..716e726c40
--- /dev/null
+++ b/docs/api/rust/implementors/core/iter/traits/iterator/trait.Iterator.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"tvm_rt":[["impl&lt;K, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"tvm_rt/map/struct.IntoIter.html\" title=\"struct tvm_rt::map::IntoIter\">IntoIter</a>&lt;K, V&gt;<span class=\"where fmt-newline\">where\n    K: <a class=\"trait\" href=\"tvm_rt/object/trait.IsObjectRef.html\" title=\"trait tvm_rt::object::IsObjectRef\">IsO [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/marker/trait.Copy.js b/docs/api/rust/implementors/core/marker/trait.Copy.js
new file mode 100644
index 0000000000..a18bfb61a7
--- /dev/null
+++ b/docs/api/rust/implementors/core/marker/trait.Copy.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"tvm_sys/device/struct.Device.html\" title=\"struct tvm_sys::device::Device\">Device</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.TVMByteArray.html\" title=\"st [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/marker/trait.Freeze.js b/docs/api/rust/implementors/core/marker/trait.Freeze.js
new file mode 100644
index 0000000000..9b1c128b06
--- /dev/null
+++ b/docs/api/rust/implementors/core/marker/trait.Freeze.js
@@ -0,0 +1,7 @@
+(function() {var implementors = {
+"tvm":[["impl Freeze for <a class=\"enum\" href=\"tvm/compiler/graph_rt/enum.Error.html\" title=\"enum tvm::compiler::graph_rt::Error\">Error</a>",1,["tvm::compiler::graph_rt::Error"]],["impl Freeze for <a class=\"struct\" href=\"tvm/compiler/graph_rt/struct.CompilerConfig.html\" title=\"struct tvm::compiler::graph_rt::CompilerConfig\">CompilerConfig</a>",1,["tvm::compiler::graph_rt::CompilerConfig"]],["impl !Freeze for <a class=\"struct\" href=\"tvm/ir/arith/struct.ConstIntBoundNode.htm [...]
+"tvm_graph_rt":[["impl&lt;'a&gt; Freeze for <a class=\"enum\" href=\"tvm_graph_rt/enum.Storage.html\" title=\"enum tvm_graph_rt::Storage\">Storage</a>&lt;'a&gt;",1,["tvm_graph_rt::array::Storage"]],["impl&lt;'a&gt; Freeze for <a class=\"struct\" href=\"tvm_graph_rt/struct.Tensor.html\" title=\"struct tvm_graph_rt::Tensor\">Tensor</a>&lt;'a&gt;",1,["tvm_graph_rt::array::Tensor"]],["impl Freeze for <a class=\"enum\" href=\"tvm_graph_rt/errors/enum.GraphFormatError.html\" title=\"enum tvm_g [...]
+"tvm_rt":[["impl&lt;T&gt; Freeze for <a class=\"struct\" href=\"tvm_rt/array/struct.Array.html\" title=\"struct tvm_rt::array::Array\">Array</a>&lt;T&gt;",1,["tvm_rt::array::Array"]],["impl&lt;T&gt; Freeze for <a class=\"struct\" href=\"tvm_rt/array/struct.IntoIter.html\" title=\"struct tvm_rt::array::IntoIter\">IntoIter</a>&lt;T&gt;",1,["tvm_rt::array::IntoIter"]],["impl Freeze for <a class=\"struct\" href=\"tvm_rt/errors/struct.FunctionNotFoundError.html\" title=\"struct tvm_rt::errors [...]
+"tvm_sys":[["impl Freeze for <a class=\"struct\" href=\"tvm_sys/ffi/struct.__fsid_t.html\" title=\"struct tvm_sys::ffi::__fsid_t\">__fsid_t</a>",1,["tvm_sys::ffi::__fsid_t"]],["impl Freeze for <a class=\"struct\" href=\"tvm_sys/ffi/struct.DLDevice.html\" title=\"struct tvm_sys::ffi::DLDevice\">DLDevice</a>",1,["tvm_sys::ffi::DLDevice"]],["impl Freeze for <a class=\"struct\" href=\"tvm_sys/ffi/struct.DLDataType.html\" title=\"struct tvm_sys::ffi::DLDataType\">DLDataType</a>",1,["tvm_sys:: [...]
+"tyck":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"tyck/struct.Opt.html\" title=\"struct tyck::Opt\">Opt</a>",1,["tyck::Opt"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/marker/trait.Send.js b/docs/api/rust/implementors/core/marker/trait.Send.js
new file mode 100644
index 0000000000..22fb2a1272
--- /dev/null
+++ b/docs/api/rust/implementors/core/marker/trait.Send.js
@@ -0,0 +1,7 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"tvm/compiler/graph_rt/enum.Error.html\" title=\"enum tvm::compiler::graph_rt::Error\">Error</a>",1,["tvm::compiler::graph_rt::Error"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"tvm/compi [...]
+"tvm_graph_rt":[["impl&lt;'a&gt; !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"tvm_graph_rt/enum.Storage.html\" title=\"enum tvm_graph_rt::Storage\">Storage</a>&lt;'a&gt;",1,["tvm_graph_rt::array::Storage"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href= [...]
+"tvm_rt":[["impl&lt;T&gt; !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"tvm_rt/array/struct.Array.html\" title=\"struct tvm_rt::array::Array\">Array</a>&lt;T&gt;",1,["tvm_rt::array::Array"]],["impl&lt;T&gt; !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"t [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.__fsid_t.html\" title=\"struct tvm_sys::ffi::__fsid_t\">__fsid_t</a>",1,["tvm_sys::ffi::__fsid_t"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.D [...]
+"tyck":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"tyck/struct.Opt.html\" title=\"struct tyck::Opt\">Opt</a>",1,["tyck::Opt"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/marker/trait.StructuralEq.js b/docs/api/rust/implementors/core/marker/trait.StructuralEq.js
new file mode 100644
index 0000000000..1ffeb0ac27
--- /dev/null
+++ b/docs/api/rust/implementors/core/marker/trait.StructuralEq.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"tvm/ir/ty/enum.TypeKind.html\" title=\"enum tvm::ir::ty::TypeKind\">TypeKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"tvm/ir/diagnosti [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.TVMParallelGroupEnv.html\" title=\"struct tvm_sys::ffi::TVMParallelGroupEnv\">TVMParallelGroupEnv</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/marker/trait.StructuralPartialEq.js b/docs/api/rust/implementors/core/marker/trait.StructuralPartialEq.js
new file mode 100644
index 0000000000..04513eb996
--- /dev/null
+++ b/docs/api/rust/implementors/core/marker/trait.StructuralPartialEq.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"tvm/ir/ty/enum.TypeKind.html\" title=\"enum tvm::ir::ty::TypeKind\">TypeKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for [...]
+"tvm_graph_rt":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"tvm_graph_rt/struct.Tensor.html\" title=\"struct tvm_graph_rt::Tensor\">Tensor</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::Struct [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.DLDataType.html\" title=\"struct tvm_sys::ffi::DLDataType\">DLDataType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">Structur [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/marker/trait.Sync.js b/docs/api/rust/implementors/core/marker/trait.Sync.js
new file mode 100644
index 0000000000..eaea4adbe8
--- /dev/null
+++ b/docs/api/rust/implementors/core/marker/trait.Sync.js
@@ -0,0 +1,7 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"tvm/compiler/graph_rt/enum.Error.html\" title=\"enum tvm::compiler::graph_rt::Error\">Error</a>",1,["tvm::compiler::graph_rt::Error"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"tvm/compi [...]
+"tvm_graph_rt":[["impl&lt;'a&gt; !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"tvm_graph_rt/enum.Storage.html\" title=\"enum tvm_graph_rt::Storage\">Storage</a>&lt;'a&gt;",1,["tvm_graph_rt::array::Storage"]],["impl&lt;'a&gt; !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"s [...]
+"tvm_rt":[["impl&lt;T&gt; !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"tvm_rt/array/struct.Array.html\" title=\"struct tvm_rt::array::Array\">Array</a>&lt;T&gt;",1,["tvm_rt::array::Array"]],["impl&lt;T&gt; !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"t [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.__fsid_t.html\" title=\"struct tvm_sys::ffi::__fsid_t\">__fsid_t</a>",1,["tvm_sys::ffi::__fsid_t"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.D [...]
+"tyck":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"tyck/struct.Opt.html\" title=\"struct tyck::Opt\">Opt</a>",1,["tyck::Opt"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/marker/trait.Unpin.js b/docs/api/rust/implementors/core/marker/trait.Unpin.js
new file mode 100644
index 0000000000..016653912c
--- /dev/null
+++ b/docs/api/rust/implementors/core/marker/trait.Unpin.js
@@ -0,0 +1,7 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"tvm/compiler/graph_rt/enum.Error.html\" title=\"enum tvm::compiler::graph_rt::Error\">Error</a>",1,["tvm::compiler::graph_rt::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"tvm/ [...]
+"tvm_graph_rt":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"tvm_graph_rt/enum.Storage.html\" title=\"enum tvm_graph_rt::Storage\">Storage</a>&lt;'a&gt;",1,["tvm_graph_rt::array::Storage"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class [...]
+"tvm_rt":[["impl&lt;T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"tvm_rt/array/struct.Array.html\" title=\"struct tvm_rt::array::Array\">Array</a>&lt;T&gt;<span class=\"where fmt-newline\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</span>",1,["tvm_rt::array [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.__fsid_t.html\" title=\"struct tvm_sys::ffi::__fsid_t\">__fsid_t</a>",1,["tvm_sys::ffi::__fsid_t"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"tvm_sys/ffi/st [...]
+"tyck":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"tyck/struct.Opt.html\" title=\"struct tyck::Opt\">Opt</a>",1,["tyck::Opt"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/ops/deref/trait.Deref.js b/docs/api/rust/implementors/core/ops/deref/trait.Deref.js
new file mode 100644
index 0000000000..a89d024aa9
--- /dev/null
+++ b/docs/api/rust/implementors/core/ops/deref/trait.Deref.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"tvm/ir/arith/struct.ConstIntBound.html\" title=\"struct tvm::ir::arith::ConstIntBound\">ConstIntBound</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"tvm/ir/tir/stru [...]
+"tvm_rt":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"tvm_rt/module/struct.Module.html\" title=\"struct tvm_rt::module::Module\">Module</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/ops/deref/trait.Deref.html\" title=\"trait core::ops::deref::Deref\">Deref</a> for <a class=\"struct\" href=\"tvm_rt/ndarray/struct.NDArray.ht [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/ops/drop/trait.Drop.js b/docs/api/rust/implementors/core/ops/drop/trait.Drop.js
new file mode 100644
index 0000000000..410db4e532
--- /dev/null
+++ b/docs/api/rust/implementors/core/ops/drop/trait.Drop.js
@@ -0,0 +1,5 @@
+(function() {var implementors = {
+"tvm_graph_rt":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"tvm_graph_rt/struct.DsoModule.html\" title=\"struct tvm_graph_rt::DsoModule\">DsoModule</a>&lt;'a&gt;"]],
+"tvm_rt":[["impl&lt;T: <a class=\"trait\" href=\"tvm_rt/object/trait.IsObject.html\" title=\"trait tvm_rt::object::IsObject\">IsObject</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"tvm_rt/object/struct.ObjectPtr.html\" title=\"struct tvm_rt::object::ObjectPtr\">ObjectPtr</a>&lt;T&gt;"]],
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"enum\" href=\"tvm_sys/byte_array/enum.ByteArray.html\" title=\"enum tvm_sys::byte_array::ByteArray\">ByteArray</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/api/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
new file mode 100644
index 0000000000..b004e058d9
--- /dev/null
+++ b/docs/api/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -0,0 +1,7 @@
+(function() {var implementors = {
+"tvm":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"tvm/compiler/graph_rt/enum.Error.html\" title=\"enum tvm::compiler::graph_rt::Error\">Error</a>",1,["tvm::compiler::graph_rt::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait  [...]
+"tvm_graph_rt":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"tvm_graph_rt/enum.Storage.html\" title=\"enum tvm_graph_rt::Storage\">Storage</a>&lt;'a&gt;",1,["tvm_graph_rt::array::Storage"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe [...]
+"tvm_rt":[["impl&lt;T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"tvm_rt/array/struct.Array.html\" title=\"struct tvm_rt::array::Array\">Array</a>&lt;T&gt;<span class=\"where fmt-newline\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title= [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.__fsid_t.html\" title=\"struct tvm_sys::ffi::__fsid_t\">__fsid_t</a>",1,["tvm_sys::ffi::__fsid_t"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic [...]
+"tyck":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"tyck/struct.Opt.html\" title=\"struct tyck::Opt\">Opt</a>",1,["tyck::Opt"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/api/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
new file mode 100644
index 0000000000..9081c1ee01
--- /dev/null
+++ b/docs/api/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -0,0 +1,7 @@
+(function() {var implementors = {
+"tvm":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"tvm/compiler/graph_rt/enum.Error.html\" title=\"enum tvm::compiler::graph_rt::Error\">Error</a>",1,["tvm::compiler::graph_rt::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic: [...]
+"tvm_graph_rt":[["impl&lt;'a&gt; !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"tvm_graph_rt/enum.Storage.html\" title=\"enum tvm_graph_rt::Storage\">Storage</a>&lt;'a&gt;",1,["tvm_graph_rt::array::Storage"]],["impl&lt;'a&gt; !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" ti [...]
+"tvm_rt":[["impl&lt;T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"tvm_rt/array/struct.Array.html\" title=\"struct tvm_rt::array::Array\">Array</a>&lt;T&gt;<span class=\"where fmt-newline\">where\n    T: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core [...]
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"tvm_sys/ffi/struct.__fsid_t.html\" title=\"struct tvm_sys::ffi::__fsid_t\">__fsid_t</a>",1,["tvm_sys::ffi::__fsid_t"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_saf [...]
+"tyck":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"tyck/struct.Opt.html\" title=\"struct tyck::Opt\">Opt</a>",1,["tyck::Opt"]]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/core/str/traits/trait.FromStr.js b/docs/api/rust/implementors/core/str/traits/trait.FromStr.js
new file mode 100644
index 0000000000..2a0efab470
--- /dev/null
+++ b/docs/api/rust/implementors/core/str/traits/trait.FromStr.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"tvm_sys":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"struct\" href=\"tvm_sys/device/struct.Device.html\" title=\"struct tvm_sys::device::Device\">Device</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"struct\" href=\"tvm_sys/datat [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/serde/de/trait.Deserialize.js b/docs/api/rust/implementors/serde/de/trait.Deserialize.js
new file mode 100644
index 0000000000..978814a720
--- /dev/null
+++ b/docs/api/rust/implementors/serde/de/trait.Deserialize.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"tvm_graph_rt":[["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.166/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"struct\" href=\"tvm_graph_rt/struct.Node.html\" title=\"struct tvm_graph_rt::Node\">Node</a>"],["impl&lt;'de&gt; <a class=\"trait\" href=\"https://docs.rs/serde/1.0.166/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a>&lt;'de&gt; for <a class=\"str [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/serde/ser/trait.Serialize.js b/docs/api/rust/implementors/serde/ser/trait.Serialize.js
new file mode 100644
index 0000000000..51c55598fc
--- /dev/null
+++ b/docs/api/rust/implementors/serde/ser/trait.Serialize.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"tvm_graph_rt":[["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.166/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"tvm_graph_rt/struct.Entry.html\" title=\"struct tvm_graph_rt::Entry\">Entry</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.166/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"tvm_graph_rt/struct.Node.html\" titl [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/structopt/trait.StructOpt.js b/docs/api/rust/implementors/structopt/trait.StructOpt.js
new file mode 100644
index 0000000000..0a154d5180
--- /dev/null
+++ b/docs/api/rust/implementors/structopt/trait.StructOpt.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"tyck":[["impl StructOpt for <a class=\"struct\" href=\"tyck/struct.Opt.html\" title=\"struct tyck::Opt\">Opt</a>"]]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/tvm_graph_rt/module/trait.Module.js b/docs/api/rust/implementors/tvm_graph_rt/module/trait.Module.js
new file mode 100644
index 0000000000..7ffd59f343
--- /dev/null
+++ b/docs/api/rust/implementors/tvm_graph_rt/module/trait.Module.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"tvm_graph_rt":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/tvm_rt/ndarray/trait.Num32.js b/docs/api/rust/implementors/tvm_rt/ndarray/trait.Num32.js
new file mode 100644
index 0000000000..71e8c7d766
--- /dev/null
+++ b/docs/api/rust/implementors/tvm_rt/ndarray/trait.Num32.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"tvm":[],
+"tvm_rt":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/tvm_rt/object/object_ptr/trait.IsObject.js b/docs/api/rust/implementors/tvm_rt/object/object_ptr/trait.IsObject.js
new file mode 100644
index 0000000000..4a7771c65f
--- /dev/null
+++ b/docs/api/rust/implementors/tvm_rt/object/object_ptr/trait.IsObject.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"tvm/runtime/trait.IsObject.html\" title=\"trait tvm::runtime::IsObject\">IsObject</a> for <a class=\"struct\" href=\"tvm/ir/tir/struct.EqNode.html\" title=\"struct tvm::ir::tir::EqNode\">EqNode</a>"],["impl <a class=\"trait\" href=\"tvm/runtime/trait.IsObject.html\" title=\"trait tvm::runtime::IsObject\">IsObject</a> for <a class=\"struct\" href=\"tvm/ir/relay/attrs/nn/struct.DenseAttrsNode.html\" title=\"struct tvm::ir::relay::attrs::nn::DenseAttr [...]
+"tvm_rt":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/tvm_rt/object/trait.AsArgValue.js b/docs/api/rust/implementors/tvm_rt/object/trait.AsArgValue.js
new file mode 100644
index 0000000000..71e8c7d766
--- /dev/null
+++ b/docs/api/rust/implementors/tvm_rt/object/trait.AsArgValue.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"tvm":[],
+"tvm_rt":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/tvm_rt/object/trait.IsObjectRef.js b/docs/api/rust/implementors/tvm_rt/object/trait.IsObjectRef.js
new file mode 100644
index 0000000000..f7360719c9
--- /dev/null
+++ b/docs/api/rust/implementors/tvm_rt/object/trait.IsObjectRef.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"tvm":[["impl <a class=\"trait\" href=\"tvm/runtime/trait.IsObjectRef.html\" title=\"trait tvm::runtime::IsObjectRef\">IsObjectRef</a> for <a class=\"struct\" href=\"tvm/ir/relay/struct.Function.html\" title=\"struct tvm::ir::relay::Function\">Function</a>"],["impl <a class=\"trait\" href=\"tvm/runtime/trait.IsObjectRef.html\" title=\"trait tvm::runtime::IsObjectRef\">IsObjectRef</a> for <a class=\"struct\" href=\"tvm/ir/relay/attrs/nn/struct.SoftmaxAttrs.html\" title=\"struct tvm::ir::r [...]
+"tvm_rt":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/tvm_rt/to_function/trait.ToFunction.js b/docs/api/rust/implementors/tvm_rt/to_function/trait.ToFunction.js
new file mode 100644
index 0000000000..71e8c7d766
--- /dev/null
+++ b/docs/api/rust/implementors/tvm_rt/to_function/trait.ToFunction.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"tvm":[],
+"tvm_rt":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/tvm_rt/to_function/trait.Typed.js b/docs/api/rust/implementors/tvm_rt/to_function/trait.Typed.js
new file mode 100644
index 0000000000..71e8c7d766
--- /dev/null
+++ b/docs/api/rust/implementors/tvm_rt/to_function/trait.Typed.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"tvm":[],
+"tvm_rt":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/implementors/tvm_sys/packed_func/trait.PackedFunc.js b/docs/api/rust/implementors/tvm_sys/packed_func/trait.PackedFunc.js
new file mode 100644
index 0000000000..7041729644
--- /dev/null
+++ b/docs/api/rust/implementors/tvm_sys/packed_func/trait.PackedFunc.js
@@ -0,0 +1,4 @@
+(function() {var implementors = {
+"tvm_graph_rt":[],
+"tvm_sys":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/api/rust/int/all.html b/docs/api/rust/int/all.html
new file mode 100644
index 0000000000..91dbd19f6b
--- /dev/null
+++ b/docs/api/rust/int/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
diff --git a/docs/api/rust/int/fn.main.html b/docs/api/rust/int/fn.main.html
new file mode 100644
index 0000000000..42efd24b2e
--- /dev/null
+++ b/docs/api/rust/int/fn.main.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `main` fn in crate `int`."><title>main in int - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href=" [...]
\ No newline at end of file
diff --git a/docs/api/rust/int/fn.sum.html b/docs/api/rust/int/fn.sum.html
new file mode 100644
index 0000000000..015eb8ebe8
--- /dev/null
+++ b/docs/api/rust/int/fn.sum.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `sum` fn in crate `int`."><title>sum in int - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href=".. [...]
\ No newline at end of file
diff --git a/docs/api/rust/int/index.html b/docs/api/rust/int/index.html
new file mode 100644
index 0000000000..d002880274
--- /dev/null
+++ b/docs/api/rust/int/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `int` crate."><title>int - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraS [...]
\ No newline at end of file
diff --git a/docs/api/rust/int/sidebar-items.js b/docs/api/rust/int/sidebar-items.js
new file mode 100644
index 0000000000..59aa4c9099
--- /dev/null
+++ b/docs/api/rust/int/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"fn":["main","sum"]};
\ No newline at end of file
diff --git a/docs/api/rust/resnet/all.html b/docs/api/rust/resnet/all.html
new file mode 100644
index 0000000000..a9a4e542c8
--- /dev/null
+++ b/docs/api/rust/resnet/all.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
diff --git a/docs/api/rust/resnet/fn.main.html b/docs/api/rust/resnet/fn.main.html
new file mode 100644
index 0000000000..4f3ce205e1
--- /dev/null
+++ b/docs/api/rust/resnet/fn.main.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `main` fn in crate `resnet`."><title>main in resnet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin  [...]
\ No newline at end of file
diff --git a/docs/api/rust/resnet/index.html b/docs/api/rust/resnet/index.html
new file mode 100644
index 0000000000..7a95bea3f4
--- /dev/null
+++ b/docs/api/rust/resnet/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `resnet` crate."><title>resnet - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files [...]
\ No newline at end of file
diff --git a/docs/api/rust/resnet/sidebar-items.js b/docs/api/rust/resnet/sidebar-items.js
new file mode 100644
index 0000000000..9b556a055c
--- /dev/null
+++ b/docs/api/rust/resnet/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"fn":["main"]};
\ No newline at end of file
diff --git a/docs/api/rust/search-index.js b/docs/api/rust/search-index.js
new file mode 100644
index 0000000000..8d7a070814
--- /dev/null
+++ b/docs/api/rust/search-index.js
@@ -0,0 +1,21 @@
+var searchIndex = JSON.parse('{\
+"array":{"doc":"","t":"FF","n":["main","sum"],"q":["array",""],"d":["",""],"i":[0,0],"f":[[[]],[[[2,[1]]],[[5,[3,4]]]]],"p":[[4,"ArgValue"],[3,"Vec"],[4,"RetValue"],[4,"Error"],[4,"Result"]]},\
+"basics":{"doc":"","t":"F","n":["main"],"q":["basics"],"d":[""],"i":[0],"f":[[[]]],"p":[]},\
+"compiler_ext":{"doc":"","t":"F","n":["tvm_export"],"q":["compiler_ext"],"d":[""],"i":[0],"f":[[1,[[3,[2]]]]],"p":[[15,"str"],[4,"Error"],[4,"Result"]]},\
+"error":{"doc":"","t":"FF","n":["error","main"],"q":["error",""],"d":["",""],"i":[0,0],"f":[[[[2,[1]]],[[5,[3,4]]]],[[]]],"p":[[4,"ArgValue"],[3,"Vec"],[4,"RetValue"],[4,"Error"],[4,"Result"]]},\
+"float":{"doc":"","t":"FF","n":["main","sum"],"q":["float",""],"d":["",""],"i":[0,0],"f":[[[]],[[[2,[1]]],[[5,[3,4]]]]],"p":[[4,"ArgValue"],[3,"Vec"],[4,"RetValue"],[4,"Error"],[4,"Result"]]},\
+"int":{"doc":"","t":"FF","n":["main","sum"],"q":["int",""],"d":["",""],"i":[0,0],"f":[[[]],[[[2,[1]]],[[5,[3,4]]]]],"p":[[4,"ArgValue"],[3,"Vec"],[4,"RetValue"],[4,"Error"],[4,"Result"]]},\
+"resnet":{"doc":"","t":"F","n":["main"],"q":["resnet"],"d":[""],"i":[0],"f":[[[],1]],"p":[[6,"Result"]]},\
+"string":{"doc":"","t":"FF","n":["concat_str","main"],"q":["string",""],"d":["",""],"i":[0,0],"f":[[[[2,[1]]],[[5,[3,4]]]],[[]]],"p":[[4,"ArgValue"],[3,"Vec"],[4,"RetValue"],[4,"Error"],[4,"Result"]]},\
+"test_rt_nn":{"doc":"","t":"RROF","n":["BATCH_SIZE","IN_DIM","check_sum","main"],"q":["test_rt_nn","","",""],"d":["","","",""],"i":[0,0,0,0],"f":[0,0,0,[[]]],"p":[]},\
+"test_rt_tvm_basic":{"doc":"","t":"FAFFFFFFFAFFFFFFF","n":["main","tvm_mod","__extendhfsf2","__truncsfhf2","__tvm_main__","__tvm_module_ctx","__tvm_module_startup","default_function","default_function_compute_","ext","__extendhfsf2","__truncsfhf2","__tvm_main__","__tvm_module_ctx","__tvm_module_startup","default_function","default_function_compute_"],"q":["test_rt_tvm_basic","","test_rt_tvm_basic::tvm_mod","","","","","","","","test_rt_tvm_basic::tvm_mod::ext","","","","","",""],"d":["", [...]
+"test_rt_tvm_dso":{"doc":"","t":"F","n":["main"],"q":["test_rt_tvm_dso"],"d":[""],"i":[0],"f":[[[]]],"p":[]},\
+"tvm":{"doc":"TVM is a compiler stack for deep learning systems.","t":"NNNNDNDENNNENNDDNNNDNDNENNNNNNNNDNNMLLLLLLLLLLLLLLLAAMMLLAMOOOLLLLLLLLLLLLLLLLLLLLLLLLLLLALOLLLLLLALLLAALLLLLLAALLLLLLLLALLLLLLLLLLLLLLLLLFMMADENNLLLLFFLLLLLLLLLLLLLLLLLLLNNNDENNNNDNNLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNENDNNNNENNNNNNDMMMMENNNNNNNNNNNNDNNQNNNNNNNNNNDGENNNNIINNKLLLLLLLLLKLLLLLLLKALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL [...]
+"tvm_graph_rt":{"doc":"This crate is an implementation of the TVM runtime for …","t":"ENNNNDRRRRNNNNDDNNDNNDDNNNNINNNNDNNNNNIEENNNNDFFFFFFTDNNDNMLMLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLMOLLLLLLLLMLLMLLLLLLLLMLMLLLAMALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLMMOMMLLLLLLLLLLLLLLLLFLMMLLLMMMALLFLLLLLLMLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMLEDENNNDNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLL [...]
+"tvm_macros":{"doc":"","t":"YOO","n":["Object","external","import_module"],"q":["tvm_macros","",""],"d":["","",""],"i":[0,0,0],"f":[0,0,0],"p":[]},\
+"tvm_rt":{"doc":"TVM is a compiler stack for deep learning systems.","t":"ENNENNNNNDNNDNNENNNNNNCNNNNNCNNCNNNNNNNNENNNNNNNNNALLLLLLLLLLLLLLLLOLLLLLLLLLLLLLLLLLLLAMMLLLLALOLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLAFALLLLLLLLLLLLLLLLALALALLLALLLALLLLLLLLLLLLLLLLLLLLLLLLLLLOLLLLLLLFLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNDENNNNDNNLLMMLLLLLLLLLNNNNNENDNNNNENNNNNNDMLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMENNNNNNNNNN [...]
+"tvm_sys":{"doc":"This crate contains the minimal interface over TVM’s C …","t":"CCCCCCAAOAAAAAOAENNLLLLLLLLLLLLLLDNNENLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNDENNNNDNNLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDMLLLLMLLLLLLLLLLLLLLLLLLLGDGRRRRRRDGRRRRRRRRRRRRRRDRRDGRRRRRRRRRRRRRRRRRRRRRRRRRFGRRRRRRRRRRRRRRRRRRRFFFFFFGFFFFGFFFFFDFFFFFFFGRRRRRFGFFFFFFFGFFFFFGFFFGFFFGGDGFFFGFFTRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGDGGRGGG [...]
+"tyck":{"doc":"","t":"DLLLLLLMLFLLL","n":["Opt","borrow","borrow_mut","clap","fmt","from","from_clap","input","into","main","try_from","try_into","type_id"],"q":["tyck","","","","","","","","","","","",""],"d":["","","","","","Returns the argument unchanged.","","Input file","Calls <code>U::from(self)</code>.","","","",""],"i":[0,2,2,2,2,2,2,2,2,0,2,2,2],"f":[0,[[]],[[]],[[],1],[[2,3],4],[[]],[5,2],0,[[]],[[],6],[[],7],[[],7],[[],8]],"p":[[3,"App"],[3,"Opt"],[3,"Formatter"],[6,"Result"], [...]
+}');
+if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
+if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/docs/api/rust/settings.html b/docs/api/rust/settings.html
new file mode 100644
index 0000000000..901adc3498
--- /dev/null
+++ b/docs/api/rust/settings.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Settings of Rustdoc"><title>Rustdoc settings</title><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/FiraSans-Regular-018c141b [...]
\ No newline at end of file
diff --git a/docs/api/rust/source-files.js b/docs/api/rust/source-files.js
new file mode 100644
index 0000000000..4c5de14a5e
--- /dev/null
+++ b/docs/api/rust/source-files.js
@@ -0,0 +1,20 @@
+var sourcesIndex = JSON.parse('{\
+"array":["",[],["array.rs"]],\
+"basics":["",[],["main.rs"]],\
+"compiler_ext":["",[],["lib.rs"]],\
+"error":["",[],["error.rs"]],\
+"float":["",[],["float.rs"]],\
+"int":["",[],["int.rs"]],\
+"resnet":["",[],["main.rs"]],\
+"string":["",[],["string.rs"]],\
+"test_rt_nn":["",[],["main.rs"]],\
+"test_rt_tvm_basic":["",[],["main.rs"]],\
+"test_rt_tvm_dso":["",[],["main.rs"]],\
+"tvm":["",[["compiler",[],["graph_rt.rs","mod.rs"]],["ir",[["diagnostics",[],["codespan.rs","mod.rs"]],["relay",[["attrs",[],["mod.rs","nn.rs","reduce.rs","transform.rs"]]],["mod.rs"]]],["arith.rs","attrs.rs","expr.rs","function.rs","mod.rs","module.rs","op.rs","source_map.rs","span.rs","tir.rs","ty.rs"]],["runtime",[],["mod.rs"]]],["lib.rs","python.rs","transform.rs"]],\
+"tvm_graph_rt":["",[["module",[],["dso.rs","mod.rs","syslib.rs"]]],["allocator.rs","array.rs","errors.rs","graph.rs","lib.rs","threading.rs","workspace.rs"]],\
+"tvm_macros":["",[],["external.rs","import_module.rs","lib.rs","object.rs","util.rs"]],\
+"tvm_rt":["",[["object",[],["mod.rs","object_ptr.rs"]]],["array.rs","device.rs","errors.rs","function.rs","graph_rt.rs","lib.rs","map.rs","module.rs","ndarray.rs","string.rs","to_function.rs"]],\
+"tvm_sys":["",[],["array.rs","byte_array.rs","datatype.rs","device.rs","errors.rs","lib.rs","packed_func.rs","value.rs"]],\
+"tyck":["",[],["tyck.rs"]]\
+}');
+createSourceSidebar();
diff --git a/docs/api/rust/src/array/array.rs.html b/docs/api/rust/src/array/array.rs.html
new file mode 100644
index 0000000000..941b53c2c4
--- /dev/null
+++ b/docs/api/rust/src/array/array.rs.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/tests/callback/src/bin/array.rs`."><title>array.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigi [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="attr">#![allow(unused_imports)]
+
+</span><span class="kw">extern crate </span>ndarray <span class="kw">as </span>rust_ndarray;
+
+<span class="kw">use </span>rust_ndarray::ArrayD;
+<span class="kw">use </span>std::{
+    convert::{TryFrom, TryInto},
+    str::FromStr,
+};
+
+<span class="kw">use </span>tvm::{
+    errors::Error,
+    function::register_untyped,
+    runtime::{ArgValue, RetValue},
+    <span class="kw-2">*</span>,
+};
+
+<span class="kw">fn </span>main() {
+    <span class="kw">fn </span>sum&lt;<span class="lifetime">&#39;a</span>&gt;(args: Vec&lt;ArgValue&lt;<span class="lifetime">&#39;a</span>&gt;&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;RetValue, Error&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>ret = <span class="number">0.0</span>;
+        <span class="kw">for </span>arg <span class="kw">in </span>args {
+            <span class="kw">let </span>arg: NDArray = arg.try_into()<span class="question-mark">?</span>;
+            <span class="kw">let </span>rnd: ArrayD&lt;f32&gt; = ArrayD::try_from(<span class="kw-2">&amp;</span>arg)<span class="question-mark">?</span>;
+            ret += rnd.scalar_sum();
+        }
+        <span class="prelude-val">Ok</span>(RetValue::from(ret))
+    }
+
+    <span class="kw">let </span>shape = <span class="kw-2">&amp;</span>[<span class="number">2</span>];
+    <span class="kw">let </span>data = <span class="macro">vec!</span>[<span class="number">3.0</span>, <span class="number">4.0</span>];
+    <span class="kw">let </span><span class="kw-2">mut </span>arr = NDArray::empty(shape, Device::cpu(<span class="number">0</span>), DataType::float(<span class="number">32</span>, <span class="number">1</span>));
+    arr.copy_from_buffer(data.as_slice());
+
+    register_untyped(sum, <span class="string">&quot;sum&quot;</span>, <span class="bool-val">true</span>).unwrap();
+    <span class="kw">let </span>func = Function::get(<span class="string">&quot;sum&quot;</span>).expect(<span class="string">&quot;function registered&quot;</span>);
+
+    <span class="kw">let </span>ret: f32 = func
+        .invoke(<span class="macro">vec!</span>[(<span class="kw-2">&amp;</span>arr).into()])
+        .unwrap()
+        .try_into()
+        .expect(<span class="string">&quot;call should succeed&quot;</span>);
+
+    <span class="macro">assert_eq!</span>(ret, <span class="number">7.0</span>);
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="array" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/basics/main.rs.html b/docs/api/rust/src/basics/main.rs.html
new file mode 100644
index 0000000000..564a0605b7
--- /dev/null
+++ b/docs/api/rust/src/basics/main.rs.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/tests/basics/src/main.rs`."><title>main.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href=" [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>std::str::FromStr;
+
+<span class="kw">use </span>tvm::<span class="kw-2">*</span>;
+
+<span class="kw">fn </span>main() {
+    <span class="kw">let </span>shape = <span class="kw-2">&amp;mut </span>[<span class="number">2</span>];
+    <span class="kw">let </span><span class="kw-2">mut </span>data = <span class="macro">vec!</span>[<span class="number">3f32</span>, <span class="number">4.0</span>];
+
+    <span class="kw">let </span>(dev, dev_name) = <span class="kw">if </span><span class="macro">cfg!</span>(feature = <span class="string">&quot;cpu&quot;</span>) {
+        (Device::cpu(<span class="number">0</span>), <span class="string">&quot;cpu&quot;</span>)
+    } <span class="kw">else </span>{
+        (Device::cuda(<span class="number">0</span>), <span class="string">&quot;cuda&quot;</span>)
+    };
+
+    <span class="kw">let </span>dtype = DataType::from_str(<span class="string">&quot;float32&quot;</span>).unwrap();
+    <span class="kw">let </span><span class="kw-2">mut </span>arr = NDArray::empty(shape, dev, dtype);
+    arr.copy_from_buffer(data.as_mut_slice());
+    <span class="kw">let </span>ret = NDArray::empty(shape, dev, dtype);
+    <span class="kw">let </span>fadd = Module::load(<span class="kw-2">&amp;</span><span class="macro">concat!</span>(<span class="macro">env!</span>(<span class="string">&quot;OUT_DIR&quot;</span>), <span class="string">&quot;/test_add.so&quot;</span>)).unwrap();
+    <span class="kw">if </span>!fadd.enabled(dev_name) {
+        <span class="kw">return</span>;
+    }
+
+    <span class="kw">if </span><span class="macro">cfg!</span>(feature = <span class="string">&quot;cuda&quot;</span>) {
+        fadd.import_module(Module::load(<span class="kw-2">&amp;</span><span class="macro">concat!</span>(<span class="macro">env!</span>(<span class="string">&quot;OUT_DIR&quot;</span>), <span class="string">&quot;/test_add.ptx&quot;</span>)).unwrap());
+    }
+
+    <span class="comment">// todo(@jroesch): fix the entry_name
+    </span>fadd.get_function(<span class="string">&quot;__tvm_main__&quot;</span>, <span class="bool-val">false</span>)
+        .expect(<span class="string">&quot;module must have entry point&quot;</span>)
+        .invoke(<span class="macro">vec!</span>[(<span class="kw-2">&amp;</span>arr).into(), (<span class="kw-2">&amp;</span>arr).into(), (<span class="kw-2">&amp;</span>ret).into()])
+        .unwrap();
+
+    <span class="macro">assert_eq!</span>(ret.to_vec::&lt;f32&gt;().unwrap(), <span class="macro">vec!</span>[<span class="number">6f32</span>, <span class="number">8.0</span>]);
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="basics" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/compiler_ext/lib.rs.html b/docs/api/rust/src/compiler_ext/lib.rs.html
new file mode 100644
index 0000000000..8a163d91a5
--- /dev/null
+++ b/docs/api/rust/src/compiler_ext/lib.rs.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `compiler-ext/src/lib.rs`."><title>lib.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../ [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>env_logger;
+<span class="kw">use </span>tvm::export;
+
+<span class="kw">fn </span>diagnostics() -&gt; <span class="prelude-ty">Result</span>&lt;(), tvm::Error&gt; {
+    tvm::ir::diagnostics::codespan::init()
+}
+
+<span class="macro">export!</span>(diagnostics);
+
+<span class="attr">#[no_mangle]
+</span><span class="kw">extern </span><span class="string">&quot;C&quot; </span><span class="kw">fn </span>compiler_ext_initialize() -&gt; i32 {
+    <span class="kw">let _ </span>= env_logger::try_init();
+    tvm_export(<span class="string">&quot;rust_ext&quot;</span>).expect(<span class="string">&quot;failed to initialize the Rust compiler extensions.&quot;</span>);
+    <span class="macro">log::debug!</span>(<span class="string">&quot;Loaded the Rust compiler extension.&quot;</span>);
+    <span class="kw">return </span><span class="number">0</span>;
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="compiler_ext" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/error/error.rs.html b/docs/api/rust/src/error/error.rs.html
new file mode 100644
index 0000000000..71c5fc6877
--- /dev/null
+++ b/docs/api/rust/src/error/error.rs.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/tests/callback/src/bin/error.rs`."><title>error.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigi [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>std::panic;
+
+<span class="kw">use </span>tvm::{
+    errors::Error,
+    runtime::{ArgValue, RetValue},
+    <span class="kw-2">*</span>,
+};
+
+<span class="kw">fn </span>main() {
+    <span class="kw">fn </span>error&lt;<span class="lifetime">&#39;a</span>&gt;(_args: Vec&lt;ArgValue&lt;<span class="lifetime">&#39;a</span>&gt;&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;RetValue, Error&gt; {
+        <span class="prelude-val">Err</span>(errors::NDArrayError::DataTypeMismatch {
+            expected: DataType::int(<span class="number">64</span>, <span class="number">1</span>),
+            actual: DataType::float(<span class="number">64</span>, <span class="number">1</span>),
+        }
+        .into())
+    }
+
+    function::register_untyped(error, <span class="string">&quot;error&quot;</span>, <span class="bool-val">true</span>).unwrap();
+
+    <span class="kw">let </span>func = Function::get(<span class="string">&quot;error&quot;</span>);
+    <span class="macro">assert!</span>(func.is_some());
+    <span class="kw">match </span>func.unwrap().invoke(<span class="macro">vec!</span>[<span class="number">10</span>.into(), <span class="number">20</span>.into()]) {
+        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; {}
+        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="macro">panic!</span>(<span class="string">&quot;expected error&quot;</span>),
+    }
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="error" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/float/float.rs.html b/docs/api/rust/src/float/float.rs.html
new file mode 100644
index 0000000000..f5a5d7f319
--- /dev/null
+++ b/docs/api/rust/src/float/float.rs.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/tests/callback/src/bin/float.rs`."><title>float.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigi [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="attr">#![allow(unused_imports)]
+
+</span><span class="kw">use </span>std::convert::TryInto;
+<span class="kw">use </span>tvm::{
+    errors::Error,
+    runtime::{ArgValue, RetValue},
+    <span class="kw-2">*</span>,
+};
+
+<span class="kw">fn </span>main() {
+    <span class="kw">fn </span>sum&lt;<span class="lifetime">&#39;a</span>&gt;(args: Vec&lt;ArgValue&lt;<span class="lifetime">&#39;a</span>&gt;&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;RetValue, Error&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>ret = <span class="number">0.0</span>;
+        <span class="kw">for </span>arg <span class="kw">in </span>args.into_iter() {
+            <span class="kw">let </span>val: f64 = arg.try_into()<span class="question-mark">?</span>;
+            ret += val;
+        }
+        <span class="prelude-val">Ok</span>(RetValue::from(ret))
+    }
+
+    function::register_untyped(sum, <span class="string">&quot;sum&quot;</span>, <span class="bool-val">true</span>).expect(<span class="string">&quot;registration should succeed&quot;</span>);
+
+    <span class="kw">let </span>func = Function::get(<span class="string">&quot;sum&quot;</span>).expect(<span class="string">&quot;sum was just registered.&quot;</span>);
+
+    <span class="kw">let </span>ret: f64 = func
+        .invoke(<span class="macro">vec!</span>[<span class="number">10.0f64</span>.into(), <span class="number">20.0</span>.into(), <span class="number">30.0</span>.into()])
+        .unwrap()
+        .try_into()
+        .unwrap();
+
+    <span class="macro">assert_eq!</span>(ret, <span class="number">60f64</span>);
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="float" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/int/int.rs.html b/docs/api/rust/src/int/int.rs.html
new file mode 100644
index 0000000000..5a9c6cc5ba
--- /dev/null
+++ b/docs/api/rust/src/int/int.rs.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/tests/callback/src/bin/int.rs`."><title>int.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hr [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>std::convert::TryInto;
+<span class="kw">use </span>tvm::{
+    errors::Error,
+    runtime::{ArgValue, RetValue},
+    <span class="kw-2">*</span>,
+};
+
+<span class="kw">fn </span>main() {
+    <span class="kw">fn </span>sum&lt;<span class="lifetime">&#39;a</span>&gt;(args: Vec&lt;ArgValue&lt;<span class="lifetime">&#39;a</span>&gt;&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;RetValue, Error&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>ret = <span class="number">0i64</span>;
+        <span class="kw">for </span>arg <span class="kw">in </span>args.iter() {
+            <span class="kw">let </span>val: i64 = arg.try_into()<span class="question-mark">?</span>;
+            ret += val;
+        }
+        <span class="prelude-val">Ok</span>(RetValue::from(ret))
+    }
+
+    tvm::function::register_untyped(sum, <span class="string">&quot;mysum&quot;</span>.to_owned(), <span class="bool-val">false</span>).unwrap();
+    <span class="kw">let </span>func = Function::get(<span class="string">&quot;mysum&quot;</span>).unwrap();
+    <span class="kw">let </span>ret: i64 = func
+        .invoke(<span class="macro">vec!</span>[<span class="number">10</span>.into(), <span class="number">20</span>.into(), <span class="number">30</span>.into()])
+        .unwrap()
+        .try_into()
+        .unwrap();
+    <span class="macro">assert_eq!</span>(ret, <span class="number">60</span>);
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="int" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/resnet/main.rs.html b/docs/api/rust/src/resnet/main.rs.html
new file mode 100644
index 0000000000..212d929dc4
--- /dev/null
+++ b/docs/api/rust/src/resnet/main.rs.html
@@ -0,0 +1,280 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/examples/resnet/src/main.rs`."><title>main.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hre [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>std::{
+    fs::{<span class="self">self</span>, File},
+    io::{BufRead, BufReader},
+    path::Path,
+};
+
+<span class="kw">use </span>::ndarray::{Array, ArrayD, Axis};
+<span class="kw">use </span>image::{FilterType, GenericImageView};
+
+<span class="kw">use </span>anyhow::Context <span class="kw">as _</span>;
+<span class="kw">use </span>tvm_rt::graph_rt::GraphRt;
+<span class="kw">use </span>tvm_rt::<span class="kw-2">*</span>;
+
+<span class="kw">fn </span>main() -&gt; anyhow::Result&lt;()&gt; {
+    <span class="kw">let </span>dev = Device::cpu(<span class="number">0</span>);
+    <span class="macro">println!</span>(<span class="string">&quot;{}&quot;</span>, <span class="macro">concat!</span>(<span class="macro">env!</span>(<span class="string">&quot;CARGO_MANIFEST_DIR&quot;</span>), <span class="string">&quot;/cat.png&quot;</span>));
+
+    <span class="kw">let </span>img = image::open(<span class="macro">concat!</span>(<span class="macro">env!</span>(<span class="string">&quot;CARGO_MANIFEST_DIR&quot;</span>), <span class="string">&quot;/cat.png&quot;</span>))
+        .context(<span class="string">&quot;Failed to open cat.png&quot;</span>)<span class="question-mark">?</span>;
+
+    <span class="macro">println!</span>(<span class="string">&quot;original image dimensions: {:?}&quot;</span>, img.dimensions());
+    <span class="comment">// for bigger size images, one needs to first resize to 256x256
+    // with `img.resize_exact` method and then `image.crop` to 224x224
+    </span><span class="kw">let </span>img = img.resize(<span class="number">224</span>, <span class="number">224</span>, FilterType::Nearest).to_rgb();
+    <span class="macro">println!</span>(<span class="string">&quot;resized image dimensions: {:?}&quot;</span>, img.dimensions());
+    <span class="kw">let </span><span class="kw-2">mut </span>pixels: Vec&lt;f32&gt; = <span class="macro">vec!</span>[];
+    <span class="kw">for </span>pixel <span class="kw">in </span>img.pixels() {
+        <span class="kw">let </span>tmp = pixel.data;
+        <span class="comment">// normalize the RGB channels using mean, std of imagenet1k
+        </span><span class="kw">let </span>tmp = [
+            (tmp[<span class="number">0</span>] <span class="kw">as </span>f32 - <span class="number">123.0</span>) / <span class="number">58.395</span>, <span class="comment">// R
+            </span>(tmp[<span class="number">1</span>] <span class="kw">as </span>f32 - <span class="number">117.0</span>) / <span class="number">57.12</span>,  <span class="comment">// G
+            </span>(tmp[<span class="number">2</span>] <span class="kw">as </span>f32 - <span class="number">104.0</span>) / <span class="number">57.375</span>, <span class="comment">// B
+        </span>];
+        <span class="kw">for </span>e <span class="kw">in </span><span class="kw-2">&amp;</span>tmp {
+            pixels.push(<span class="kw-2">*</span>e);
+        }
+    }
+
+    <span class="kw">let </span>arr = Array::from_shape_vec((<span class="number">224</span>, <span class="number">224</span>, <span class="number">3</span>), pixels)<span class="question-mark">?</span>;
+    <span class="kw">let </span>arr: ArrayD&lt;f32&gt; = arr.permuted_axes([<span class="number">2</span>, <span class="number">0</span>, <span class="number">1</span>]).into_dyn();
+    <span class="comment">// make arr shape as [1, 3, 224, 224] acceptable to resnet
+    </span><span class="kw">let </span>arr = arr.insert_axis(Axis(<span class="number">0</span>));
+    <span class="comment">// create input tensor from rust&#39;s ndarray
+    </span><span class="kw">let </span>input = NDArray::from_rust_ndarray(<span class="kw-2">&amp;</span>arr, Device::cpu(<span class="number">0</span>), DataType::float(<span class="number">32</span>, <span class="number">1</span>))<span class="question-mark">?</span>;
+    <span class="macro">println!</span>(
+        <span class="string">&quot;input shape is {:?}, len: {}, size: {}&quot;</span>,
+        input.shape(),
+        input.len(),
+        input.size(),
+    );
+
+    <span class="kw">let </span>graph = fs::read_to_string(<span class="macro">concat!</span>(<span class="macro">env!</span>(<span class="string">&quot;CARGO_MANIFEST_DIR&quot;</span>), <span class="string">&quot;/deploy_graph.json&quot;</span>))
+        .context(<span class="string">&quot;Failed to open graph&quot;</span>)<span class="question-mark">?</span>;
+
+    <span class="comment">// load the built module
+    </span><span class="kw">let </span>lib = Module::load(<span class="kw-2">&amp;</span>Path::new(<span class="macro">concat!</span>(
+        <span class="macro">env!</span>(<span class="string">&quot;CARGO_MANIFEST_DIR&quot;</span>),
+        <span class="string">&quot;/deploy_lib.so&quot;
+    </span>)))<span class="question-mark">?</span>;
+
+    <span class="comment">// parse parameters and convert to TVMByteArray
+    </span><span class="kw">let </span>params: Vec&lt;u8&gt; = fs::read(<span class="macro">concat!</span>(<span class="macro">env!</span>(<span class="string">&quot;CARGO_MANIFEST_DIR&quot;</span>), <span class="string">&quot;/deploy_param.params&quot;</span>))<span class="question-mark">?</span>;
+    <span class="macro">println!</span>(<span class="string">&quot;param bytes: {}&quot;</span>, params.len());
+
+    <span class="comment">// If you want an easy way to test a memory leak simply replace the program below with:
+    // let mut output: Vec&lt;f32&gt;;
+
+    // loop {
+    //     let mut graph_rt = GraphRt::create_from_parts(&amp;graph, lib.clone(), dev)?;
+    //     graph_rt.load_params(params.clone())?;
+    //     graph_rt.set_input(&quot;data&quot;, input.clone())?;
+    //     graph_rt.run()?;
+
+    //     // prepare to get the output
+    //     let output_shape = &amp;[1, 1000];
+    //     let output_nd = NDArray::empty(output_shape, Device::cpu(0), DataType::float(32, 1));
+    //     graph_rt.get_output_into(0, output_nd.clone())?;
+
+    //     // flatten the output as Vec&lt;f32&gt;
+    //     output = output_nd.to_vec::&lt;f32&gt;()?;
+    // }
+
+    </span><span class="kw">let </span><span class="kw-2">mut </span>graph_rt = GraphRt::create_from_parts(<span class="kw-2">&amp;</span>graph, lib, dev)<span class="question-mark">?</span>;
+    graph_rt.load_params(params)<span class="question-mark">?</span>;
+    graph_rt.set_input(<span class="string">&quot;data&quot;</span>, input)<span class="question-mark">?</span>;
+    graph_rt.run()<span class="question-mark">?</span>;
+
+    <span class="comment">// prepare to get the output
+    </span><span class="kw">let </span>output_shape = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1000</span>];
+    <span class="kw">let </span>output_nd = NDArray::empty(output_shape, Device::cpu(<span class="number">0</span>), DataType::float(<span class="number">32</span>, <span class="number">1</span>));
+    graph_rt.get_output_into(<span class="number">0</span>, output_nd.clone())<span class="question-mark">?</span>;
+
+    <span class="comment">// flatten the output as Vec&lt;f32&gt;
+    </span><span class="kw">let </span>output: Vec&lt;f32&gt; = output_nd.to_vec::&lt;f32&gt;()<span class="question-mark">?</span>;
+
+    <span class="comment">// find the maximum entry in the output and its index
+    </span><span class="kw">let </span>(argmax, max_prob) = output
+        .iter()
+        .copied()
+        .enumerate()
+        .max_by(|a, b| a.<span class="number">1</span>.partial_cmp(<span class="kw-2">&amp;</span>b.<span class="number">1</span>).unwrap())
+        .unwrap();
+
+    <span class="comment">// create a hash map of (class id, class name)
+    </span><span class="kw">let </span>file = File::open(<span class="string">&quot;synset.txt&quot;</span>).context(<span class="string">&quot;failed to open synset&quot;</span>)<span class="question-mark">?</span>;
+    <span class="kw">let </span>synset: Vec&lt;std::string::String&gt; = BufReader::new(file)
+        .lines()
+        .into_iter()
+        .map(|x| x.expect(<span class="string">&quot;readline failed&quot;</span>))
+        .collect();
+
+    <span class="kw">let </span>label = <span class="kw-2">&amp;</span>synset[argmax];
+    <span class="macro">println!</span>(
+        <span class="string">&quot;input image belongs to the class `{}` with probability {}&quot;</span>,
+        label, max_prob
+    );
+
+    <span class="prelude-val">Ok</span>(())
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="resnet" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/string/string.rs.html b/docs/api/rust/src/string/string.rs.html
new file mode 100644
index 0000000000..ef638fe52b
--- /dev/null
+++ b/docs/api/rust/src/string/string.rs.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/tests/callback/src/bin/string.rs`."><title>string.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossori [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>std::convert::TryInto;
+<span class="kw">use </span>tvm::{
+    errors::Error,
+    runtime::{ArgValue, RetValue},
+    <span class="kw-2">*</span>,
+};
+
+<span class="comment">// FIXME
+</span><span class="kw">fn </span>main() {
+    <span class="kw">fn </span>concat_str&lt;<span class="lifetime">&#39;a</span>&gt;(args: Vec&lt;ArgValue&lt;<span class="lifetime">&#39;a</span>&gt;&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;RetValue, Error&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>ret = <span class="string">&quot;&quot;</span>.to_string();
+        <span class="kw">for </span>arg <span class="kw">in </span>args.iter() {
+            <span class="kw">let </span>val: <span class="kw-2">&amp;</span>str = arg.try_into()<span class="question-mark">?</span>;
+            ret += val;
+        }
+        <span class="prelude-val">Ok</span>(RetValue::from(ret))
+    }
+
+    <span class="kw">let </span>a = std::ffi::CString::new(<span class="string">&quot;a&quot;</span>).unwrap();
+    <span class="kw">let </span>b = std::ffi::CString::new(<span class="string">&quot;b&quot;</span>).unwrap();
+    <span class="kw">let </span>c = std::ffi::CString::new(<span class="string">&quot;c&quot;</span>).unwrap();
+
+    tvm::function::register_untyped(concat_str, <span class="string">&quot;concat_str&quot;</span>.to_owned(), <span class="bool-val">false</span>).unwrap();
+
+    <span class="kw">let </span>func = Function::get(<span class="string">&quot;concat_str&quot;</span>).expect(<span class="string">&quot;just registered a function&quot;</span>);
+
+    <span class="kw">let </span>args = <span class="macro">vec!</span>[
+        a.as_c_str().into(),
+        b.as_c_str().into(),
+        c.as_c_str().into(),
+    ];
+
+    <span class="kw">let </span>ret: String = func
+        .invoke(args)
+        .expect(<span class="string">&quot;function call should succeed&quot;</span>)
+        .try_into()
+        .unwrap();
+
+    <span class="macro">assert_eq!</span>(ret, <span class="string">&quot;abc&quot;</span>.to_owned());
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="string" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/test_rt_nn/main.rs.html b/docs/api/rust/src/test_rt_nn/main.rs.html
new file mode 100644
index 0000000000..0fad77fc94
--- /dev/null
+++ b/docs/api/rust/src/test_rt_nn/main.rs.html
@@ -0,0 +1,200 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm-graph-rt/tests/test_nn/src/main.rs`."><title>main.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossori [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>std::{collections::HashMap, convert::TryFrom, fs, io::Read};
+
+<span class="kw">use </span>ndarray::{s, Array};
+<span class="kw">use </span>tvm_graph_rt::{Graph, GraphExecutor, SystemLibModule, Tensor};
+
+<span class="kw">const </span>BATCH_SIZE: usize = <span class="number">4</span>;
+<span class="kw">const </span>IN_DIM: usize = <span class="number">8</span>;
+
+<span class="macro">macro_rules! </span>check_sum {
+    (<span class="macro-nonterminal">$e</span>:expr, <span class="macro-nonterminal">$a</span>:ident, <span class="macro-nonterminal">$b</span>:ident) =&gt; {
+        <span class="kw">let </span>a = Array::try_from(<span class="macro-nonterminal">$e</span>.get_input(<span class="macro">stringify!</span>(<span class="macro-nonterminal">$a</span>)).unwrap().to_owned()).unwrap();
+        <span class="macro">check_sum!</span>(a, <span class="macro-nonterminal">$b</span>);
+    };
+    (<span class="macro-nonterminal">$e</span>:expr, <span class="macro-nonterminal">$a</span>:expr, <span class="macro-nonterminal">$b</span>:ident) =&gt; {
+        <span class="kw">let </span>a = Array::try_from(<span class="macro-nonterminal">$e</span>.get_output(<span class="macro-nonterminal">$a</span>).unwrap().to_owned()).unwrap();
+        <span class="macro">check_sum!</span>(a, <span class="macro-nonterminal">$b</span>);
+    };
+    (<span class="macro-nonterminal">$a</span>:ident, <span class="macro-nonterminal">$b</span>:ident) =&gt; {
+        <span class="kw">let </span>a_sum: f32 = <span class="macro-nonterminal">$a</span>.scalar_sum();
+        <span class="kw">let </span>b_sum: f32 = <span class="macro-nonterminal">$b</span>.scalar_sum();
+        <span class="macro">assert!</span>((a_sum - b_sum).abs() &lt; <span class="number">1e-2</span>, <span class="string">&quot;{} != {}&quot;</span>, a_sum, b_sum);
+    };
+}
+
+<span class="kw">fn </span>main() {
+    <span class="kw">let </span>syslib = SystemLibModule::default();
+
+    <span class="kw">let </span><span class="kw-2">mut </span>params_bytes = Vec::new();
+    fs::File::open(<span class="macro">concat!</span>(<span class="macro">env!</span>(<span class="string">&quot;OUT_DIR&quot;</span>), <span class="string">&quot;/test_nn/graph.params&quot;</span>))
+        .unwrap()
+        .read_to_end(<span class="kw-2">&amp;mut </span>params_bytes)
+        .unwrap();
+    <span class="kw">let </span>params = tvm_graph_rt::load_param_dict(<span class="kw-2">&amp;</span>params_bytes)
+        .unwrap()
+        .into_iter()
+        .map(|(k, v)| (k, v.to_owned()))
+        .collect::&lt;HashMap&lt;String, Tensor&lt;<span class="lifetime">&#39;static</span>&gt;&gt;&gt;();
+
+    <span class="kw">let </span>graph = Graph::try_from(
+        <span class="kw-2">&amp;</span>fs::read_to_string(<span class="macro">concat!</span>(<span class="macro">env!</span>(<span class="string">&quot;OUT_DIR&quot;</span>), <span class="string">&quot;/test_nn/graph.json&quot;</span>)).unwrap(),
+    )
+    .unwrap();
+    <span class="kw">let </span><span class="kw-2">mut </span>exec = GraphExecutor::new(graph, <span class="kw-2">&amp;</span>syslib).unwrap();
+
+    <span class="kw">let </span>x = Array::from_shape_vec(
+        (BATCH_SIZE, IN_DIM),
+        (<span class="number">0</span>..BATCH_SIZE * IN_DIM)
+            .map(|x| x <span class="kw">as </span>f32)
+            .collect::&lt;Vec&lt;f32&gt;&gt;(),
+    )
+    .unwrap();
+
+    <span class="kw">let </span>p0 = params.get(<span class="string">&quot;p0&quot;</span>).unwrap().to_owned();
+    <span class="kw">let </span>p1 = params.get(<span class="string">&quot;p1&quot;</span>).unwrap().to_owned();
+    <span class="macro">println!</span>(<span class="string">&quot;p0: {:?}&quot;</span>, p0.shape());
+    <span class="macro">println!</span>(<span class="string">&quot;p1: {:?}&quot;</span>, p1.shape());
+    <span class="kw">let </span>w = Array::try_from(p0)
+        .unwrap()
+        .into_shape((BATCH_SIZE * <span class="number">4</span>, IN_DIM))
+        .unwrap();
+    <span class="kw">let </span>b = Array::try_from(p1).unwrap();
+    <span class="kw">let </span>dense = x.dot(<span class="kw-2">&amp;</span>w.t()) + <span class="kw-2">&amp;</span>b;
+    <span class="kw">let </span>left = dense.slice(<span class="macro">s!</span>[.., <span class="number">0</span>..IN_DIM]);
+    <span class="kw">let </span>right = dense.slice(<span class="macro">s!</span>[.., IN_DIM..]);
+    <span class="kw">let </span>expected_o0 = <span class="kw-2">&amp;</span>left + <span class="number">1f32</span>;
+    <span class="kw">let </span>expected_o1 = <span class="kw-2">&amp;</span>right - <span class="number">1f32</span>;
+
+    exec.load_params(params);
+    exec.set_input(<span class="string">&quot;data&quot;</span>, (<span class="kw-2">&amp;</span>x).into());
+
+    <span class="macro">check_sum!</span>(exec, data, x);
+    <span class="macro">check_sum!</span>(exec, p0, w);
+    <span class="macro">check_sum!</span>(exec, p1, b);
+
+    exec.run();
+
+    <span class="macro">check_sum!</span>(exec, <span class="number">0</span>, expected_o0);
+    <span class="macro">check_sum!</span>(exec, <span class="number">1</span>, expected_o1);
+    <span class="macro">check_sum!</span>(exec, <span class="number">2</span>, dense);
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="test_rt_nn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/test_rt_tvm_basic/main.rs.html b/docs/api/rust/src/test_rt_tvm_basic/main.rs.html
new file mode 100644
index 0000000000..a33af2d01d
--- /dev/null
+++ b/docs/api/rust/src/test_rt_tvm_basic/main.rs.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm-graph-rt/tests/test_tvm_basic/src/main.rs`."><title>main.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" c [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>ndarray::Array;
+<span class="kw">use </span>tvm_graph_rt::{DLTensor, Module <span class="kw">as _</span>, SystemLibModule};
+
+<span class="kw">mod </span>tvm_mod {
+    <span class="macro">tvm_graph_rt::import_module!</span>(<span class="string">&quot;lib/test.o&quot;</span>);
+}
+
+<span class="kw">fn </span>main() {
+    <span class="comment">// try static
+    </span><span class="kw">let </span><span class="kw-2">mut </span>a = Array::from_vec(<span class="macro">vec!</span>[<span class="number">1f32</span>, <span class="number">2.</span>, <span class="number">3.</span>, <span class="number">4.</span>]);
+    <span class="kw">let </span><span class="kw-2">mut </span>b = Array::from_vec(<span class="macro">vec!</span>[<span class="number">1f32</span>, <span class="number">0.</span>, <span class="number">1.</span>, <span class="number">0.</span>]);
+    <span class="kw">let </span><span class="kw-2">mut </span>c = Array::from_vec(<span class="macro">vec!</span>[<span class="number">0f32</span>; <span class="number">4</span>]);
+    <span class="kw">let </span>e = Array::from_vec(<span class="macro">vec!</span>[<span class="number">2f32</span>, <span class="number">2.</span>, <span class="number">4.</span>, <span class="number">4.</span>]);
+    <span class="kw">let </span><span class="kw-2">mut </span>a_dl: DLTensor = (<span class="kw-2">&amp;mut </span>a).into();
+    <span class="kw">let </span><span class="kw-2">mut </span>b_dl: DLTensor = (<span class="kw-2">&amp;mut </span>b).into();
+    <span class="kw">let </span><span class="kw-2">mut </span>c_dl: DLTensor = (<span class="kw-2">&amp;mut </span>c).into();
+    <span class="kw">let </span>args = <span class="macro">vec!</span>[(<span class="kw-2">&amp;mut </span>a_dl).into(), (<span class="kw-2">&amp;mut </span>b_dl).into(), (<span class="kw-2">&amp;mut </span>c_dl).into()];
+    tvm_mod::default_function(<span class="kw-2">&amp;</span>args[..]).unwrap();
+    <span class="macro">assert!</span>(c.all_close(<span class="kw-2">&amp;</span>e, <span class="number">1e-8f32</span>));
+
+    <span class="comment">// try runtime
+    </span><span class="kw">let </span>syslib = SystemLibModule::default();
+    <span class="kw">let </span>add = syslib
+        .get_function(<span class="string">&quot;default_function&quot;</span>)
+        .expect(<span class="string">&quot;main function not found&quot;</span>);
+    add(<span class="kw-2">&amp;</span>args[..]).unwrap();
+    <span class="macro">assert!</span>(c.all_close(<span class="kw-2">&amp;</span>e, <span class="number">1e-8f32</span>));
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="test_rt_tvm_basic" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/test_rt_tvm_dso/main.rs.html b/docs/api/rust/src/test_rt_tvm_dso/main.rs.html
new file mode 100644
index 0000000000..6399487feb
--- /dev/null
+++ b/docs/api/rust/src/test_rt_tvm_dso/main.rs.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm-graph-rt/tests/test_tvm_dso/src/main.rs`."><title>main.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cro [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>ndarray::Array;
+<span class="kw">use </span>tvm_graph_rt::{DLTensor, DsoModule, Module};
+
+<span class="kw">fn </span>main() {
+    tvm_graph_rt::TVMGetLastError();
+    <span class="kw">let </span>module = DsoModule::new(<span class="macro">concat!</span>(<span class="macro">env!</span>(<span class="string">&quot;OUT_DIR&quot;</span>), <span class="string">&quot;/test.so&quot;</span>)).unwrap();
+    <span class="kw">let </span>add = module
+        .get_function(<span class="string">&quot;__tvm_main__&quot;</span>)
+        .expect(<span class="string">&quot;main function not found&quot;</span>);
+    <span class="kw">let </span><span class="kw-2">mut </span>a = Array::from_vec(<span class="macro">vec!</span>[<span class="number">1f32</span>, <span class="number">2.</span>, <span class="number">3.</span>, <span class="number">4.</span>]);
+    <span class="kw">let </span><span class="kw-2">mut </span>b = Array::from_vec(<span class="macro">vec!</span>[<span class="number">1f32</span>, <span class="number">0.</span>, <span class="number">1.</span>, <span class="number">0.</span>]);
+    <span class="kw">let </span><span class="kw-2">mut </span>c = Array::from_vec(<span class="macro">vec!</span>[<span class="number">0f32</span>; <span class="number">4</span>]);
+    <span class="kw">let </span>e = Array::from_vec(<span class="macro">vec!</span>[<span class="number">2f32</span>, <span class="number">2.</span>, <span class="number">4.</span>, <span class="number">4.</span>]);
+    <span class="kw">let </span><span class="kw-2">mut </span>a_dl: DLTensor = (<span class="kw-2">&amp;mut </span>a).into();
+    <span class="kw">let </span><span class="kw-2">mut </span>b_dl: DLTensor = (<span class="kw-2">&amp;mut </span>b).into();
+    <span class="kw">let </span><span class="kw-2">mut </span>c_dl: DLTensor = (<span class="kw-2">&amp;mut </span>c).into();
+    <span class="kw">let </span>args = <span class="macro">vec!</span>[(<span class="kw-2">&amp;mut </span>a_dl).into(), (<span class="kw-2">&amp;mut </span>b_dl).into(), (<span class="kw-2">&amp;mut </span>c_dl).into()];
+    add(<span class="kw-2">&amp;</span>args[..]).unwrap();
+    <span class="macro">assert!</span>(c.all_close(<span class="kw-2">&amp;</span>e, <span class="number">1e-8f32</span>));
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="test_rt_tvm_dso" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/compiler/graph_rt.rs.html b/docs/api/rust/src/tvm/compiler/graph_rt.rs.html
new file mode 100644
index 0000000000..486c5c76af
--- /dev/null
+++ b/docs/api/rust/src/tvm/compiler/graph_rt.rs.html
@@ -0,0 +1,250 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/compiler/graph_rt.rs`."><title>graph_rt.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>std::convert::TryInto;
+<span class="kw">use </span>std::io::Read;
+<span class="kw">use </span>std::path::Path;
+
+<span class="kw">use </span>once_cell::sync::Lazy;
+<span class="kw">use </span>thiserror::Error;
+
+<span class="kw">use </span><span class="kw">crate</span>::ir::IRModule;
+<span class="kw">use </span><span class="kw">crate</span>::python;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::{map::Map, Function, Module <span class="kw">as </span>RtModule, NDArray, String};
+
+<span class="attr">#[derive(Error, Debug)]
+</span><span class="kw">pub enum </span>Error {
+    <span class="attr">#[error(<span class="string">&quot;{0}&quot;</span>)]
+    </span>IO(<span class="attr">#[from] </span>std::io::Error),
+    <span class="attr">#[error(<span class="string">&quot;{0}&quot;</span>)]
+    </span>TVM(<span class="attr">#[from] </span><span class="kw">crate</span>::errors::Error),
+}
+
+<span class="kw">static </span>TVM_BUILD: Lazy&lt;Function&gt; = Lazy::new(|| {
+    python::import(<span class="string">&quot;tvm&quot;</span>).unwrap();
+    python::import(<span class="string">&quot;tvm.relay&quot;</span>).unwrap();
+    Function::get(<span class="string">&quot;tvm.relay.build&quot;</span>).unwrap()
+});
+
+<span class="kw">fn </span>_compile_module(
+    module: IRModule,
+    target: String,
+    target_host: String,
+    params: Map&lt;String, NDArray&gt;,
+    module_name: String,
+) -&gt; <span class="prelude-ty">Result</span>&lt;RtModule, Error&gt; {
+    <span class="comment">// The RAW API is Fn(IRModule, String, String, Map&lt;String, NDArray&gt;, String);
+    </span><span class="kw">let </span>module = TVM_BUILD.invoke(<span class="macro">vec!</span>[
+        (<span class="kw-2">&amp;</span>module).into(),
+        (<span class="kw-2">&amp;</span>target).into(),
+        (<span class="kw-2">&amp;</span>target_host).into(),
+        (<span class="kw-2">&amp;</span>params).into(),
+        (<span class="kw-2">&amp;</span>module_name).into(),
+    ])<span class="question-mark">?</span>;
+    <span class="kw">let </span>module: RtModule = module.try_into().unwrap();
+    <span class="prelude-val">Ok</span>(module)
+}
+
+<span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>CompilerConfig {
+    target: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    target_host: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    params: Map&lt;String, NDArray&gt;,
+    module_name: <span class="prelude-ty">Option</span>&lt;String&gt;,
+}
+
+<span class="kw">impl </span>Default <span class="kw">for </span>CompilerConfig {
+    <span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
+        CompilerConfig {
+            target: <span class="prelude-val">None</span>,
+            target_host: <span class="prelude-val">None</span>,
+            params: Map::empty(),
+            module_name: <span class="prelude-val">None</span>,
+        }
+    }
+}
+
+<span class="doccomment">/// Compile a module from a configuration and IRModule.
+///
+/// # Arguments
+///
+/// * `config` - The configuration for the compiler.
+/// * `module` - The IRModule to compile.
+</span><span class="kw">pub fn </span>compile_module(config: CompilerConfig, module: IRModule) -&gt; <span class="prelude-ty">Result</span>&lt;RtModule, Error&gt; {
+    <span class="kw">let </span>target = config.target.unwrap_or(<span class="string">&quot;llvm&quot;</span>.into());
+    _compile_module(
+        module,
+        target,
+        <span class="string">&quot;llvm&quot;</span>.into(),
+        Map::&lt;String, NDArray&gt;::empty(),
+        <span class="string">&quot;default&quot;</span>.into(),
+    )
+}
+
+<span class="doccomment">/// Compile an IRModule on disk and output a runtime module to disk.
+///
+/// # Arguments
+/// * `config` - The configuration for the compiler.
+/// * `ir_mod_path` - The path the serialized IRModule.
+</span><span class="comment">//
+</span><span class="doccomment">/// * `output_rt_mod_path` - The path to the output runtime module.
+</span><span class="kw">pub fn </span>compile_from_disk&lt;P1, P2&gt;(
+    config: CompilerConfig,
+    ir_mod_path: P1,
+    output_rt_mod_path: P2,
+) -&gt; <span class="prelude-ty">Result</span>&lt;(), Error&gt;
+<span class="kw">where
+    </span>P1: AsRef&lt;Path&gt;,
+    P2: AsRef&lt;Path&gt;,
+{
+    <span class="kw">let </span><span class="kw-2">mut </span>input_file = std::fs::File::open(ir_mod_path.as_ref())<span class="question-mark">?</span>;
+    <span class="kw">let </span><span class="kw-2">mut </span>input_module_text = std::string::String::new();
+    input_file.read_to_string(<span class="kw-2">&amp;mut </span>input_module_text)<span class="question-mark">?</span>;
+    <span class="kw">let </span>input_module = IRModule::parse(<span class="string">&quot;name&quot;</span>, input_module_text)<span class="question-mark">?</span>;
+    <span class="kw">let </span>rt_module = compile_module(config, input_module)<span class="question-mark">?</span>;
+    <span class="kw">let </span>output_path_str = output_rt_mod_path.as_ref().display().to_string();
+    rt_module.export_library(output_path_str)<span class="question-mark">?</span>;
+    <span class="prelude-val">Ok</span>(())
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="tvm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/compiler/mod.rs.html b/docs/api/rust/src/tvm/compiler/mod.rs.html
new file mode 100644
index 0000000000..e05522f8f2
--- /dev/null
+++ b/docs/api/rust/src/tvm/compiler/mod.rs.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/compiler/mod.rs`."><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../ [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">pub mod </span>graph_rt;
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="tvm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/ir/arith.rs.html b/docs/api/rust/src/tvm/ir/arith.rs.html
new file mode 100644
index 0000000000..c4c7c5e0e8
--- /dev/null
+++ b/docs/api/rust/src/tvm/ir/arith.rs.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/ir/arith.rs`."><title>arith.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../.. [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span><span class="kw">crate</span>::runtime::{Object, ObjectPtr};
+
+<span class="kw">use </span>tvm_macros::Object;
+
+<span class="macro">macro_rules! </span>define_node {
+    (<span class="macro-nonterminal">$name</span>:ident, <span class="macro-nonterminal">$</span><span class="kw-2">ref</span>:<span class="macro-nonterminal">expr</span>, <span class="macro-nonterminal">$typekey</span>:expr; <span class="macro-nonterminal">$node</span>:ident { $(<span class="macro-nonterminal">$id</span>:ident : <span class="macro-nonterminal">$t</span>:ty),<span class="kw-2">*</span>}) =&gt; {
+        <span class="attr">#[repr(C)]
+        #[derive(Object, Debug)]
+        #[ref_name = <span class="macro-nonterminal">$</span><span class="kw-2">ref</span>]
+        #[<span class="macro-nonterminal">type_key </span>= <span class="macro-nonterminal">$typekey</span>]
+        </span><span class="kw">pub struct </span><span class="macro-nonterminal">$node </span>{
+            base: Object,
+            $(<span class="kw">pub </span><span class="macro-nonterminal">$id </span>: <span class="macro-nonterminal">$t</span>),*
+        }
+
+        <span class="kw">impl </span><span class="macro-nonterminal">$name </span>{
+            <span class="kw">pub fn </span>new($(<span class="macro-nonterminal">$id </span>: <span class="macro-nonterminal">$t</span>,)<span class="kw-2">*</span>) -&gt; <span class="macro-nonterminal">$name </span>{
+                <span class="kw">let </span>base = Object::base::&lt;<span class="macro-nonterminal">$node</span>&gt;();
+                <span class="kw">let </span>node = <span class="macro-nonterminal">$node </span>{ base, $(<span class="macro-nonterminal">$id</span>),* };
+                <span class="macro-nonterminal">$name</span>(<span class="prelude-val">Some</span>(ObjectPtr::new(node)))
+            }
+        }
+    }
+}
+
+<span class="macro">define_node!</span>(ConstIntBound, <span class="string">&quot;ConstIntBound&quot;</span>, <span class="string">&quot;arith.ConstIntBound&quot;</span>;
+             ConstIntBoundNode { min_value: i64, max_value: i64 });
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="tvm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/ir/attrs.rs.html b/docs/api/rust/src/tvm/ir/attrs.rs.html
new file mode 100644
index 0000000000..5ae0a763d1
--- /dev/null
+++ b/docs/api/rust/src/tvm/ir/attrs.rs.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/ir/attrs.rs`."><title>attrs.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../.. [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span><span class="kw">crate</span>::runtime::Object;
+<span class="kw">use </span>tvm_macros::Object;
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;Attrs&quot;</span>]
+#[type_key = <span class="string">&quot;Attrs&quot;</span>]
+</span><span class="kw">pub struct </span>BaseAttrsNode {
+    <span class="kw">pub </span>base: Object,
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="tvm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/ir/diagnostics/codespan.rs.html b/docs/api/rust/src/tvm/ir/diagnostics/codespan.rs.html
new file mode 100644
index 0000000000..a00f77e637
--- /dev/null
+++ b/docs/api/rust/src/tvm/ir/diagnostics/codespan.rs.html
@@ -0,0 +1,434 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/ir/diagnostics/codespan.rs`."><title>codespan.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cr [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="doccomment">//! A TVM diagnostics renderer which uses the Rust `codespan` library
+//! to produce error messages.
+//!
+//! This is an example of using the exposed API surface of TVM to
+//! customize the compiler behavior.
+</span><span class="kw">use </span>std::collections::HashMap;
+<span class="kw">use </span>std::sync::{Arc, Mutex};
+
+<span class="kw">use </span>codespan_reporting::diagnostic::{Diagnostic <span class="kw">as </span>CDiagnostic, Label, Severity};
+<span class="kw">use </span>codespan_reporting::files::SimpleFiles;
+<span class="kw">use </span>codespan_reporting::term::termcolor::{ColorChoice, StandardStream};
+<span class="kw">use </span>codespan_reporting::term::{<span class="self">self</span>};
+
+<span class="kw">use super</span>::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">crate</span>::ir::source_map::<span class="kw-2">*</span>;
+
+<span class="doccomment">/// A representation of a TVM Span as a range of bytes in a file.
+</span><span class="kw">struct </span>ByteRange&lt;FileId&gt; {
+    <span class="doccomment">/// The file in which the range occurs.
+    </span><span class="attr">#[allow(dead_code)]
+    </span>file_id: FileId,
+    <span class="doccomment">/// The range start.
+    </span>start_pos: usize,
+    <span class="doccomment">/// The range end.
+    </span>end_pos: usize,
+}
+
+<span class="doccomment">/// A mapping from Span to ByteRange for a single file.
+</span><span class="kw">enum </span>FileSpanToByteRange {
+    AsciiSource(Vec&lt;usize&gt;),
+    <span class="attr">#[allow(dead_code)]
+    </span>Utf8 {
+        <span class="doccomment">/// Map character regions which are larger then 1-byte to length.
+        </span>lengths: HashMap&lt;isize, isize&gt;,
+        <span class="doccomment">/// The source of the program.
+        </span>source: String,
+    },
+}
+
+<span class="kw">impl </span>FileSpanToByteRange {
+    <span class="doccomment">/// Construct a span to byte range mapping from the program source.
+    </span><span class="kw">fn </span>new(source: String) -&gt; FileSpanToByteRange {
+        <span class="kw">if </span>source.is_ascii() {
+            <span class="kw">let </span>line_lengths = source.lines().map(|line| line.len()).collect();
+            FileSpanToByteRange::AsciiSource(line_lengths)
+        } <span class="kw">else </span>{
+            <span class="macro">panic!</span>()
+        }
+    }
+
+    <span class="doccomment">/// Lookup the corresponding ByteRange for a given Span.
+    </span><span class="kw">fn </span>lookup(<span class="kw-2">&amp;</span><span class="self">self</span>, span: <span class="kw-2">&amp;</span>Span) -&gt; ByteRange&lt;String&gt; {
+        <span class="kw">use </span>FileSpanToByteRange::<span class="kw-2">*</span>;
+
+        <span class="kw">let </span>source_name: String = span.source_name.name.as_str().unwrap().into();
+
+        <span class="kw">match </span><span class="self">self </span>{
+            AsciiSource(<span class="kw-2">ref </span>line_lengths) =&gt; {
+                <span class="kw">let </span>start_pos = (<span class="kw-2">&amp;</span>line_lengths[<span class="number">0</span>..(span.line - <span class="number">1</span>) <span class="kw">as </span>usize])
+                    .into_iter()
+                    .sum::&lt;usize&gt;()
+                    + (span.column) <span class="kw">as </span>usize;
+                <span class="kw">let </span>end_pos = (<span class="kw-2">&amp;</span>line_lengths[<span class="number">0</span>..(span.end_line - <span class="number">1</span>) <span class="kw">as </span>usize])
+                    .into_iter()
+                    .sum::&lt;usize&gt;()
+                    + (span.end_column) <span class="kw">as </span>usize;
+                ByteRange {
+                    file_id: source_name,
+                    start_pos,
+                    end_pos,
+                }
+            }
+            <span class="kw">_ </span>=&gt; <span class="macro">panic!</span>(),
+        }
+    }
+}
+
+<span class="doccomment">/// A mapping for all files in a source map to byte ranges.
+</span><span class="kw">struct </span>SpanToByteRange {
+    map: HashMap&lt;String, FileSpanToByteRange&gt;,
+}
+
+<span class="kw">impl </span>SpanToByteRange {
+    <span class="kw">fn </span>new() -&gt; SpanToByteRange {
+        SpanToByteRange {
+            map: HashMap::new(),
+        }
+    }
+
+    <span class="doccomment">/// Add a source file to the span mapping.
+    </span><span class="kw">pub fn </span>add_source(<span class="kw-2">&amp;mut </span><span class="self">self</span>, source: Source) {
+        <span class="kw">let </span>source_name: String = source.source_name.name.as_str().expect(<span class="string">&quot;foo&quot;</span>).into();
+
+        <span class="kw">if </span><span class="self">self</span>.map.contains_key(<span class="kw-2">&amp;</span>source_name) {
+            <span class="macro">panic!</span>()
+        } <span class="kw">else </span>{
+            <span class="kw">let </span>source = source.source.as_str().expect(<span class="string">&quot;fpp&quot;</span>).into();
+            <span class="self">self</span>.map
+                .insert(source_name, FileSpanToByteRange::new(source));
+        }
+    }
+
+    <span class="doccomment">/// Lookup a span to byte range mapping.
+    ///
+    /// First resolves the Span to a file, and then maps the span to a byte range in the file.
+    </span><span class="kw">pub fn </span>lookup(<span class="kw-2">&amp;</span><span class="self">self</span>, span: <span class="kw-2">&amp;</span>Span) -&gt; ByteRange&lt;String&gt; {
+        <span class="kw">let </span>source_name: String = span.source_name.name.as_str().expect(<span class="string">&quot;foo&quot;</span>).into();
+
+        <span class="kw">match </span><span class="self">self</span>.map.get(<span class="kw-2">&amp;</span>source_name) {
+            <span class="prelude-val">Some</span>(file_span_to_bytes) =&gt; file_span_to_bytes.lookup(span),
+            <span class="prelude-val">None </span>=&gt; <span class="macro">panic!</span>(),
+        }
+    }
+}
+
+<span class="doccomment">/// The state of the `codespan` based diagnostics.
+</span><span class="kw">struct </span>DiagnosticState {
+    files: SimpleFiles&lt;String, String&gt;,
+    span_map: SpanToByteRange,
+    <span class="comment">// todo unify wih source name
+    </span>source_to_id: HashMap&lt;String, usize&gt;,
+}
+
+<span class="kw">impl </span>DiagnosticState {
+    <span class="kw">fn </span>new() -&gt; DiagnosticState {
+        DiagnosticState {
+            files: SimpleFiles::new(),
+            span_map: SpanToByteRange::new(),
+            source_to_id: HashMap::new(),
+        }
+    }
+
+    <span class="kw">fn </span>add_source(<span class="kw-2">&amp;mut </span><span class="self">self</span>, source: Source) {
+        <span class="kw">let </span>source_str: String = source.source.as_str().unwrap().into();
+        <span class="kw">let </span>source_name: String = source.source_name.name.as_str().unwrap().into();
+        <span class="self">self</span>.span_map.add_source(source);
+        <span class="kw">let </span>file_id = <span class="self">self</span>.files.add(source_name.clone(), source_str);
+        <span class="self">self</span>.source_to_id.insert(source_name, file_id);
+    }
+
+    <span class="kw">fn </span>to_diagnostic(<span class="kw-2">&amp;</span><span class="self">self</span>, diag: <span class="kw">super</span>::Diagnostic) -&gt; CDiagnostic&lt;usize&gt; {
+        <span class="kw">let </span>severity = <span class="kw">match </span>diag.level {
+            DiagnosticLevel::Error =&gt; Severity::Error,
+            DiagnosticLevel::Warning =&gt; Severity::Warning,
+            DiagnosticLevel::Note =&gt; Severity::Note,
+            DiagnosticLevel::Help =&gt; Severity::Help,
+            DiagnosticLevel::Bug =&gt; Severity::Bug,
+        };
+
+        <span class="kw">let </span>source_name: String = diag.span.source_name.name.as_str().unwrap().into();
+        <span class="kw">let </span>file_id = <span class="kw-2">*</span><span class="self">self</span>.source_to_id.get(<span class="kw-2">&amp;</span>source_name).unwrap();
+
+        <span class="kw">let </span>message: String = diag.message.as_str().unwrap().into();
+
+        <span class="kw">let </span>byte_range = <span class="self">self</span>.span_map.lookup(<span class="kw-2">&amp;</span>diag.span);
+
+        <span class="kw">let </span>diagnostic = CDiagnostic::new(severity)
+            .with_message(message)
+            .with_code(<span class="string">&quot;EXXX&quot;</span>)
+            .with_labels(<span class="macro">vec!</span>[Label::primary(
+                file_id,
+                byte_range.start_pos..byte_range.end_pos,
+            )]);
+
+        diagnostic
+    }
+}
+
+<span class="kw">fn </span>renderer(state: <span class="kw-2">&amp;mut </span>DiagnosticState, diag_ctx: DiagnosticContext) {
+    <span class="kw">let </span>source_map = diag_ctx.module.source_map.clone();
+    <span class="kw">let </span>writer = StandardStream::stderr(ColorChoice::Always);
+    <span class="kw">let </span>config = codespan_reporting::term::Config::default();
+    <span class="kw">for </span>diagnostic <span class="kw">in </span>diag_ctx.diagnostics.clone() {
+        <span class="kw">match </span>source_map.source_map.get(<span class="kw-2">&amp;</span>diagnostic.span.source_name) {
+            <span class="prelude-val">Err</span>(err) =&gt; <span class="macro">panic!</span>(<span class="string">&quot;{}&quot;</span>, err),
+            <span class="prelude-val">Ok</span>(source) =&gt; {
+                state.add_source(source);
+                <span class="kw">let </span>diagnostic = state.to_diagnostic(diagnostic);
+                term::emit(<span class="kw-2">&amp;mut </span>writer.lock(), <span class="kw-2">&amp;</span>config, <span class="kw-2">&amp;</span>state.files, <span class="kw-2">&amp;</span>diagnostic).unwrap();
+            }
+        }
+    }
+}
+
+<span class="doccomment">/// Initialize the `codespan` based diagnostics.
+///
+/// Calling this function will globally override the TVM diagnostics renderer.
+</span><span class="kw">pub fn </span>init() -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+    <span class="kw">let </span>diag_state = Arc::new(Mutex::new(DiagnosticState::new()));
+    <span class="kw">let </span>render_fn = <span class="kw">move </span>|diag_ctx: DiagnosticContext| {
+        <span class="kw">let </span><span class="kw-2">mut </span>guard = diag_state.lock().unwrap();
+        renderer(<span class="kw-2">&amp;mut *</span>guard, diag_ctx);
+    };
+
+    override_renderer(<span class="prelude-val">Some</span>(render_fn))<span class="question-mark">?</span>;
+    <span class="prelude-val">Ok</span>(())
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="tvm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/ir/diagnostics/mod.rs.html b/docs/api/rust/src/tvm/ir/diagnostics/mod.rs.html
new file mode 100644
index 0000000000..5dc0ebf7a4
--- /dev/null
+++ b/docs/api/rust/src/tvm/ir/diagnostics/mod.rs.html
@@ -0,0 +1,494 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/ir/diagnostics/mod.rs`."><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin  [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span><span class="kw">super</span>::module::IRModule;
+<span class="kw">use </span><span class="kw">super</span>::span::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::function::Result;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::object::{Object, ObjectPtr};
+<span class="kw">use </span><span class="kw">crate</span>::runtime::{
+    array::Array,
+    function::{<span class="self">self</span>, Function, ToFunction},
+    string::String <span class="kw">as </span>TString,
+};
+<span class="doccomment">/// The diagnostic interface to TVM, used for reporting and rendering
+/// diagnostic information by the compiler. This module exposes
+/// three key abstractions: a Diagnostic, the DiagnosticContext,
+/// and the DiagnosticRenderer.
+</span><span class="kw">use </span>tvm_macros::{external, Object};
+
+<span class="kw">pub mod </span>codespan;
+
+<span class="macro">external! </span>{
+    <span class="attr">#[name(<span class="string">&quot;runtime.ArrayGetItem&quot;</span>)]
+    </span><span class="kw">fn </span>get_renderer() -&gt; DiagnosticRenderer;
+
+    <span class="attr">#[name(<span class="string">&quot;diagnostics.DiagnosticRenderer&quot;</span>)]
+    </span><span class="kw">fn </span>diagnostic_renderer(func: Function) -&gt; DiagnosticRenderer;
+
+    <span class="attr">#[name(<span class="string">&quot;diagnostics.Emit&quot;</span>)]
+    </span><span class="kw">fn </span>emit(ctx: DiagnosticContext, diagnostic: Diagnostic) -&gt; ();
+
+    <span class="attr">#[name(<span class="string">&quot;diagnostics.DiagnosticContextDefault&quot;</span>)]
+    </span><span class="kw">fn </span>diagnostic_context_default(module: IRModule) -&gt; DiagnosticContext;
+
+    <span class="attr">#[name(<span class="string">&quot;diagnostics.DiagnosticContextRender&quot;</span>)]
+    </span><span class="kw">fn </span>diagnostic_context_render(ctx: DiagnosticContext) -&gt; ();
+
+    <span class="attr">#[name(<span class="string">&quot;diagnostics.DiagnosticRendererRender&quot;</span>)]
+    </span><span class="kw">fn </span>diagnositc_renderer_render(renderer: DiagnosticRenderer, ctx: DiagnosticContext) -&gt; ();
+
+    <span class="attr">#[name(<span class="string">&quot;diagnostics.ClearRenderer&quot;</span>)]
+    </span><span class="kw">fn </span>clear_renderer() -&gt; ();
+}
+
+<span class="doccomment">/// The diagnostic level, controls the printing of the message.
+</span><span class="attr">#[repr(C)]
+#[derive(PartialEq, Eq, Debug)]
+</span><span class="kw">pub enum </span>DiagnosticLevel {
+    Bug = <span class="number">10</span>,
+    Error = <span class="number">20</span>,
+    Warning = <span class="number">30</span>,
+    Note = <span class="number">40</span>,
+    Help = <span class="number">50</span>,
+}
+
+<span class="doccomment">/// A compiler diagnostic.
+</span><span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;Diagnostic&quot;</span>]
+#[type_key = <span class="string">&quot;Diagnostic&quot;</span>]
+</span><span class="kw">pub struct </span>DiagnosticNode {
+    <span class="kw">pub </span>base: Object,
+    <span class="doccomment">/// The level.
+    </span><span class="kw">pub </span>level: DiagnosticLevel,
+    <span class="doccomment">/// The span at which to report an error.
+    </span><span class="kw">pub </span>span: Span,
+    <span class="doccomment">/// The diagnostic message.
+    </span><span class="kw">pub </span>message: TString,
+}
+
+<span class="kw">impl </span>Diagnostic {
+    <span class="kw">pub fn </span>new(level: DiagnosticLevel, span: Span, message: TString) -&gt; Diagnostic {
+        <span class="kw">let </span>node = DiagnosticNode {
+            base: Object::base::&lt;DiagnosticNode&gt;(),
+            level,
+            span,
+            message,
+        };
+        ObjectPtr::new(node).into()
+    }
+
+    <span class="kw">pub fn </span>bug(span: Span) -&gt; DiagnosticBuilder {
+        DiagnosticBuilder::new(DiagnosticLevel::Bug, span)
+    }
+
+    <span class="kw">pub fn </span>error(span: Span) -&gt; DiagnosticBuilder {
+        DiagnosticBuilder::new(DiagnosticLevel::Error, span)
+    }
+
+    <span class="kw">pub fn </span>warning(span: Span) -&gt; DiagnosticBuilder {
+        DiagnosticBuilder::new(DiagnosticLevel::Warning, span)
+    }
+
+    <span class="kw">pub fn </span>note(span: Span) -&gt; DiagnosticBuilder {
+        DiagnosticBuilder::new(DiagnosticLevel::Note, span)
+    }
+
+    <span class="kw">pub fn </span>help(span: Span) -&gt; DiagnosticBuilder {
+        DiagnosticBuilder::new(DiagnosticLevel::Help, span)
+    }
+}
+
+<span class="doccomment">/// A wrapper around std::stringstream to build a diagnostic.
+</span><span class="kw">pub struct </span>DiagnosticBuilder {
+    <span class="doccomment">/// The level.
+    </span><span class="kw">pub </span>level: DiagnosticLevel,
+
+    <span class="doccomment">/// The span of the diagnostic.
+    </span><span class="kw">pub </span>span: Span,
+
+    <span class="doccomment">/// The in progress message.
+    </span><span class="kw">pub </span>message: String,
+}
+
+<span class="kw">impl </span>DiagnosticBuilder {
+    <span class="kw">pub fn </span>new(level: DiagnosticLevel, span: Span) -&gt; DiagnosticBuilder {
+        DiagnosticBuilder {
+            level,
+            span,
+            message: <span class="string">&quot;&quot;</span>.into(),
+        }
+    }
+}
+
+<span class="doccomment">/// Display diagnostics in a given display format.
+///
+/// A diagnostic renderer is responsible for converting the
+/// raw diagnostics into consumable output.
+///
+/// For example the terminal renderer will render a sequence
+/// of compiler diagnostics to std::out and std::err in
+/// a human readable form.
+</span><span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;DiagnosticRenderer&quot;</span>]
+#[type_key = <span class="string">&quot;DiagnosticRenderer&quot;</span>]
+</span><span class="doccomment">/// A diagnostic renderer, which given a diagnostic context produces a &quot;rendered&quot;
+/// form of the diagnostics for either human or computer consumption.
+</span><span class="kw">pub struct </span>DiagnosticRendererNode {
+    <span class="doccomment">/// The base type.
+    </span><span class="kw">pub </span>base: Object,
+    <span class="comment">// TODO(@jroesch): we can&#39;t easily exposed packed functions due to
+    // memory layout
+    // missing field here
+</span>}
+
+<span class="kw">impl </span>DiagnosticRenderer {
+    <span class="doccomment">/// Render the provided context.
+    </span><span class="kw">pub fn </span>render(<span class="kw-2">&amp;</span><span class="self">self</span>, ctx: DiagnosticContext) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        diagnositc_renderer_render(<span class="self">self</span>.clone(), ctx)
+    }
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;DiagnosticContext&quot;</span>]
+#[type_key = <span class="string">&quot;DiagnosticContext&quot;</span>]
+</span><span class="doccomment">/// A diagnostic context for recording errors against a source file.
+</span><span class="kw">pub struct </span>DiagnosticContextNode {
+    <span class="comment">// The base type.
+    </span><span class="kw">pub </span>base: Object,
+
+    <span class="doccomment">/// The Module to report against.
+    </span><span class="kw">pub </span>module: IRModule,
+
+    <span class="doccomment">/// The set of diagnostics to report.
+    </span><span class="kw">pub </span>diagnostics: Array&lt;Diagnostic&gt;,
+
+    <span class="doccomment">/// The renderer set for the context.
+    </span><span class="kw">pub </span>renderer: DiagnosticRenderer,
+}
+
+<span class="doccomment">/// A diagnostic context which records active errors
+/// and contains a renderer.
+</span><span class="kw">impl </span>DiagnosticContext {
+    <span class="kw">pub fn </span>new&lt;F&gt;(module: IRModule, render_func: F) -&gt; DiagnosticContext
+    <span class="kw">where
+        </span>F: Fn(DiagnosticContext) -&gt; () + <span class="lifetime">&#39;static</span>,
+    {
+        <span class="kw">let </span>renderer = diagnostic_renderer(render_func.to_function()).unwrap();
+        <span class="kw">let </span>node = DiagnosticContextNode {
+            base: Object::base::&lt;DiagnosticContextNode&gt;(),
+            module,
+            diagnostics: Array::from_vec(<span class="macro">vec!</span>[]).unwrap(),
+            renderer,
+        };
+        DiagnosticContext(<span class="prelude-val">Some</span>(ObjectPtr::new(node)))
+    }
+
+    <span class="kw">pub fn </span>default(module: IRModule) -&gt; DiagnosticContext {
+        diagnostic_context_default(module).unwrap()
+    }
+
+    <span class="doccomment">/// Emit a diagnostic.
+    </span><span class="kw">pub fn </span>emit(<span class="kw-2">&amp;mut </span><span class="self">self</span>, diagnostic: Diagnostic) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        emit(<span class="self">self</span>.clone(), diagnostic)
+    }
+
+    <span class="doccomment">/// Render the errors and raise a DiagnosticError exception.
+    </span><span class="kw">pub fn </span>render(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        diagnostic_context_render(<span class="self">self</span>.clone())
+    }
+
+    <span class="doccomment">/// Emit a diagnostic and then immediately attempt to render all errors.
+    </span><span class="kw">pub fn </span>emit_fatal(<span class="kw-2">&amp;mut </span><span class="self">self</span>, diagnostic: Diagnostic) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.emit(diagnostic)<span class="question-mark">?</span>;
+        <span class="self">self</span>.render()<span class="question-mark">?</span>;
+        <span class="prelude-val">Ok</span>(())
+    }
+}
+
+<span class="doccomment">/// Override the global diagnostics renderer.
+</span><span class="comment">// render_func: Option[Callable[[DiagnosticContext], None]]
+//     If the render_func is None it will remove the current custom renderer
+//     and return to default behavior.
+</span><span class="kw">fn </span>override_renderer&lt;F&gt;(opt_func: <span class="prelude-ty">Option</span>&lt;F&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt;
+<span class="kw">where
+    </span>F: Fn(DiagnosticContext) -&gt; () + <span class="lifetime">&#39;static</span>,
+{
+    <span class="kw">match </span>opt_func {
+        <span class="prelude-val">None </span>=&gt; clear_renderer(),
+        <span class="prelude-val">Some</span>(func) =&gt; {
+            <span class="kw">let </span>func = func.to_function();
+            <span class="kw">let </span>render_factory = <span class="kw">move </span>|| diagnostic_renderer(func.clone()).unwrap();
+
+            function::register_override(render_factory, <span class="string">&quot;diagnostics.OverrideRenderer&quot;</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+
+            <span class="prelude-val">Ok</span>(())
+        }
+    }
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../../" data-static-root-path="../../../../static.files/" data-current-crate="tvm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/ir/expr.rs.html b/docs/api/rust/src/tvm/ir/expr.rs.html
new file mode 100644
index 0000000000..6c4ae4be4b
--- /dev/null
+++ b/docs/api/rust/src/tvm/ir/expr.rs.html
@@ -0,0 +1,210 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/ir/expr.rs`."><title>expr.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../. [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>tvm_macros::Object;
+
+<span class="kw">use </span><span class="kw">crate</span>::runtime::String <span class="kw">as </span>TString;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::{<span class="self">self</span>, external, IsObject, IsObjectRef, Object, ObjectPtr, ObjectRef};
+<span class="kw">use </span><span class="kw">crate</span>::DataType;
+
+<span class="kw">use </span><span class="kw">super</span>::relay;
+<span class="kw">use </span><span class="kw">super</span>::span::Span;
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;BaseExpr&quot;</span>]
+#[type_key = <span class="string">&quot;Expr&quot;</span>]
+</span><span class="kw">pub struct </span>BaseExprNode {
+    <span class="kw">pub </span>base: Object,
+    <span class="kw">pub </span>span: Span,
+}
+
+<span class="kw">impl </span>BaseExprNode {
+    <span class="kw">pub fn </span>base&lt;T: IsObject&gt;(span: Span) -&gt; BaseExprNode {
+        BaseExprNode {
+            base: Object::base::&lt;T&gt;(),
+            span,
+        }
+    }
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;PrimExpr&quot;</span>]
+#[type_key = <span class="string">&quot;PrimExpr&quot;</span>]
+</span><span class="kw">pub struct </span>PrimExprNode {
+    <span class="kw">pub </span>base: BaseExprNode,
+    <span class="kw">pub </span>datatype: DataType,
+}
+
+<span class="kw">impl </span>PrimExprNode {
+    <span class="kw">pub fn </span>base&lt;T: IsObject&gt;(datatype: DataType, span: Span) -&gt; PrimExprNode {
+        PrimExprNode {
+            base: BaseExprNode::base::&lt;T&gt;(span),
+            datatype,
+        }
+    }
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;GlobalVar&quot;</span>]
+#[type_key = <span class="string">&quot;GlobalVar&quot;</span>]
+</span><span class="kw">pub struct </span>GlobalVarNode {
+    <span class="kw">pub </span>base: relay::ExprNode,
+    <span class="kw">pub </span>name_hint: TString,
+}
+
+<span class="kw">impl </span>GlobalVar {
+    <span class="kw">pub fn </span>new(name_hint: String, span: Span) -&gt; GlobalVar {
+        <span class="kw">let </span>node = GlobalVarNode {
+            base: relay::ExprNode::base::&lt;GlobalVarNode&gt;(span),
+            name_hint: name_hint.into(),
+        };
+        GlobalVar(<span class="prelude-val">Some</span>(ObjectPtr::new(node)))
+    }
+}
+
+<span class="comment">// TODO(@jroesch): update to match TVM
+// Move IntImm
+// Define FloatImm
+// Define Bool
+// Define tvm::Integer?
+// Define RangeNode
+
+// TODO: figure out how to type the last argument runtime::TypedPackedFunc&lt;String(ObjectRef)&gt; annotate)
+</span><span class="macro">external! </span>{
+    <span class="attr">#[name(<span class="string">&quot;relay.ir.AsText&quot;</span>)]
+    </span><span class="kw">fn </span>_as_text(object: ObjectRef, show_meta_data: i32, annotate: runtime::Function) -&gt; TString;
+}
+
+<span class="kw">pub fn </span>as_text&lt;T: IsObjectRef&gt;(object: T) -&gt; String {
+    <span class="kw">let </span>no_func = <span class="kw">unsafe </span>{ runtime::Function::null() };
+    _as_text(object.upcast(), <span class="number">0</span>, no_func)
+        .unwrap()
+        .as_str()
+        .unwrap()
+        .into()
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="tvm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/ir/function.rs.html b/docs/api/rust/src/tvm/ir/function.rs.html
new file mode 100644
index 0000000000..08c104c3bb
--- /dev/null
+++ b/docs/api/rust/src/tvm/ir/function.rs.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/ir/function.rs`."><title>function.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href= [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>tvm_macros::Object;
+
+<span class="kw">use </span><span class="kw">super</span>::span::Span;
+
+<span class="kw">use </span><span class="kw">crate</span>::ir::relay::ExprNode;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::{IsObject, IsObjectRef, ObjectRef};
+
+<span class="comment">// TODO(@jroesch): define DictAttrs
+</span><span class="kw">pub type </span>DictAttrs = ObjectRef;
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;BaseFunc&quot;</span>]
+#[type_key = <span class="string">&quot;BaseFunc&quot;</span>]
+</span><span class="kw">pub struct </span>BaseFuncNode {
+    <span class="kw">pub </span>base: ExprNode,
+    <span class="kw">pub </span>attrs: DictAttrs,
+}
+
+<span class="kw">impl </span>BaseFuncNode {
+    <span class="kw">pub fn </span>base&lt;T: IsObject&gt;() -&gt; BaseFuncNode {
+        BaseFuncNode {
+            base: ExprNode::base::&lt;T&gt;(Span::null()),
+            attrs: &lt;ObjectRef <span class="kw">as </span>IsObjectRef&gt;::null(),
+        }
+    }
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="tvm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/ir/mod.rs.html b/docs/api/rust/src/tvm/ir/mod.rs.html
new file mode 100644
index 0000000000..ff4db4722d
--- /dev/null
+++ b/docs/api/rust/src/tvm/ir/mod.rs.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/ir/mod.rs`."><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../ [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">pub mod </span>arith;
+<span class="kw">pub mod </span>attrs;
+<span class="kw">pub mod </span>diagnostics;
+<span class="kw">pub mod </span>expr;
+<span class="kw">pub mod </span>function;
+<span class="kw">pub mod </span>module;
+<span class="kw">pub mod </span>op;
+<span class="kw">pub mod </span>relay;
+<span class="kw">pub mod </span>source_map;
+<span class="kw">pub mod </span>span;
+<span class="kw">pub mod </span>tir;
+<span class="kw">pub mod </span>ty;
+
+<span class="kw">pub use </span>expr::<span class="kw-2">*</span>;
+<span class="kw">pub use </span>module::IRModule;
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="tvm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/ir/module.rs.html b/docs/api/rust/src/tvm/ir/module.rs.html
new file mode 100644
index 0000000000..ccc3135d54
--- /dev/null
+++ b/docs/api/rust/src/tvm/ir/module.rs.html
@@ -0,0 +1,784 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/ir/module.rs`."><title>module.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../ [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span>std::collections::HashMap;
+<span class="kw">use </span>std::iter::FromIterator;
+<span class="kw">use </span>std::path::Path;
+
+<span class="kw">use </span>thiserror::Error;
+<span class="kw">use </span>tvm_macros::Object;
+
+<span class="kw">use </span><span class="kw">crate</span>::runtime::array::Array;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::function::Result;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::map::Map;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::string::String <span class="kw">as </span>TVMString;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::{external, IsObjectRef, Object, ObjectRef};
+
+<span class="kw">use </span><span class="kw">super</span>::expr::GlobalVar;
+<span class="kw">use </span><span class="kw">super</span>::function::BaseFunc;
+<span class="kw">use </span><span class="kw">super</span>::source_map::SourceMap;
+<span class="kw">use super</span>::{relay, ty::GlobalTypeVar, ty::TypeData};
+
+<span class="attr">#[derive(Error, Debug)]
+</span><span class="kw">pub enum </span>Error {
+    <span class="attr">#[error(<span class="string">&quot;{0}&quot;</span>)]
+    </span>IO(<span class="attr">#[from] </span>std::io::Error),
+    <span class="attr">#[error(<span class="string">&quot;{0}&quot;</span>)]
+    </span>TVM(<span class="attr">#[from] </span><span class="kw">crate</span>::runtime::Error),
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;IRModule&quot;</span>]
+#[type_key = <span class="string">&quot;IRModule&quot;</span>]
+</span><span class="kw">pub struct </span>IRModuleNode {
+    <span class="kw">pub </span>base: Object,
+    <span class="kw">pub </span>functions: Map&lt;GlobalVar, BaseFunc&gt;,
+    <span class="kw">pub </span>type_definitions: Map&lt;GlobalTypeVar, TypeData&gt;,
+    <span class="kw">pub </span>source_map: SourceMap,
+    <span class="comment">// TODO(@jroesch): this is missing some fields
+</span>}
+
+<span class="macro">external! </span>{
+    <span class="comment">// Parser functions
+    </span><span class="attr">#[name(<span class="string">&quot;relay.parser.ParseModule&quot;</span>)]
+    </span><span class="kw">fn </span>parse_module(file_name: TVMString, source: TVMString) -&gt; IRModule;
+    <span class="attr">#[name(<span class="string">&quot;relay.parser.ParseExpr&quot;</span>)]
+    </span><span class="kw">fn </span>parse_expression(file_name: TVMString, source: TVMString) -&gt; IRModule;
+    <span class="attr">#[name(<span class="string">&quot;ir.IRModule&quot;</span>)]
+    </span><span class="kw">fn </span>module_new(funcs: Map&lt;GlobalVar, BaseFunc&gt;, types: Map&lt;GlobalTypeVar, TypeData&gt;, attrs: Map&lt;TVMString, ObjectRef&gt;) -&gt; IRModule;
+    <span class="comment">// Module methods
+    </span><span class="attr">#[name(<span class="string">&quot;ir.Module_Add&quot;</span>)]
+    </span><span class="kw">fn </span>module_add(module: IRModule, type_name: GlobalVar, expr: BaseFunc, update: bool) -&gt; IRModule;
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_AddDef&quot;</span>)]
+    </span><span class="kw">fn </span>module_add_def(module: IRModule, type_name: GlobalTypeVar, type_data: TypeData, update: bool) -&gt; ();
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_GetGlobalVar&quot;</span>)]
+    </span><span class="kw">fn </span>module_get_global_var(module: IRModule, name: TVMString) -&gt; GlobalVar;
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_GetGlobalVars&quot;</span>)]
+    </span><span class="kw">fn </span>module_get_global_vars(module: IRModule) -&gt; Array&lt;GlobalVar&gt;;
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_Lookup&quot;</span>)]
+    </span><span class="kw">fn </span>module_lookup(module: IRModule, var: GlobalVar) -&gt; BaseFunc;
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_Lookup_str&quot;</span>)]
+    </span><span class="kw">fn </span>module_lookup_str(module: IRModule, name: TVMString) -&gt; BaseFunc;
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_GetGlobalTypeVars&quot;</span>)]
+    </span><span class="kw">fn </span>module_get_global_type_vars(module: IRModule) -&gt; Array&lt;GlobalTypeVar&gt;;
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_ContainGlobalVar&quot;</span>)]
+    </span><span class="kw">fn </span>module_contains_global_var(module: IRModule, name: TVMString) -&gt; bool;
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_ContainGlobalTypeVar&quot;</span>)]
+    </span><span class="kw">fn </span>module_contains_global_type_var(module: IRModule, name: TVMString) -&gt; bool;
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_LookupDef&quot;</span>)]
+    </span><span class="kw">fn </span>module_lookup_def(module: IRModule, global: GlobalTypeVar) -&gt; TypeData;
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_LookupDef_str&quot;</span>)]
+    </span><span class="kw">fn </span>module_lookup_def_str(module: IRModule, global: TVMString) -&gt; TypeData;
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_LookupTag&quot;</span>)]
+    </span><span class="kw">fn </span>module_lookup_tag(module: IRModule, tag: i32) -&gt; relay::Constructor;
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_FromExpr&quot;</span>)]
+    </span><span class="kw">fn </span>module_from_expr(expr: relay::Expr, funcs: Map&lt;GlobalVar, BaseFunc&gt;, types: Map&lt;GlobalTypeVar, TypeData&gt;) -&gt; IRModule;
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_Import&quot;</span>)]
+    </span><span class="kw">fn </span>module_import(module: IRModule, path: TVMString);
+    <span class="attr">#[name(<span class="string">&quot;ir.Module_ImportFromStd&quot;</span>)]
+    </span><span class="kw">fn </span>module_import_from_std(module: IRModule, path: TVMString);
+}
+
+<span class="comment">// Note: we don&#39;t expose update here as update is going to be removed.
+
+</span><span class="kw">impl </span>IRModule {
+    <span class="kw">pub fn </span>new&lt;<span class="lifetime">&#39;a</span>, F, T, A&gt;(funcs: F, types: T, attrs: A) -&gt; <span class="prelude-ty">Result</span>&lt;IRModule&gt;
+    <span class="kw">where
+        </span>F: IntoIterator&lt;Item = (<span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>GlobalVar, <span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>BaseFunc)&gt;,
+        T: IntoIterator&lt;Item = (<span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>GlobalTypeVar, <span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>TypeData)&gt;,
+        A: IntoIterator&lt;Item = (<span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>TVMString, <span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>ObjectRef)&gt;,
+    {
+        module_new(
+            Map::from_iter(funcs),
+            Map::from_iter(types),
+            Map::from_iter(attrs),
+        )
+    }
+
+    <span class="kw">pub fn </span>empty() -&gt; <span class="prelude-ty">Result</span>&lt;IRModule&gt; {
+        <span class="kw">let </span>funcs = HashMap::&lt;GlobalVar, BaseFunc&gt;::new();
+        <span class="kw">let </span>types = HashMap::&lt;GlobalTypeVar, TypeData&gt;::new();
+        <span class="kw">let </span>attrs = HashMap::&lt;TVMString, ObjectRef&gt;::new();
+        IRModule::new(funcs.iter(), types.iter(), attrs.iter())
+    }
+
+    <span class="kw">pub fn </span>parse&lt;N, S&gt;(file_name: N, source: S) -&gt; <span class="prelude-ty">Result</span>&lt;IRModule&gt;
+    <span class="kw">where
+        </span>N: Into&lt;TVMString&gt;,
+        S: Into&lt;TVMString&gt;,
+    {
+        parse_module(file_name.into(), source.into())
+    }
+
+    <span class="kw">pub fn </span>parse_file&lt;P: <span class="lifetime">&#39;static </span>+ AsRef&lt;Path&gt;&gt;(
+        file_path: P,
+    ) -&gt; std::result::Result&lt;IRModule, Error&gt; {
+        <span class="kw">let </span>file_path = file_path.as_ref();
+        <span class="kw">let </span>file_path_as_str = file_path.to_str().unwrap().to_string();
+        <span class="kw">let </span>source = std::fs::read_to_string(file_path)<span class="question-mark">?</span>;
+        <span class="kw">let </span>module = IRModule::parse(file_path_as_str, source)<span class="question-mark">?</span>;
+        <span class="prelude-val">Ok</span>(module)
+    }
+
+    <span class="kw">pub fn </span>add&lt;F&gt;(<span class="kw-2">&amp;mut </span><span class="self">self</span>, var: GlobalVar, func: F) -&gt; <span class="prelude-ty">Result</span>&lt;IRModule&gt;
+    <span class="comment">// todo(@jroesch): can we do better here? why doesn&#39;t BaseFunc::Object work?
+    </span><span class="kw">where
+        </span>F: IsObjectRef,
+        F::Object: AsRef&lt;&lt;BaseFunc <span class="kw">as </span>IsObjectRef&gt;::Object&gt;,
+    {
+        module_add(<span class="self">self</span>.clone(), var, func.upcast(), <span class="bool-val">true</span>)
+    }
+
+    <span class="kw">pub fn </span>add_def(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>,
+        type_name: GlobalTypeVar,
+        type_data: TypeData,
+        update: bool,
+    ) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        module_add_def(<span class="self">self</span>.clone(), type_name, type_data, update)
+    }
+
+    <span class="kw">pub fn </span>get_global_var&lt;S&gt;(<span class="kw-2">&amp;</span><span class="self">self</span>, name: S) -&gt; <span class="prelude-ty">Result</span>&lt;GlobalVar&gt;
+    <span class="kw">where
+        </span>S: Into&lt;TVMString&gt;,
+    {
+        module_get_global_var(<span class="self">self</span>.clone(), name.into())
+    }
+
+    <span class="kw">pub fn </span>get_global_vars(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Array&lt;GlobalVar&gt;&gt; {
+        module_get_global_vars(<span class="self">self</span>.clone())
+    }
+
+    <span class="kw">pub fn </span>lookup(<span class="kw-2">&amp;</span><span class="self">self</span>, var: GlobalVar) -&gt; <span class="prelude-ty">Result</span>&lt;BaseFunc&gt; {
+        module_lookup(<span class="self">self</span>.clone(), var)
+    }
+
+    <span class="kw">pub fn </span>lookup_str&lt;S&gt;(<span class="kw-2">&amp;</span><span class="self">self</span>, name: S) -&gt; <span class="prelude-ty">Result</span>&lt;BaseFunc&gt;
+    <span class="kw">where
+        </span>S: Into&lt;TVMString&gt;,
+    {
+        module_lookup_str(<span class="self">self</span>.clone(), name.into())
+    }
+
+    <span class="kw">pub fn </span>get_global_type_vars(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;Array&lt;GlobalTypeVar&gt;&gt; {
+        module_get_global_type_vars(<span class="self">self</span>.clone())
+    }
+
+    <span class="kw">pub fn </span>contains_global_var&lt;S: Into&lt;TVMString&gt;&gt;(<span class="kw-2">&amp;</span><span class="self">self</span>, name: S) -&gt; <span class="prelude-ty">Result</span>&lt;bool&gt; {
+        module_contains_global_var(<span class="self">self</span>.clone(), name.into())
+    }
+
+    <span class="kw">pub fn </span>contains_global_type_var&lt;S: Into&lt;TVMString&gt;&gt;(<span class="kw-2">&amp;</span><span class="self">self</span>, name: S) -&gt; <span class="prelude-ty">Result</span>&lt;bool&gt; {
+        module_contains_global_type_var(<span class="self">self</span>.clone(), name.into())
+    }
+
+    <span class="kw">pub fn </span>lookup_def(<span class="kw-2">&amp;</span><span class="self">self</span>, global: GlobalTypeVar) -&gt; <span class="prelude-ty">Result</span>&lt;TypeData&gt; {
+        module_lookup_def(<span class="self">self</span>.clone(), global)
+    }
+
+    <span class="kw">pub fn </span>lookup_def_str&lt;S&gt;(<span class="kw-2">&amp;</span><span class="self">self</span>, global: S) -&gt; <span class="prelude-ty">Result</span>&lt;TypeData&gt;
+    <span class="kw">where
+        </span>S: Into&lt;TVMString&gt;,
+    {
+        module_lookup_def_str(<span class="self">self</span>.clone(), global.into())
+    }
+
+    <span class="kw">pub fn </span>lookup_tag(<span class="kw-2">&amp;</span><span class="self">self</span>, tag: i32) -&gt; <span class="prelude-ty">Result</span>&lt;relay::Constructor&gt; {
+        module_lookup_tag(<span class="self">self</span>.clone(), tag)
+    }
+
+    <span class="kw">pub fn </span>from_expr&lt;E&gt;(expr: E) -&gt; <span class="prelude-ty">Result</span>&lt;IRModule&gt;
+    <span class="kw">where
+        </span>E: IsObjectRef,
+        E::Object: AsRef&lt;&lt;relay::Expr <span class="kw">as </span>IsObjectRef&gt;::Object&gt;,
+    {
+        <span class="self">Self</span>::from_expr_with_items(expr, HashMap::new(), HashMap::new())
+    }
+
+    <span class="kw">pub fn </span>from_expr_with_items&lt;<span class="lifetime">&#39;a</span>, E, F, T&gt;(expr: E, funcs: F, types: T) -&gt; <span class="prelude-ty">Result</span>&lt;IRModule&gt;
+    <span class="kw">where
+        </span>F: IntoIterator&lt;Item = (<span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>GlobalVar, <span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>BaseFunc)&gt;,
+        T: IntoIterator&lt;Item = (<span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>GlobalTypeVar, <span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>TypeData)&gt;,
+        E: IsObjectRef,
+        E::Object: AsRef&lt;&lt;relay::Expr <span class="kw">as </span>IsObjectRef&gt;::Object&gt;,
+    {
+        module_from_expr(expr.upcast(), Map::from_iter(funcs), Map::from_iter(types))
+    }
+
+    <span class="kw">pub fn </span>import&lt;S: Into&lt;TVMString&gt;&gt;(<span class="kw-2">&amp;mut </span><span class="self">self</span>, path: S) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        module_import(<span class="self">self</span>.clone(), path.into())
+    }
+
+    <span class="kw">pub fn </span>import_from_std&lt;S: Into&lt;TVMString&gt;&gt;(<span class="kw-2">&amp;mut </span><span class="self">self</span>, path: S) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        module_import_from_std(<span class="self">self</span>.clone(), path.into())
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use </span><span class="kw">super</span>::relay::<span class="kw-2">*</span>;
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+    <span class="kw">use </span><span class="kw">crate</span>::ir::span::Span;
+    <span class="kw">use </span><span class="kw">crate</span>::ir::ty::{GlobalTypeVar, TypeData, TypeKind};
+    <span class="kw">use </span>tvm_rt::IsObjectRef;
+
+    <span class="kw">fn </span>add_dummy_functions(names: Vec&lt;<span class="kw-2">&amp;</span>str&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;IRModule&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>module = IRModule::empty()<span class="question-mark">?</span>;
+        <span class="kw">let </span>x = Var::static_tensor(<span class="string">&quot;x&quot;</span>.into(), <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">1</span>], DataType::float32());
+        <span class="kw">let </span>params = <span class="macro">vec!</span>[x.clone()];
+        <span class="kw">let </span>func = relay::Function::simple(params, x);
+
+        <span class="kw">for </span>name <span class="kw">in </span>names {
+            <span class="kw">let </span>gv = GlobalVar::new(name.into(), Span::null());
+            module = module.add(gv, func.clone())<span class="question-mark">?</span>;
+        }
+
+        <span class="prelude-val">Ok</span>(module)
+    }
+
+    <span class="kw">fn </span>add_dummy_types(names: Vec&lt;<span class="kw-2">&amp;</span>str&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;IRModule&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>module = IRModule::empty()<span class="question-mark">?</span>;
+
+        <span class="kw">for </span>name <span class="kw">in </span>names {
+            <span class="kw">let </span>name: String = name.into();
+            <span class="kw">let </span>name = GlobalTypeVar::new(name, TypeKind::Type, Span::null());
+            <span class="kw">let </span>type_data = TypeData::new(name.clone(), <span class="macro">vec!</span>[], <span class="macro">vec!</span>[], Span::null());
+            module.add_def(name, type_data, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+        }
+
+        <span class="prelude-val">Ok</span>(module)
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_module_add() -&gt; anyhow::Result&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>module = IRModule::empty()<span class="question-mark">?</span>;
+        <span class="kw">let </span>x = Var::static_tensor(<span class="string">&quot;x&quot;</span>.into(), <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">1</span>], DataType::float32());
+        <span class="kw">let </span>params = <span class="macro">vec!</span>[x.clone()];
+        <span class="kw">let </span>func = relay::Function::simple(params, x);
+        <span class="kw">let </span>module = module.add(GlobalVar::new(<span class="string">&quot;foo&quot;</span>.into(), Span::null()), func)<span class="question-mark">?</span>;
+        <span class="kw">let </span>lfunc = module.lookup_str(<span class="string">&quot;foo&quot;</span>)<span class="question-mark">?</span>;
+        <span class="kw">let </span>lfunc = lfunc.downcast::&lt;relay::Function&gt;()<span class="question-mark">?</span>;
+        <span class="macro">assert_eq!</span>(lfunc.params.len(), <span class="number">1</span>);
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_module_add_def() -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>module = IRModule::empty()<span class="question-mark">?</span>;
+        <span class="kw">let </span>name = GlobalTypeVar::new(<span class="string">&quot;my_type&quot;</span>, TypeKind::Type, Span::null());
+        <span class="kw">let </span>type_data = TypeData::new(name.clone(), <span class="macro">vec!</span>[], <span class="macro">vec!</span>[], Span::null());
+        module.add_def(name.clone(), type_data, <span class="bool-val">true</span>)<span class="question-mark">?</span>;
+        <span class="kw">let </span>_by_gtv = module.lookup_def(name)<span class="question-mark">?</span>;
+        <span class="kw">let </span>_by_gv = module.lookup_def_str(<span class="string">&quot;my_type&quot;</span>)<span class="question-mark">?</span>;
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_get_global_var() -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>module = IRModule::empty()<span class="question-mark">?</span>;
+        <span class="kw">let </span>x = Var::static_tensor(<span class="string">&quot;x&quot;</span>.into(), <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">1</span>], DataType::float32());
+        <span class="kw">let </span>params = <span class="macro">vec!</span>[x.clone()];
+        <span class="kw">let </span>func = relay::Function::simple(params, x);
+        <span class="kw">let </span>gv_foo = GlobalVar::new(<span class="string">&quot;foo&quot;</span>.into(), Span::null());
+        <span class="kw">let </span>module = module.add(gv_foo.clone(), func)<span class="question-mark">?</span>;
+        <span class="kw">let </span>gv = module.get_global_var(<span class="string">&quot;foo&quot;</span>)<span class="question-mark">?</span>;
+        <span class="macro">assert_eq!</span>(gv_foo, gv);
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_get_global_vars() -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>names = <span class="macro">vec!</span>[<span class="string">&quot;foo&quot;</span>, <span class="string">&quot;bar&quot;</span>, <span class="string">&quot;baz&quot;</span>];
+        <span class="kw">let </span>module = add_dummy_functions(names.clone())<span class="question-mark">?</span>;
+        <span class="kw">let </span>gvars: Vec&lt;String&gt; = module
+            .get_global_vars()<span class="question-mark">?
+            </span>.into_iter()
+            .map(|gv| gv.name_hint.as_str().unwrap().to_string())
+            .collect();
+
+        <span class="kw">for </span>name <span class="kw">in </span>names {
+            <span class="macro">assert!</span>(gvars.contains(<span class="kw-2">&amp;</span>name.to_string()));
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_get_global_type_vars() -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>names = <span class="macro">vec!</span>[<span class="string">&quot;foo&quot;</span>, <span class="string">&quot;bar&quot;</span>, <span class="string">&quot;baz&quot;</span>];
+        <span class="kw">let </span>module = add_dummy_types(names.clone())<span class="question-mark">?</span>;
+        <span class="kw">let </span>gvars: Vec&lt;String&gt; = module
+            .get_global_type_vars()<span class="question-mark">?
+            </span>.into_iter()
+            .map(|gv| gv.name_hint.as_str().unwrap().to_string())
+            .collect();
+
+        <span class="kw">for </span>name <span class="kw">in </span>names {
+            <span class="macro">assert!</span>(gvars.contains(<span class="kw-2">&amp;</span>name.to_string()));
+        }
+
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_contains_global_var() -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>module = add_dummy_functions(<span class="macro">vec!</span>[<span class="string">&quot;foo&quot;</span>])<span class="question-mark">?</span>;
+        <span class="macro">assert!</span>(module.contains_global_var(<span class="string">&quot;foo&quot;</span>)<span class="question-mark">?</span>);
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_contains_global_type_var() -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>module = add_dummy_types(<span class="macro">vec!</span>[<span class="string">&quot;foo&quot;</span>])<span class="question-mark">?</span>;
+        <span class="macro">assert!</span>(module.contains_global_type_var(<span class="string">&quot;foo&quot;</span>)<span class="question-mark">?</span>);
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="comment">// TODO(@jroesch): not really sure about this API at all.
+    // pub fn lookup_tag(&amp;self, tag: i32) -&gt; Result&lt;relay::Constructor&gt; {
+    //     module_lookup_tag(self.clone(), tag)
+    // }
+
+    </span><span class="attr">#[test]
+    </span><span class="kw">fn </span>test_from_expr() -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>x = Var::static_tensor(<span class="string">&quot;x&quot;</span>.into(), <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">1</span>], DataType::float32());
+        <span class="kw">let </span>params = <span class="macro">vec!</span>[x.clone()];
+        <span class="kw">let </span>func = relay::Function::simple(params, x);
+        <span class="kw">let </span>module = IRModule::from_expr(func.clone())<span class="question-mark">?</span>;
+        <span class="kw">let </span>main_fn = module.lookup_str(<span class="string">&quot;main&quot;</span>)<span class="question-mark">?</span>;
+        <span class="kw">let </span>main_fn = main_fn.downcast::&lt;relay::Function&gt;()<span class="question-mark">?</span>;
+        <span class="macro">assert_eq!</span>(main_fn, func);
+        <span class="prelude-val">Ok</span>(())
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_import() -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span><span class="kw-2">mut </span>std_path: String = <span class="macro">env!</span>(<span class="string">&quot;CARGO_MANIFEST_DIR&quot;</span>).into();
+        std_path += <span class="string">&quot;/../../python/tvm/relay/std/prelude.rly&quot;</span>;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>mod1 = IRModule::empty()<span class="question-mark">?</span>;
+        mod1.import(std_path.clone())<span class="question-mark">?</span>;
+        mod1.lookup_str(<span class="string">&quot;map&quot;</span>)<span class="question-mark">?</span>;
+
+        <span class="comment">// TODO(@jroesch): this requires another patch of mine to enable.
+
+        // if cfg!(feature = &quot;python&quot;) {
+        //     crate::python::load().unwrap();
+        //     let mut mod2 = IRModule::empty()?;
+        //     mod2.import_from_std(&quot;prelude.rly&quot;)?;
+        //     mod2.lookup_str(&quot;map&quot;)?;
+        // }
+
+        </span><span class="prelude-val">Ok</span>(())
+    }
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="tvm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/ir/op.rs.html b/docs/api/rust/src/tvm/ir/op.rs.html
new file mode 100644
index 0000000000..2f25d0c732
--- /dev/null
+++ b/docs/api/rust/src/tvm/ir/op.rs.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/ir/op.rs`."><title>op.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../st [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span><span class="kw">crate</span>::ir::relay::ExprNode;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::array::Array;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::ObjectRef;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::String <span class="kw">as </span>TString;
+<span class="kw">use </span>tvm_macros::Object;
+
+<span class="kw">type </span>FuncType = ObjectRef;
+<span class="kw">type </span>AttrFieldInfo = ObjectRef;
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;Op&quot;</span>]
+#[type_key = <span class="string">&quot;Op&quot;</span>]
+</span><span class="kw">pub struct </span>OpNode {
+    <span class="kw">pub </span>base: ExprNode,
+    <span class="kw">pub </span>name: TString,
+    <span class="kw">pub </span>op_type: FuncType,
+    <span class="kw">pub </span>description: TString,
+    <span class="kw">pub </span>arguments: Array&lt;AttrFieldInfo&gt;,
+    <span class="kw">pub </span>attrs_type_key: TString,
+    <span class="kw">pub </span>attrs_type_index: u32,
+    <span class="kw">pub </span>num_inputs: i32,
+    <span class="kw">pub </span>support_level: i32,
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="tvm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/ir/relay/attrs/mod.rs.html b/docs/api/rust/src/tvm/ir/relay/attrs/mod.rs.html
new file mode 100644
index 0000000000..16768c7a5d
--- /dev/null
+++ b/docs/api/rust/src/tvm/ir/relay/attrs/mod.rs.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/ir/relay/attrs/mod.rs`."><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorig [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">pub mod </span>nn;
+<span class="kw">pub mod </span>reduce;
+<span class="kw">pub mod </span>transform;
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../../../" data-static-root-path="../../../../../static.files/" data-current-crate="tvm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/api/rust/src/tvm/ir/relay/attrs/nn.rs.html b/docs/api/rust/src/tvm/ir/relay/attrs/nn.rs.html
new file mode 100644
index 0000000000..1a9cb28d23
--- /dev/null
+++ b/docs/api/rust/src/tvm/ir/relay/attrs/nn.rs.html
@@ -0,0 +1,518 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `tvm/src/ir/relay/attrs/nn.rs`."><title>nn.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+</pre><pre class="rust"><code><span class="comment">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</span><span class="kw">use </span><span class="kw">crate</span>::ir::attrs::BaseAttrsNode;
+<span class="kw">use </span><span class="kw">crate</span>::ir::PrimExpr;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::array::Array;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::DataType;
+<span class="kw">use </span><span class="kw">crate</span>::runtime::String <span class="kw">as </span>TString;
+<span class="kw">use </span>tvm_macros::Object;
+
+<span class="kw">type </span>IndexExpr = PrimExpr;
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;PadAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.PadAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>PadAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>pad_width: Array&lt;Array&lt;IndexExpr&gt;&gt;,
+    <span class="kw">pub </span>pad_mode: TString,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;Conv1DAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.Conv1DAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>Conv1DAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>strides: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>padding: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>dilation: Array&lt;IndexExpr&gt;,
+    <span class="comment">// TODO(@gussmith23) groups is &quot;int&quot;, what should it be here?
+    </span><span class="kw">pub </span>groups: i32,
+    <span class="kw">pub </span>channels: IndexExpr,
+    <span class="kw">pub </span>kernel_size: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>data_layout: TString,
+    <span class="kw">pub </span>kernel_layout: TString,
+    <span class="kw">pub </span>out_layout: TString,
+    <span class="kw">pub </span>out_dtype: DataType,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;Conv2DAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.Conv2DAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>Conv2DAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>strides: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>padding: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>dilation: Array&lt;IndexExpr&gt;,
+    <span class="comment">// TODO(@gussmith23) groups is &quot;int&quot;, what should it be here?
+    </span><span class="kw">pub </span>groups: i32,
+    <span class="kw">pub </span>channels: IndexExpr,
+    <span class="kw">pub </span>kernel_size: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>data_layout: TString,
+    <span class="kw">pub </span>kernel_layout: TString,
+    <span class="kw">pub </span>out_layout: TString,
+    <span class="kw">pub </span>auto_scheduler_rewritten_layout: TString,
+    <span class="kw">pub </span>out_dtype: DataType,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;Conv3DAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.Conv3DAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>Conv3DAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>strides: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>padding: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>dilation: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>groups: i32,
+    <span class="kw">pub </span>channels: IndexExpr,
+    <span class="kw">pub </span>kernel_size: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>data_layout: TString,
+    <span class="kw">pub </span>kernel_layout: TString,
+    <span class="kw">pub </span>out_layout: TString,
+    <span class="kw">pub </span>auto_scheduler_rewritten_layout: TString,
+    <span class="kw">pub </span>out_dtype: DataType,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;Conv3DTransposeAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.Conv3DTransposeAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>Conv3DTransposeAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>channels: IndexExpr,
+    <span class="kw">pub </span>kernel_size: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>strides: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>padding: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>output_padding: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>dilation: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>groups: i32,
+    <span class="kw">pub </span>data_layout: TString,
+    <span class="kw">pub </span>kernel_layout: TString,
+    <span class="kw">pub </span>out_layout: TString,
+    <span class="kw">pub </span>out_dtype: DataType,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;BiasAddAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.BiasAddAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>BiasAddAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>axis: i32,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;MatmulAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.MatmulAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>MatmulAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>units: IndexExpr,
+    <span class="kw">pub </span>out_dtype: DataType,
+    <span class="kw">pub </span>transpose_a: bool,
+    <span class="kw">pub </span>transpose_b: bool,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;DenseAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.DenseAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>DenseAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>units: IndexExpr,
+    <span class="kw">pub </span>auto_scheduler_rewritten_layout: TString,
+    <span class="kw">pub </span>out_dtype: DataType,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;GlobalPool2DAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.GlobalPool2DAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>GlobalPool2DAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>layout: TString,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;MaxPool2DAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.MaxPool2DAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>MaxPool2DAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>pool_size: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>strides: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>padding: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>dilation: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>layout: TString,
+    <span class="kw">pub </span>ceil_mode: bool,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;SoftmaxAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.SoftmaxAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>SoftmaxAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>axis: i32,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;BatchNormAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.BatchNormAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>BatchNormAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>axis: i32,
+    <span class="kw">pub </span>epsilon: f64,
+    <span class="kw">pub </span>center: bool,
+    <span class="kw">pub </span>scale: bool,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;LeakyReluAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.LeakyReluAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>LeakyReluAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>alpha: f64,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;AvgPool2DAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.AvgPool2DAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>AvgPool2DAttrsNode {
+    <span class="kw">pub </span>base: BaseAttrsNode,
+    <span class="kw">pub </span>pool_size: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>strides: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>padding: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>dilation: Array&lt;IndexExpr&gt;,
+    <span class="kw">pub </span>layout: TString,
+    <span class="kw">pub </span>ceil_mode: bool,
+    <span class="kw">pub </span>count_include_pad: bool,
+}
+
+<span class="attr">#[repr(C)]
+#[derive(Object, Debug)]
+#[ref_name = <span class="string">&quot;UpSamplingAttrs&quot;</span>]
+#[type_key = <span class="string">&quot;relay.attrs.UpSamplingAttrs&quot;</span>]
+</span><span class="kw">pub struct </span>UpSamplingAttrsNode {
... 62459 lines suppressed ...