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 2022/05/04 23:02:58 UTC

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

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 32e804202 deploying docs (apache/tvm@521b80af217a60bf4be3febd5a1e081eb4f76b93)
32e804202 is described below

commit 32e804202d7c11a5ba6c7ebde090d6891327ffc0
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Wed May 4 23:02:52 2022 +0000

    deploying docs (apache/tvm@521b80af217a60bf4be3febd5a1e081eb4f76b93)
---
 .../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_android.rst.txt  |    2 +-
 .../deploy_models/deploy_model_on_rasp.rst.txt     |    2 +-
 .../deploy_object_detection_pytorch.rst.txt        |    6 +-
 .../deploy_models/deploy_prequantized.rst.txt      |    6 +-
 .../deploy_prequantized_tflite.rst.txt             |    4 +-
 .../how_to/deploy_models/deploy_quantized.rst.txt  |    4 +-
 .../deploy_models/deploy_ssd_gluoncv.rst.txt       |    4 +-
 .../deploy_models/sg_execution_times.rst.txt       |   18 +-
 .../extend_tvm/bring_your_own_datatypes.rst.txt    |    4 +-
 .../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                     |   16 +-
 .../tune_conv2d_layer_cuda.rst.txt                 |  785 ++-
 .../tune_network_cuda.rst.txt                      |    2 +-
 .../tune_network_x86.rst.txt                       |    4 +-
 .../tune_sparse_x86.rst.txt                        |  131 +-
 .../tune_with_autotvm/sg_execution_times.rst.txt   |   12 +-
 .../tune_with_autotvm/tune_conv2d_cuda.rst.txt     |   34 +-
 .../tune_with_autotvm/tune_relay_cuda.rst.txt      |    2 +-
 .../work_with_microtvm/micro_autotune.rst.txt      |   16 +-
 .../work_with_microtvm/sg_execution_times.rst.txt  |   12 +-
 .../work_with_relay/sg_execution_times.rst.txt     |    8 +-
 .../work_with_schedules/sg_execution_times.rst.txt |   18 +-
 .../how_to/work_with_schedules/tensorize.rst.txt   |    2 +-
 .../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  |    6 +-
 .../topic/vta/tutorials/sg_execution_times.rst.txt |    6 +-
 .../tutorial/auto_scheduler_matmul_x86.rst.txt     |    2 +-
 docs/_sources/tutorial/autotvm_relay_x86.rst.txt   |   60 +-
 .../tutorial/cross_compilation_and_rpc.rst.txt     |    2 +-
 docs/_sources/tutorial/intro_topi.rst.txt          |    4 +-
 docs/_sources/tutorial/relay_quick_start.rst.txt   |    2 +-
 docs/_sources/tutorial/sg_execution_times.rst.txt  |   26 +-
 .../tutorial/tensor_expr_get_started.rst.txt       |   47 +-
 docs/commit_hash                                   |    2 +-
 docs/genindex.html                                 |   10 +-
 docs/how_to/compile_models/from_mxnet.html         |    2 +-
 docs/how_to/compile_models/from_oneflow.html       |  158 +-
 docs/how_to/compile_models/from_paddle.html        |    2 +-
 docs/how_to/compile_models/from_pytorch.html       |    6 +-
 docs/how_to/compile_models/from_tensorflow.html    |    2 +-
 docs/how_to/compile_models/sg_execution_times.html |   22 +-
 .../deploy_models/deploy_model_on_android.html     |    2 +-
 .../how_to/deploy_models/deploy_model_on_rasp.html |    2 +-
 .../deploy_object_detection_pytorch.html           |   68 +-
 docs/how_to/deploy_models/deploy_prequantized.html |    8 +-
 .../deploy_models/deploy_prequantized_tflite.html  |    4 +-
 docs/how_to/deploy_models/deploy_quantized.html    |    4 +-
 docs/how_to/deploy_models/deploy_ssd_gluoncv.html  |   36 +-
 docs/how_to/deploy_models/sg_execution_times.html  |   18 +-
 .../extend_tvm/bring_your_own_datatypes.html       |    4 +-
 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                        |   14 +-
 .../tune_conv2d_layer_cuda.html                    |  785 ++-
 .../tune_with_autoscheduler/tune_network_cuda.html |    2 +-
 .../tune_with_autoscheduler/tune_network_x86.html  |    4 +-
 .../tune_with_autoscheduler/tune_sparse_x86.html   |  131 +-
 .../tune_with_autotvm/sg_execution_times.html      |   12 +-
 .../how_to/tune_with_autotvm/tune_conv2d_cuda.html |   34 +-
 docs/how_to/tune_with_autotvm/tune_relay_cuda.html |    2 +-
 docs/how_to/work_with_microtvm/micro_autotune.html |   16 +-
 .../work_with_microtvm/sg_execution_times.html     |   12 +-
 .../how_to/work_with_relay/sg_execution_times.html |    8 +-
 .../work_with_schedules/sg_execution_times.html    |   18 +-
 docs/how_to/work_with_schedules/tensorize.html     |    2 +-
 docs/objects.inv                                   |  Bin 22165 -> 22186 bytes
 docs/reference/api/doxygen/annotated.html          |    2 +-
 docs/reference/api/doxygen/classes.html            |   20 +-
 .../classtvm_1_1CompilationConfig-members.html     |    2 +-
 .../api/doxygen/classtvm_1_1CompilationConfig.html |   22 +-
 .../classtvm_1_1CompilationConfigNode-members.html |   16 +-
 .../doxygen/classtvm_1_1CompilationConfigNode.html |   83 +-
 ...sstvm_1_1CompilationConfigNode__coll__graph.svg |  346 +-
 ...vm_1_1CompilationConfigNode__inherit__graph.svg |   22 +-
 .../api/doxygen/classtvm_1_1Target-members.html    |    2 +
 docs/reference/api/doxygen/classtvm_1_1Target.html |   56 +-
 .../doxygen/classtvm_1_1Target__coll__graph.svg    |  106 +-
 .../doxygen/classtvm_1_1Target__inherit__graph.svg |   76 +-
 .../api/doxygen/classtvm_1_1VirtualDeviceNode.html |    2 +-
 .../classtvm_1_1VirtualDeviceNode__coll__graph.svg |   26 +-
 ...o__scheduler_1_1SearchTaskNode__coll__graph.svg |   26 +-
 ...__schedule_1_1BuilderInputNode__coll__graph.svg |   26 +-
 ..._schedule_1_1ExtractedTaskNode__coll__graph.svg |   26 +-
 ...__schedule_1_1TuningRecordNode__coll__graph.svg |   26 +-
 .../doxygen/classtvm_1_1runtime_1_1ObjectRef.html  |    2 +-
 ...asstvm_1_1runtime_1_1ObjectRef__coll__graph.svg |   12 +-
 .../api/doxygen/compilation__config_8h.html        |    6 +-
 .../api/doxygen/compilation__config_8h_source.html |   21 +-
 .../api/doxygen/diagnostic_8h__dep__incl.svg       |    2 +-
 .../dir_5da96592f3a7c442b838b075c58254c2.html      |    2 +-
 docs/reference/api/doxygen/error_8h__dep__incl.svg |    2 +-
 docs/reference/api/doxygen/files.html              |    2 +-
 docs/reference/api/doxygen/functions_c.html        |    2 +-
 docs/reference/api/doxygen/functions_f.html        |   11 +-
 docs/reference/api/doxygen/functions_func_c.html   |    2 +-
 docs/reference/api/doxygen/functions_func_f.html   |    9 +-
 docs/reference/api/doxygen/functions_func_i.html   |   16 +-
 docs/reference/api/doxygen/functions_i.html        |   14 +-
 docs/reference/api/doxygen/functions_l.html        |    5 +-
 docs/reference/api/doxygen/functions_m.html        |    2 +-
 docs/reference/api/doxygen/functions_s.html        |    2 +-
 docs/reference/api/doxygen/functions_t.html        |    6 +-
 docs/reference/api/doxygen/functions_vars_l.html   |    3 -
 docs/reference/api/doxygen/hierarchy.html          |  681 ++-
 docs/reference/api/doxygen/inherit_graph_10.svg    |   16 +-
 docs/reference/api/doxygen/inherit_graph_107.svg   |   32 +-
 docs/reference/api/doxygen/inherit_graph_116.svg   | 5066 ++++++++++----------
 docs/reference/api/doxygen/inherit_graph_185.svg   |    8 +-
 docs/reference/api/doxygen/inherit_graph_199.svg   |   16 +-
 docs/reference/api/doxygen/inherit_graph_200.svg   |   16 +-
 docs/reference/api/doxygen/inherit_graph_39.svg    |   16 +-
 docs/reference/api/doxygen/inherit_graph_43.svg    |    8 +-
 docs/reference/api/doxygen/inherits.html           |    2 +-
 .../api/doxygen/instrument_8h__dep__incl.svg       |    2 +-
 .../api/doxygen/ir_2transform_8h__dep__incl.svg    |    2 +-
 .../api/doxygen/namespacemembers_func_c.html       |    2 +-
 docs/reference/api/doxygen/namespacemembers_k.html |    5 +-
 docs/reference/api/doxygen/namespacemembers_t.html |    3 -
 .../api/doxygen/namespacemembers_type.html         |    3 -
 .../api/doxygen/namespacemembers_vars.html         |    3 +
 docs/reference/api/doxygen/namespacetvm.html       |  502 +-
 .../api/doxygen/namespacetvm_1_1attr.html          |   25 +
 .../api/doxygen/relay_2qnn_2transform_8h__incl.svg |    2 +-
 .../api/doxygen/relay_2transform_8h__incl.svg      |    2 +-
 .../api/doxygen/relay_2transform_8h_source.html    |    4 +-
 docs/reference/api/doxygen/search/all_13.js        |    8 +-
 docs/reference/api/doxygen/search/all_14.js        |   10 +-
 docs/reference/api/doxygen/search/all_15.js        |   13 +-
 docs/reference/api/doxygen/search/all_16.js        |    2 +-
 docs/reference/api/doxygen/search/all_18.js        |    2 +-
 docs/reference/api/doxygen/search/all_4.js         |    4 +-
 docs/reference/api/doxygen/search/all_7.js         |    1 +
 docs/reference/api/doxygen/search/all_a.js         |    2 +
 docs/reference/api/doxygen/search/all_c.js         |    1 +
 docs/reference/api/doxygen/search/all_d.js         |    1 -
 docs/reference/api/doxygen/search/all_e.js         |    5 +-
 docs/reference/api/doxygen/search/classes_10.js    |    4 +-
 docs/reference/api/doxygen/search/classes_11.js    |    4 +-
 docs/reference/api/doxygen/search/classes_a.js     |    1 -
 docs/reference/api/doxygen/search/classes_f.js     |    2 +-
 docs/reference/api/doxygen/search/functions_12.js  |    4 +-
 docs/reference/api/doxygen/search/functions_13.js  |    4 +-
 docs/reference/api/doxygen/search/functions_14.js  |    4 +-
 docs/reference/api/doxygen/search/functions_15.js  |    2 +-
 docs/reference/api/doxygen/search/functions_3.js   |    4 +-
 docs/reference/api/doxygen/search/functions_6.js   |    1 +
 docs/reference/api/doxygen/search/functions_9.js   |    2 +
 docs/reference/api/doxygen/search/functions_d.js   |    2 +-
 docs/reference/api/doxygen/search/typedefs_e.js    |    1 -
 docs/reference/api/doxygen/search/variables_a.js   |    1 +
 docs/reference/api/doxygen/search/variables_b.js   |    1 -
 docs/reference/api/doxygen/target_8h.html          |    9 -
 .../reference/api/doxygen/target_8h__dep__incl.svg |    2 +-
 docs/reference/api/doxygen/target_8h_source.html   |    2 +-
 docs/reference/api/doxygen/target__kind_8h.html    |   12 +-
 .../api/doxygen/target__kind_8h__dep__incl.svg     |    2 +-
 .../api/doxygen/target__kind_8h_source.html        |    3 +-
 .../api/doxygen/virtual__device_8h__dep__incl.svg  |    2 +-
 docs/reference/api/python/auto_scheduler.html      |    4 +-
 docs/reference/api/python/target.html              |   59 +-
 .../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 +-
 .../api/typedoc/classes/graphexecutor.html         |   16 +-
 docs/reference/api/typedoc/classes/instance.html   |   40 +-
 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 +-
 docs/reference/api/typedoc/classes/scalar.html     |    6 +-
 .../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              |  112 +-
 .../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 |    6 +-
 docs/topic/vta/tutorials/sg_execution_times.html   |    6 +-
 docs/tutorial/auto_scheduler_matmul_x86.html       |    2 +-
 docs/tutorial/autotvm_relay_x86.html               |  168 +-
 docs/tutorial/cross_compilation_and_rpc.html       |    2 +-
 docs/tutorial/intro_topi.html                      |    4 +-
 docs/tutorial/relay_quick_start.html               |    2 +-
 docs/tutorial/sg_execution_times.html              |   26 +-
 docs/tutorial/tensor_expr_get_started.html         |   43 +-
 216 files changed, 5391 insertions(+), 5746 deletions(-)

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 799794fc1..b352b6258 100644
--- a/docs/_sources/how_to/compile_models/from_mxnet.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_mxnet.rst.txt
@@ -98,7 +98,7 @@ In this section, we download a pretrained imagenet model and classify an image.
 
  .. code-block:: none
 
-    Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zip9e7d197c-2789-4b73-bf72-9c01563dd09c from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
+    Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zip7d90167a-60dc-48d1-8911-4b9dd0e1ebc0 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 70cdb4795..e879c7794 100644
--- a/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
@@ -100,7 +100,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]
      0%|          | 16.0k/41.5M [00:00<09:33, 75.8kB/s]
      0%|          | 48.0k/41.5M [00:00<06:02, 120kB/s] 
      0%|          | 96.0k/41.5M [00:00<04:24, 164kB/s]
      0%|          | 168k/41.5M [00:00<03:10, 228kB/s] 
      1%|          | 256k/41.5M [00:01<02:25, 298kB/s]
      1%|          | 328k/41.5M [00:01<02:14, 321kB/s]
      1%|          | 408k/41.5M [00:01<02:07, 339kB/s]
      1%|1         | 488k/41.5M [00:01<02:04, 345kB/s]
      1%|1         | 576k/41.5M [00:01<01:59, 360kB/s]
      2%|1         | 656k/41.5M [00:02<01:58, 362kB/s]
      2%|1         | 744k/41.5M [00:02<01:49, 391kB/s]
      2%|1         | 824k/41.5M [00:02<01:45, 406kB/s]
      2%|2         | 912k/41.5M [00:02<01:42, 416kB/s]
      2%|2         | 0.98M/41.5M [00:02<01:41, 417kB/s]
      3%|2         | 1.05M/41.5M [00:03<01:45, 403kB/s]
      3%|2         | 1.14M/41.5M [00:03<01:45, 399kB/s]
      3%|2         | 1.23M/41.5M [00:03<01:43, 409kB/s]
   
    3%|3         | 1.32M/41.5M [00:03<01:39, 425kB/s]
      3%|3         | 1.41M/41.5M [00:03<01:21, 518kB/s]
      4%|3         | 1.50M/41.5M [00:04<01:17, 542kB/s]
      4%|3         | 1.56M/41.5M [00:04<01:17, 537kB/s]
      4%|3         | 1.62M/41.5M [00:04<01:31, 455kB/s]
      4%|4         | 1.71M/41.5M [00:04<01:20, 518kB/s]
      4%|4         | 1.81M/41.5M [00:04<01:14, 556kB/s]
      5%|4         | 1.88M/41.5M [00:04<01:16, 545kB/s]
      5%|4         | 1.94M/41.5M [00:05<01:31, 455kB/s]
      5%|4         | 2.05M/41.5M [00:05<01:12, 573kB/s]
      5%|5         | 2.17M/41.5M [00:05<01:07, 611kB/s]
      5%|5         | 2.23M/41.5M [00:05<01:11, 576kB/s]
      6%|5         | 2.31M/41.5M [00:05<01:08, 595kB/s]
      6%|5         | 2.45M/41.5M [00:05<00:57, 716kB/s]
      6%|6         | 2.52M/41.5M [00:05<01:08, 601kB/s]
      6%|6         | 2.61M/41.5M [00:06<01:03, 638kB/s]
      7%|6         | 2.76M/41.5M [00:06<00:51, 784kB/s]
      7%|6         | 2.84M/41.5M [00:06<00:57, 7
 11kB/s]
      7%|7         | 2.95M/41.5M [00:06<00:50, 804kB/s]
      7%|7         | 3.11M/41.5M [00:06<00:39, 1.01MB/s]
      8%|7         | 3.22M/41.5M [00:06<00:45, 892kB/s] 
      8%|8         | 3.32M/41.5M [00:06<00:45, 886kB/s]
      8%|8         | 3.52M/41.5M [00:07<00:36, 1.10MB/s]
      9%|8         | 3.62M/41.5M [00:07<00:41, 947kB/s] 
      9%|9         | 3.75M/41.5M [00:07<00:39, 1.01MB/s]
     10%|9         | 3.96M/41.5M [00:07<00:31, 1.25MB/s]
     10%|9         | 4.09M/41.5M [00:07<00:36, 1.07MB/s]
     10%|#         | 4.23M/41.5M [00:07<00:36, 1.08MB/s]
     10%|#         | 4.34M/41.5M [00:07<00:35, 1.09MB/s]
     11%|#         | 4.49M/41.5M [00:07<00:33, 1.15MB/s]
     11%|#1        | 4.61M/41.5M [00:08<00:33, 1.17MB/s]
     12%|#1        | 4.77M/41.5M [00:08<00:31, 1.22MB/s]
     12%|#1        | 4.90M/41.5M [00:08<00:30, 1.24MB/s]
     12%|#2        | 5.08M/41.5M [00:08<00:28, 1.33MB/s]
     13%|#2        | 5.37M/41.5M [00:08<00:21, 1.73MB/s]
     13%|#3        | 5
 .54M/41.5M [00:08<00:24, 1.54MB/s]
     14%|#3        | 5.77M/41.5M [00:08<00:25, 1.45MB/s]
     15%|#4        | 6.09M/41.5M [00:08<00:20, 1.84MB/s]
     16%|#5        | 6.45M/41.5M [00:09<00:17, 2.14MB/s]
     16%|#6        | 6.66M/41.5M [00:09<00:20, 1.81MB/s]
     17%|#6        | 6.88M/41.5M [00:09<00:19, 1.88MB/s]
     18%|#7        | 7.28M/41.5M [00:09<00:15, 2.33MB/s]
     18%|#8        | 7.52M/41.5M [00:09<00:17, 2.00MB/s]
     19%|#8        | 7.77M/41.5M [00:09<00:17, 2.06MB/s]
     19%|#9        | 7.98M/41.5M [00:09<00:16, 2.09MB/s]
     20%|#9        | 8.25M/41.5M [00:10<00:16, 2.18MB/s]
     20%|##        | 8.47M/41.5M [00:10<00:15, 2.21MB/s]
     21%|##1       | 8.77M/41.5M [00:10<00:14, 2.32MB/s]
     22%|##1       | 8.99M/41.5M [00:10<00:14, 2.29MB/s]
     22%|##2       | 9.30M/41.5M [00:10<00:14, 2.41MB/s]
     23%|##2       | 9.54M/41.5M [00:10<00:14, 2.38MB/s]
     24%|##3       | 9.88M/41.5M [00:10<00:12, 2.59MB/s]
     25%|##5       | 10.5M/41.5M [00:10<00:09, 3.3
 8MB/s]
     26%|##5       | 10.8M/41.5M [00:10<00:10, 2.97MB/s]
     27%|##7       | 11.2M/41.5M [00:11<00:10, 3.01MB/s]
     28%|##8       | 11.8M/41.5M [00:11<00:08, 3.64MB/s]
     29%|##9       | 12.1M/41.5M [00:11<00:09, 3.30MB/s]
     30%|###       | 12.5M/41.5M [00:11<00:09, 3.31MB/s]
     31%|###       | 12.8M/41.5M [00:11<00:09, 3.33MB/s]
     32%|###2      | 13.3M/41.5M [00:11<00:08, 3.48MB/s]
     34%|###3      | 14.0M/41.5M [00:11<00:06, 4.39MB/s]
     35%|###4      | 14.4M/41.5M [00:11<00:06, 4.14MB/s]
     36%|###5      | 14.8M/41.5M [00:12<00:06, 4.13MB/s]
     38%|###7      | 15.6M/41.5M [00:12<00:05, 5.09MB/s]
     39%|###8      | 16.1M/41.5M [00:12<00:06, 3.94MB/s]
     40%|###9      | 16.6M/41.5M [00:12<00:06, 4.25MB/s]
     42%|####2     | 17.5M/41.5M [00:12<00:04, 5.32MB/s]
     43%|####3     | 18.0M/41.5M [00:12<00:05, 4.61MB/s]
     45%|####4     | 18.5M/41.5M [00:12<00:05, 4.63MB/s]
     46%|####5     | 19.0M/41.5M [00:12<00:05, 4.66MB/s]
     47%|####7     | 
 19.6M/41.5M [00:13<00:04, 4.85MB/s]
     48%|####8     | 20.0M/41.5M [00:13<00:04, 4.80MB/s]
     50%|####9     | 20.6M/41.5M [00:13<00:04, 5.08MB/s]
     51%|#####     | 21.1M/41.5M [00:13<00:04, 4.98MB/s]
     53%|#####2    | 21.8M/41.5M [00:13<00:03, 5.27MB/s]
     54%|#####3    | 22.3M/41.5M [00:13<00:03, 5.08MB/s]
     55%|#####5    | 23.0M/41.5M [00:13<00:03, 5.47MB/s]
     57%|#####6    | 23.5M/41.5M [00:13<00:03, 5.26MB/s]
     58%|#####8    | 24.2M/41.5M [00:14<00:04, 4.27MB/s]
     62%|######1   | 25.6M/41.5M [00:14<00:02, 5.74MB/s]
     64%|######4   | 26.6M/41.5M [00:14<00:02, 5.45MB/s]
     66%|######6   | 27.5M/41.5M [00:14<00:02, 5.44MB/s]
     69%|######8   | 28.4M/41.5M [00:14<00:02, 6.04MB/s]
     70%|#######   | 29.0M/41.5M [00:14<00:02, 5.69MB/s]
     71%|#######1  | 29.6M/41.5M [00:15<00:03, 3.81MB/s]
     73%|#######2  | 30.2M/41.5M [00:15<00:02, 4.25MB/s]
     74%|#######4  | 30.7M/41.5M [00:15<00:02, 4.33MB/s]
     75%|#######5  | 31.2M/41.5M [00:15<00:02, 4.
 25MB/s]
     76%|#######6  | 31.7M/41.5M [00:15<00:02, 3.52MB/s]
     78%|#######8  | 32.4M/41.5M [00:15<00:02, 3.49MB/s]
     80%|#######9  | 33.1M/41.5M [00:16<00:02, 3.49MB/s]
     82%|########1 | 33.9M/41.5M [00:16<00:02, 3.61MB/s]
     83%|########2 | 34.4M/41.5M [00:16<00:01, 3.87MB/s]
     84%|########3 | 34.8M/41.5M [00:16<00:01, 3.65MB/s]
     85%|########5 | 35.4M/41.5M [00:16<00:01, 3.65MB/s]
     87%|########7 | 36.2M/41.5M [00:17<00:01, 3.95MB/s]
     89%|########9 | 37.0M/41.5M [00:17<00:01, 4.10MB/s]
     91%|######### | 37.6M/41.5M [00:17<00:00, 4.48MB/s]
     92%|#########1| 38.0M/41.5M [00:17<00:00, 4.25MB/s]
     93%|#########3| 38.6M/41.5M [00:17<00:00, 3.90MB/s]
     95%|#########4| 39.2M/41.5M [00:17<00:00, 4.38MB/s]
     96%|#########5| 39.7M/41.5M [00:17<00:00, 4.06MB/s]
     97%|#########6| 40.2M/41.5M [00:18<00:00, 4.14MB/s]
     98%|#########8| 40.9M/41.5M [00:18<00:00, 4.22MB/s]
     99%|#########9| 41.3M/41.5M [00:18<00:00, 3.68MB/s]
    100%|##########|
  41.5M/41.5M [00:18<00:00, 2.37MB/s]
+
      0%|          | 0.00/41.5M [00:00<?, ?B/s]
      0%|          | 16.0k/41.5M [00:00<07:49, 92.7kB/s]
      0%|          | 48.0k/41.5M [00:00<04:56, 147kB/s] 
      0%|          | 96.0k/41.5M [00:00<03:30, 206kB/s]
      0%|          | 200k/41.5M [00:00<01:59, 361kB/s] 
      1%|          | 368k/41.5M [00:00<01:14, 580kB/s]
      2%|1         | 704k/41.5M [00:01<00:41, 1.04MB/s]
      3%|3         | 1.26M/41.5M [00:01<00:23, 1.80MB/s]
      6%|6         | 2.53M/41.5M [00:01<00:11, 3.62MB/s]
     10%|9         | 4.00M/41.5M [00:01<00:07, 5.20MB/s]
     13%|#3        | 5.46M/41.5M [00:01<00:06, 6.25MB/s]
     17%|#6        | 6.93M/41.5M [00:01<00:05, 6.99MB/s]
     20%|##        | 8.40M/41.5M [00:02<00:04, 7.50MB/s]
     24%|##3       | 9.87M/41.5M [00:02<00:04, 7.85MB/s]
     27%|##7       | 11.3M/41.5M [00:02<00:03, 8.09MB/s]
     31%|###       | 12.8M/41.5M [00:02<00:03, 8.26MB/s]
     34%|###4      | 14.3M/41.5M [00:02<00:03, 8.38MB/s]
     38%|###7      | 15.7M/41.5M [00:03<0
 0:03, 8.57MB/s]
     41%|####1     | 17.2M/41.5M [00:03<00:02, 8.57MB/s]
     45%|####4     | 18.7M/41.5M [00:03<00:02, 8.60MB/s]
     49%|####8     | 20.1M/41.5M [00:03<00:02, 8.50MB/s]
     52%|#####2    | 21.6M/41.5M [00:03<00:02, 8.56MB/s]
     56%|#####5    | 23.1M/41.5M [00:03<00:02, 8.58MB/s]
     59%|#####9    | 24.5M/41.5M [00:04<00:02, 8.58MB/s]
     63%|######2   | 26.0M/41.5M [00:04<00:01, 8.60MB/s]
     66%|######6   | 27.5M/41.5M [00:04<00:01, 8.62MB/s]
     70%|######9   | 28.9M/41.5M [00:04<00:01, 8.62MB/s]
     73%|#######3  | 30.4M/41.5M [00:04<00:01, 8.65MB/s]
     77%|#######6  | 31.9M/41.5M [00:04<00:01, 8.65MB/s]
     80%|########  | 33.3M/41.5M [00:05<00:00, 8.64MB/s]
     84%|########3 | 34.8M/41.5M [00:05<00:00, 8.65MB/s]
     87%|########7 | 36.3M/41.5M [00:05<00:00, 8.64MB/s]
     91%|######### | 37.7M/41.5M [00:05<00:00, 8.64MB/s]
     94%|#########4| 39.2M/41.5M [00:05<00:00, 8.65MB/s]
     98%|#########7| 40.6M/41.5M [00:06<00:00, 8.63MB/s]
    100%|###
 #######| 41.5M/41.5M [00:06<00:00, 7.19MB/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 4b48ca12b..eba85fa87 100644
--- a/docs/_sources/how_to/compile_models/from_paddle.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_paddle.rst.txt
@@ -201,7 +201,7 @@ Look up prediction top 1 index in 1000 class synset.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  27.295 seconds)
+   **Total running time of the script:** ( 1 minutes  9.805 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 20ee0c026..ed3f063f2 100644
--- a/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
@@ -79,7 +79,7 @@ Load a pretrained PyTorch model
  .. code-block:: none
 
     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]
     38%|###8      | 17.0M/44.7M [00:00<00:00, 178MB/s]
     82%|########2 | 36.7M/44.7M [00:00<00:00, 195MB/s]
    100%|##########| 44.7M/44.7M [00:00<00:00, 200MB/s]
+
      0%|          | 0.00/44.7M [00:00<?, ?B/s]
     40%|###9      | 17.8M/44.7M [00:00<00:00, 179MB/s]
     95%|#########5| 42.6M/44.7M [00:00<00:00, 226MB/s]
    100%|##########| 44.7M/44.7M [00:00<00:00, 220MB/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 e46c29122..f3bb6a994 100644
--- a/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
@@ -372,7 +372,7 @@ Run the corresponding model on tensorflow
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  3.442 seconds)
+   **Total running time of the script:** ( 1 minutes  6.815 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 18b9b6ffc..2aaa72443 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,15 +5,15 @@
 
 Computation times
 =================
-**05:50.116** total execution time for **how_to_compile_models** files:
+**05:39.253** total execution time for **how_to_compile_models** files:
 
-- **01:27.295**: :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)
-- **01:03.442**: :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``)
-- **00:56.561**: :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)
-- **00:41.867**: :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)
-- **00:25.005**: :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)
-- **00:20.944**: :ref:`sphx_glr_how_to_compile_models_from_mxnet.py` (``from_mxnet.py``)
-- **00:20.805**: :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)
-- **00:19.257**: :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)
-- **00:12.328**: :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)
-- **00:02.612**: :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)
+- **01:09.805**: :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)
+- **01:06.815**: :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``)
+- **00:59.385**: :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)
+- **00:32.312**: :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)
+- **00:25.918**: :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)
+- **00:23.989**: :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)
+- **00:23.978**: :ref:`sphx_glr_how_to_compile_models_from_mxnet.py` (``from_mxnet.py``)
+- **00:19.845**: :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)
+- **00:14.557**: :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)
+- **00:02.650**: :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)
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 bd63a0fd7..4109eb306 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
@@ -393,7 +393,7 @@ Execute on TVM
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      15.5674      15.5431      15.6927      15.4704       0.0776   
+      17.0220      16.9537      17.5340      16.5876       0.3437   
                
 
 
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_rasp.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_rasp.rst.txt
index fbed4031d..da854662a 100644
--- a/docs/_sources/how_to/deploy_models/deploy_model_on_rasp.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_rasp.rst.txt
@@ -252,7 +252,7 @@ to run this tutorial with a real device.
 
  .. code-block:: none
 
-    /workspace/python/tvm/relay/build_module.py:439: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+    /workspace/python/tvm/relay/build_module.py:431: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
       DeprecationWarning,
 
 
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 4ea26f48f..61073ea44 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
@@ -108,7 +108,7 @@ Load pre-trained maskrcnn from torchvision and do tracing
  .. code-block:: none
 
     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]
      3%|2         | 4.88M/170M [00:00<00:03, 51.0MB/s]
      6%|5         | 9.94M/170M [00:00<00:03, 52.0MB/s]
      9%|8         | 14.9M/170M [00:00<00:03, 50.2MB/s]
     12%|#1        | 19.7M/170M [00:00<00:03, 48.3MB/s]
     15%|#4        | 24.9M/170M [00:00<00:03, 50.3MB/s]
     18%|#8        | 30.7M/170M [00:00<00:02, 53.8MB/s]
     21%|##1       | 35.8M/170M [00:00<00:02, 52.4MB/s]
     24%|##4       | 41.1M/170M [00:00<00:02, 53.0MB/s]
     27%|##7       | 46.1M/170M [00:01<00:03, 41.5MB/s]
     31%|###1      | 52.8M/170M [00:01<00:02, 48.6MB/s]
     34%|###4      | 57.8M/170M [00:01<00:02, 49.6MB/s]
     37%|###6      | 62.8M/170M [00:01<00:02, 43.3MB/s]
     40%|###9      | 67.3M/170M [00:01<00:02, 42.7MB/s]
     43%|####2     | 72.6M/170M [00:01<00:02, 45.3MB/s]
     46%|####6     | 78.9M/170M [00:01<00:01, 50.7MB/s]
     49%|####9     | 83.9M/170M [00:01<00:01, 50.6MB/s]
     53%|#####3    | 90.6M/170M [00:01<00:01, 55.8MB/
 s]
     57%|#####6    | 96.0M/170M [00:02<00:01, 54.9MB/s]
     60%|#####9    | 101M/170M [00:02<00:01, 55.3MB/s] 
     64%|######3   | 108M/170M [00:02<00:01, 60.5MB/s]
     67%|######7   | 114M/170M [00:02<00:00, 60.0MB/s]
     71%|#######1  | 121M/170M [00:02<00:00, 62.4MB/s]
     75%|#######4  | 127M/170M [00:02<00:00, 59.5MB/s]
     78%|#######8  | 133M/170M [00:02<00:00, 61.1MB/s]
     82%|########2 | 139M/170M [00:02<00:00, 60.2MB/s]
     86%|########5 | 146M/170M [00:02<00:00, 62.9MB/s]
     90%|########9 | 152M/170M [00:02<00:00, 63.4MB/s]
     93%|#########3| 159M/170M [00:03<00:00, 64.1MB/s]
     97%|#########6| 165M/170M [00:03<00:00, 63.9MB/s]
    100%|##########| 170M/170M [00:03<00:00, 55.0MB/s]
+
      0%|          | 0.00/170M [00:00<?, ?B/s]
      4%|3         | 6.01M/170M [00:00<00:02, 62.9MB/s]
      7%|7         | 12.0M/170M [00:00<00:02, 55.2MB/s]
     10%|#         | 17.3M/170M [00:00<00:03, 51.4MB/s]
     13%|#3        | 22.3M/170M [00:00<00:03, 51.5MB/s]
     16%|#6        | 27.2M/170M [00:00<00:03, 40.7MB/s]
     19%|#8        | 31.8M/170M [00:00<00:03, 42.5MB/s]
     21%|##1       | 36.1M/170M [00:00<00:03, 43.2MB/s]
     24%|##3       | 40.3M/170M [00:00<00:03, 40.5MB/s]
     27%|##7       | 46.3M/170M [00:01<00:02, 46.3MB/s]
     30%|##9       | 50.9M/170M [00:01<00:03, 41.5MB/s]
     32%|###2      | 55.0M/170M [00:01<00:03, 37.9MB/s]
     35%|###5      | 59.9M/170M [00:01<00:02, 41.3MB/s]
     39%|###8      | 65.8M/170M [00:01<00:02, 46.5MB/s]
     41%|####1     | 70.4M/170M [00:01<00:02, 46.7MB/s]
     44%|####4     | 75.6M/170M [00:01<00:02, 48.8MB/s]
     47%|####7     | 80.6M/170M [00:01<00:01, 49.9MB/s]
     50%|#####     | 85.5M/170M [00:01<00:01, 48.5MB/
 s]
     53%|#####3    | 90.2M/170M [00:02<00:01, 47.9MB/s]
     56%|#####5    | 94.8M/170M [00:02<00:01, 47.0MB/s]
     59%|#####9    | 101M/170M [00:02<00:01, 51.1MB/s] 
     62%|######2   | 106M/170M [00:02<00:01, 47.8MB/s]
     66%|######5   | 111M/170M [00:02<00:01, 51.3MB/s]
     68%|######8   | 116M/170M [00:02<00:01, 51.3MB/s]
     71%|#######1  | 121M/170M [00:02<00:01, 50.2MB/s]
     75%|#######4  | 127M/170M [00:02<00:00, 53.1MB/s]
     78%|#######7  | 132M/170M [00:02<00:00, 53.0MB/s]
     81%|########  | 137M/170M [00:03<00:00, 48.4MB/s]
     84%|########3 | 142M/170M [00:03<00:00, 46.5MB/s]
     87%|########6 | 147M/170M [00:03<00:00, 49.3MB/s]
     90%|########9 | 152M/170M [00:03<00:00, 43.6MB/s]
     93%|#########2| 158M/170M [00:03<00:00, 47.5MB/s]
     96%|#########6| 163M/170M [00:03<00:00, 50.8MB/s]
     99%|#########9| 168M/170M [00:03<00:00, 35.6MB/s]
    100%|##########| 170M/170M [00:03<00:00, 45.2MB/s]
     /usr/local/lib/python3.7/dist-packages/torch/nn/functional.py:3878: 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).
       for i in range(dim)
     /usr/local/lib/python3.7/dist-packages/torchvision/models/detection/anchor_utils.py:127: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').
@@ -173,7 +173,7 @@ Import the graph to Relay
 
  .. code-block:: none
 
-    /workspace/python/tvm/relay/build_module.py:439: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+    /workspace/python/tvm/relay/build_module.py:431: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
       DeprecationWarning,
 
 
@@ -253,7 +253,7 @@ Get boxes with score larger than 0.9
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 3 minutes  1.507 seconds)
+   **Total running time of the script:** ( 3 minutes  26.010 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 be7ebad37..7a371590d 100644
--- a/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
@@ -187,7 +187,7 @@ training. Other models require a full post training calibration.
  .. code-block:: none
 
     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]
     26%|##6       | 3.57M/13.6M [00:00<00:00, 37.3MB/s]
     53%|#####3    | 7.20M/13.6M [00:00<00:00, 37.8MB/s]
    100%|##########| 13.6M/13.6M [00:00<00:00, 60.2MB/s]
+
      0%|          | 0.00/13.6M [00:00<?, ?B/s]
    100%|##########| 13.6M/13.6M [00:00<00:00, 151MB/s]
 
 
 
@@ -344,7 +344,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)  
-      90.3567      90.1864      99.1484      89.8744       0.9661   
+      90.6754      90.5349      91.6982      90.3244       0.3079   
                
 
 
@@ -384,7 +384,7 @@ TODO
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  3.791 seconds)
+   **Total running time of the script:** ( 1 minutes  13.411 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 818560366..25ec4fda4 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
@@ -351,7 +351,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)  
-      118.3741     118.4525     120.2847     116.1592      1.0702   
+      121.0929     120.8253     125.0510     119.9421      0.9224   
                
 
 
@@ -385,7 +385,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  59.468 seconds)
+   **Total running time of the script:** ( 1 minutes  55.896 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_prequantized_tflite.py:
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 18ccc66eb..6417f69a6 100644
--- a/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt
@@ -213,7 +213,7 @@ We create a Relay VM to build and execute the model.
 
  .. code-block:: none
 
-    /workspace/python/tvm/relay/build_module.py:439: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+    /workspace/python/tvm/relay/build_module.py:431: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
       DeprecationWarning,
 
 
@@ -221,7 +221,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  5.876 seconds)
+   **Total running time of the script:** ( 1 minutes  21.284 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_quantized.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_ssd_gluoncv.rst.txt b/docs/_sources/how_to/deploy_models/deploy_ssd_gluoncv.rst.txt
index e8fd3e9a4..82d713517 100644
--- a/docs/_sources/how_to/deploy_models/deploy_ssd_gluoncv.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_ssd_gluoncv.rst.txt
@@ -137,7 +137,7 @@ Convert and compile model for CPU.
             data: None
       input_sym_arg_type = in_param.infer_type()[0]
     Downloading /workspace/.mxnet/models/ssd_512_resnet50_v1_voc-9c8b225a.zip from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/ssd_512_resnet50_v1_voc-9c8b225a.zip...
-
      0%|          | 0/132723 [00:00<?, ?KB/s]
      4%|3         | 4769/132723 [00:00<00:02, 47677.20KB/s]
     10%|9         | 12722/132723 [00:00<00:01, 66406.43KB/s]
     16%|#5        | 20717/132723 [00:00<00:01, 72585.42KB/s]
     22%|##1       | 28753/132723 [00:00<00:01, 75652.95KB/s]
     27%|##7       | 36319/132723 [00:00<00:01, 60073.39KB/s]
     33%|###3      | 44302/132723 [00:00<00:01, 65807.12KB/s]
     39%|###8      | 51256/132723 [00:00<00:01, 62753.58KB/s]
     45%|####4     | 59258/132723 [00:00<00:01, 67621.70KB/s]
     51%|#####     | 67284/132723 [00:00<00:00, 71248.97KB/s]
     57%|#####6    | 75226/132723 [00:01<00:00, 73624.07KB/s]
     63%|######2   | 83325/132723 [00:01<00:00, 75784.37KB/s]
     69%|######8   | 91372/132723 [00:01<00:00, 77166.38KB/s]
     75%|#######4  | 99364/132723 [00:01<00:00, 77981.09KB/s]
     81%|########  | 107304/132723 [00:01<00:00, 78402.86KB/s]
     87%|########6 | 115187/132723 [00:01<00:00, 78175.55KB/s]
     93%|#########
 2| 123035/132723 [00:01<00:00, 77963.12KB/s]
     99%|#########8| 130855/132723 [00:01<00:00, 78031.29KB/s]
    100%|##########| 132723/132723 [00:01<00:00, 72892.71KB/s]
+
      0%|          | 0/132723 [00:00<?, ?KB/s]
      5%|5         | 6754/132723 [00:00<00:01, 67531.21KB/s]
     11%|#1        | 15125/132723 [00:00<00:01, 77042.60KB/s]
     18%|#7        | 23558/132723 [00:00<00:01, 80365.36KB/s]
     24%|##4       | 32019/132723 [00:00<00:01, 82029.58KB/s]
     30%|###       | 40476/132723 [00:00<00:01, 82941.94KB/s]
     37%|###6      | 48920/132723 [00:00<00:01, 83448.07KB/s]
     43%|####3     | 57382/132723 [00:00<00:00, 83829.16KB/s]
     50%|####9     | 65832/132723 [00:00<00:00, 84041.20KB/s]
     56%|#####5    | 74306/132723 [00:00<00:00, 84258.16KB/s]
     62%|######2   | 82770/132723 [00:01<00:00, 84374.63KB/s]
     69%|######8   | 91249/132723 [00:01<00:00, 84497.46KB/s]
     75%|#######5  | 99710/132723 [00:01<00:00, 84527.98KB/s]
     81%|########1 | 108169/132723 [00:01<00:00, 84542.70KB/s]
     88%|########7 | 116642/132723 [00:01<00:00, 84596.25KB/s]
     94%|#########4| 125155/132723 [00:01<00:00, 84751.42KB/s]
    100%|########
 ##| 132723/132723 [00:01<00:00, 83383.63KB/s]
 
 
 
@@ -202,7 +202,7 @@ Display result
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 2 minutes  18.679 seconds)
+   **Total running time of the script:** ( 2 minutes  36.954 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_ssd_gluoncv.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 8f03c5a4b..436fb7017 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,13 +5,13 @@
 
 Computation times
 =================
-**11:18.815** total execution time for **how_to_deploy_models** files:
+**11:27.811** total execution time for **how_to_deploy_models** files:
 
-- **03:01.507**: :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``)
-- **02:18.679**: :ref:`sphx_glr_how_to_deploy_models_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)
-- **02:05.876**: :ref:`sphx_glr_how_to_deploy_models_deploy_quantized.py` (``deploy_quantized.py``)
-- **01:59.468**: :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)
-- **01:03.791**: :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)
-- **00:27.496**: :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)
-- **00:21.795**: :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)
-- **00:00.202**: :ref:`sphx_glr_how_to_deploy_models_deploy_sparse.py` (``deploy_sparse.py``)
+- **03:26.010**: :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``)
+- **02:36.954**: :ref:`sphx_glr_how_to_deploy_models_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)
+- **01:55.896**: :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)
+- **01:21.284**: :ref:`sphx_glr_how_to_deploy_models_deploy_quantized.py` (``deploy_quantized.py``)
+- **01:13.411**: :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)
+- **00:31.015**: :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)
+- **00:23.025**: :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)
+- **00:00.215**: :ref:`sphx_glr_how_to_deploy_models_deploy_sparse.py` (``deploy_sparse.py``)
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 3f5b1dd18..90e1c3780 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
@@ -423,7 +423,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.zip5322494f-0b66-42e4-9a5c-9fd9bb331175 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
+    Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zipc97dc2a8-d241-4504-9f7e-2e4884bfe63f from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
 
 
 
@@ -525,7 +525,7 @@ Now, to actually convert the entire network, we have written `a pass in Relay <h
 
  .. code-block:: none
 
-      Check failed: (lower) is false: FloatImm lowering function for target llvm type 150 not found
+      Check failed: (lower) is false: Intrinsic lowering function for target llvm, intrinsic name tir.sqrt, type 150 not found
 
 
 
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 fc527ff7f..2f4096884 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,9 +5,9 @@
 
 Computation times
 =================
-**00:37.776** total execution time for **how_to_extend_tvm** files:
+**00:40.869** total execution time for **how_to_extend_tvm** files:
 
-- **00:34.325**: :ref:`sphx_glr_how_to_extend_tvm_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``)
-- **00:02.211**: :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)
-- **00:01.059**: :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)
-- **00:00.181**: :ref:`sphx_glr_how_to_extend_tvm_low_level_custom_pass.py` (``low_level_custom_pass.py``)
+- **00:37.117**: :ref:`sphx_glr_how_to_extend_tvm_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``)
+- **00:02.397**: :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)
+- **00:01.129**: :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)
+- **00:00.227**: :ref:`sphx_glr_how_to_extend_tvm_low_level_custom_pass.py` (``low_level_custom_pass.py``)
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 8acea0921..3d3850a55 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
@@ -199,10 +199,10 @@ profile the execution time of each passes.
  .. code-block:: none
 
     Printing results of timing profile...
-    InferType: 6204us [6204us] (45.81%; 45.81%)
-    FoldScaleAxis: 7340us [3us] (54.19%; 54.19%)
-            FoldConstant: 7337us [1522us] (54.17%; 99.96%)
-                    InferType: 5814us [5814us] (42.93%; 79.25%)
+    InferType: 6287us [6287us] (45.69%; 45.69%)
+    FoldScaleAxis: 7475us [3us] (54.31%; 54.31%)
+            FoldConstant: 7472us [1526us] (54.30%; 99.97%)
+                    InferType: 5946us [5946us] (43.21%; 79.57%)
 
 
 
@@ -239,10 +239,10 @@ Refer to following sections and :py:func:`tvm.instrument.pass_instrument` for th
  .. code-block:: none
 
     Printing results of timing profile...
-    InferType: 5910us [5910us] (45.11%; 45.11%)
-    FoldScaleAxis: 7190us [2us] (54.89%; 54.89%)
-            FoldConstant: 7188us [1489us] (54.87%; 99.97%)
-                    InferType: 5699us [5699us] (43.50%; 79.28%)
+    InferType: 6068us [6068us] (44.90%; 44.90%)
+    FoldScaleAxis: 7447us [3us] (55.10%; 55.10%)
+            FoldConstant: 7444us [1552us] (55.08%; 99.97%)
+                    InferType: 5892us [5892us] (43.60%; 79.16%)
 
 
 
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 5ff8b9377..c8cda71e5 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
@@ -295,7 +295,7 @@ latency of convolution.
 
  .. code-block:: none
 
-    Convolution: 42.368728 ms
+    Convolution: 54.174938 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 d3e394825..3e8cabe25 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
@@ -628,7 +628,7 @@ be able to run on our build server
 
  .. code-block:: none
 
-    conv2d with tensor core: 7.008247 ms
+    conv2d with tensor core: 6.466869 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 e7fb21582..aadf0c10a 100644
--- a/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
@@ -118,8 +118,8 @@ Then we write a baseline implementation, the simplest way to write a matrix mult
 
  .. code-block:: none
 
-    Numpy running time: 0.018506
-    Baseline: 3.245997
+    Numpy running time: 0.020153
+    Baseline: 3.498409
 
 
 
@@ -210,7 +210,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 
  .. code-block:: none
 
-    Opt1: 0.303008
+    Opt1: 0.325702
 
 
 
@@ -309,7 +309,7 @@ In this tutorial, we chose to vectorize the inner loop row data since it is cach
 
  .. code-block:: none
 
-    Opt2: 0.336242
+    Opt2: 0.344468
 
 
 
@@ -401,7 +401,7 @@ the access pattern for A matrix is more cache friendly.
 
  .. code-block:: none
 
-    Opt3: 0.117632
+    Opt3: 0.133277
 
 
 
@@ -520,7 +520,7 @@ flattening.
 
  .. code-block:: none
 
-    Opt4: 0.110116
+    Opt4: 0.112306
 
 
 
@@ -638,7 +638,7 @@ write to C when all the block results are ready.
 
  .. code-block:: none
 
-    Opt5: 0.110598
+    Opt5: 0.113493
 
 
 
@@ -759,7 +759,7 @@ Futhermore, we can also utilize multi-core processors to do the thread-level par
 
  .. code-block:: none
 
-    Opt6: 0.144518
+    Opt6: 0.147983
 
 
 
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 16918002d..97d7822e6 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,8 +5,8 @@
 
 Computation times
 =================
-**00:34.387** total execution time for **how_to_optimize_operators** files:
+**00:36.467** total execution time for **how_to_optimize_operators** files:
 
-- **00:31.866**: :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)
-- **00:01.338**: :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``)
-- **00:01.184**: :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)
+- **00:33.685**: :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)
+- **00:01.466**: :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``)
+- **00:01.316**: :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)
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 f48ea3f68..fde6afe03 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,11 +5,11 @@
 
 Computation times
 =================
-**04:54.833** total execution time for **how_to_tune_with_autoscheduler** files:
-
-- **02:22.038**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``)
-- **01:19.370**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)
-- **00:39.917**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)
-- **00:16.436**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)
-- **00:08.759**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)
-- **00:08.312**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)
+**05:16.094** total execution time for **how_to_tune_with_autoscheduler** files:
+
+- **02:31.485**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``)
+- **01:25.057**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)
+- **00:43.242**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)
+- **00:17.877**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)
+- **00:09.345**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)
+- **00:09.089**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)
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 903815b76..9b8673ba9 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
@@ -222,292 +222,188 @@ cooperative fetching, unrolling and operator fusion.
                  compute: Buffer(compute_2: Pointer(float32), float32, [25088], [])}
       buffer_map = {data_1: data, kernel_1: kernel, bias_1: bias, compute_1: compute}
       preflattened_buffer_map = {data_1: data_3: Buffer(data_2, float32, [1, 512, 7, 7], []), kernel_1: kernel_3: Buffer(kernel_2, float32, [512, 512, 3, 3], []), bias_1: bias_3: Buffer(bias_2, float32, [1, 512, 1, 1], []), compute_1: compute_3: Buffer(compute_2, float32, [1, 512, 7, 7], [])} {
-      attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 32;
-      allocate(conv2d_nchw: Pointer(local float32), float32, [16]), storage_scope = local;
-      allocate(pad_temp.shared: Pointer(shared float32), float32, [2016]), storage_scope = shared;
+      attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 16;
+      allocate(conv2d_nchw: Pointer(local float32), float32, [14]), storage_scope = local;
+      allocate(pad_temp.shared: Pointer(shared float32), float32, [1008]), storage_scope = shared;
       allocate(kernel.shared: Pointer(shared float32), float32, [1536]), storage_scope = shared;
-      attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
-        conv2d_nchw_1: Buffer(conv2d_nchw, float32, [16], [], scope="local", align=64)[0] = 0f32
-        conv2d_nchw_1[1] = 0f32
-        conv2d_nchw_1[2] = 0f32
-        conv2d_nchw_1[3] = 0f32
-        conv2d_nchw_1[4] = 0f32
-        conv2d_nchw_1[5] = 0f32
-        conv2d_nchw_1[6] = 0f32
+      attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112 {
+        conv2d_nchw_1: Buffer(conv2d_nchw, float32, [14], [], scope="local", align=32)[0] = 0f32
         conv2d_nchw_1[7] = 0f32
+        conv2d_nchw_1[1] = 0f32
         conv2d_nchw_1[8] = 0f32
+        conv2d_nchw_1[2] = 0f32
         conv2d_nchw_1[9] = 0f32
+        conv2d_nchw_1[3] = 0f32
         conv2d_nchw_1[10] = 0f32
+        conv2d_nchw_1[4] = 0f32
         conv2d_nchw_1[11] = 0f32
+        conv2d_nchw_1[5] = 0f32
         conv2d_nchw_1[12] = 0f32
+        conv2d_nchw_1[6] = 0f32
         conv2d_nchw_1[13] = 0f32
-        conv2d_nchw_1[14] = 0f32
-        conv2d_nchw_1[15] = 0f32
-        for (rc.outer.outer: int32, 0, 16) {
+        for (rc.outer.outer: int32, 0, 32) {
           for (ry.outer.outer: int32, 0, 3) {
-            let cse_var_4: int32 = (rc.outer.outer*1568)
+            let cse_var_4: int32 = (rc.outer.outer*784)
             let cse_var_3: int32 = (ry.outer.outer*7)
-            let cse_var_2: int32 = (rc.outer.outer*288)
+            let cse_var_2: int32 = (rc.outer.outer*144)
             let cse_var_1: int32 = (ry.outer.outer*3)
              {
-              attr [IterVar(threadIdx.x_1: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1: Buffer(pad_temp.shared, float32, [2016], [], scope="shared")[threadIdx.x_1] = @tir.if_then_else((((1 <= (floordiv(threadIdx.x_1, 9) + ry.outer.outer)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), data[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 49)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 49), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 98)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 98), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 98), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 98), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 147)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 147), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 147), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 147), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 196)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 196), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 196), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 196), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 245)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 245), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 245), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 2), 9))) && (floormod((threadIdx.x_1 + 2), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 245), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 294)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 294), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 294), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 6), 9))) && (floormod((threadIdx.x_1 + 6), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 294), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 343)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 343), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 343), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 1), 9))) && (floormod((threadIdx.x_1 + 1), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 343), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 392)] = @tir.if_then_else(((((floordiv(floormod((threadIdx.x_1 + 392), 63), 9) + ry.outer.outer) < 8) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 392), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 441)] = @tir.if_then_else((((1 <= (floordiv(threadIdx.x_1, 9) + ry.outer.outer)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), data[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 335)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 490)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 490), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 490), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 490), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 539)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 539), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 539), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 539), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 588)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 588), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 588), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 588), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 637)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 637), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 637), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 637), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 686)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 686), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 686), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 2), 9))) && (floormod((threadIdx.x_1 + 2), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 686), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 735)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 735), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 735), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 6), 9))) && (floormod((threadIdx.x_1 + 6), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 735), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
+              attr [IterVar(threadIdx.x_1: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              pad_temp.shared_1: Buffer(pad_temp.shared, float32, [1008], [], scope="shared")[threadIdx.x_1] = @tir.if_then_else(((((1 <= (floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer)) && ((floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), data[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              pad_temp.shared_1[(threadIdx.x_1 + 112)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 112), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 112), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 112), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              pad_temp.shared_1[(threadIdx.x_1 + 224)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 224), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 224), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 224), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              pad_temp.shared_1[(threadIdx.x_1 + 336)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 336), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 336), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 336), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              pad_temp.shared_1[(threadIdx.x_1 + 448)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 448), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 448), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 448), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              pad_temp.shared_1[(threadIdx.x_1 + 560)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 560), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 560), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 2), 9))) && (floormod((threadIdx.x_1 + 2), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 560), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              pad_temp.shared_1[(threadIdx.x_1 + 672)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 672), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 672), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 6), 9))) && (floormod((threadIdx.x_1 + 6), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 672), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
               pad_temp.shared_1[(threadIdx.x_1 + 784)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 784), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 784), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 1), 9))) && (floormod((threadIdx.x_1 + 1), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 784), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 833)] = @tir.if_then_else(((((floordiv(floormod((threadIdx.x_1 + 833), 63), 9) + ry.outer.outer) < 8) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 833), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 882)] = @tir.if_then_else((((1 <= (floordiv(threadIdx.x_1, 9) + ry.outer.outer)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), data[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 678)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 931)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 931), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 931), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 931), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 980)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 980), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 980), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 980), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1029)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1029), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1029), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1029), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1078)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1078), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1078), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1078), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1127)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1127), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1127), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 2), 9))) && (floormod((threadIdx.x_1 + 2), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1127), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1176)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1176), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1176), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 6), 9))) && (floormod((threadIdx.x_1 + 6), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1176), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1225)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1225), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1225), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 1), 9))) && (floormod((threadIdx.x_1 + 1), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1225), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1274)] = @tir.if_then_else(((((floordiv(floormod((threadIdx.x_1 + 1274), 63), 9) + ry.outer.outer) < 8) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1274), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1323)] = @tir.if_then_else((((1 <= (floordiv(threadIdx.x_1, 9) + ry.outer.outer)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), data[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 1021)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1372)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1372), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1372), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1372), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1421)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1421), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1421), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1421), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1470)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1470), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1470), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1470), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1519)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1519), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1519), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1519), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1568)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1568), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1568), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 2), 9))) && (floormod((threadIdx.x_1 + 2), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1568), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1617)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1617), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1617), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 6), 9))) && (floormod((threadIdx.x_1 + 6), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1617), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1666)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1666), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1666), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 1), 9))) && (floormod((threadIdx.x_1 + 1), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1666), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1715)] = @tir.if_then_else(((((floordiv(floormod((threadIdx.x_1 + 1715), 63), 9) + ry.outer.outer) < 8) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1715), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1764)] = @tir.if_then_else((((1 <= (floordiv(threadIdx.x_1, 9) + ry.outer.outer)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), data[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 1364)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1813)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1813), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1813), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1813), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1862)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1862), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1862), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1862), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1911)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1911), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1911), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1911), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              pad_temp.shared_1[(threadIdx.x_1 + 1960)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 1960), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 1960), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1960), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
-              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              if @tir.likely((threadIdx.x_1 < 7), dtype=bool) {
-                pad_temp.shared_1[(threadIdx.x_1 + 2009)] = @tir.if_then_else((((floordiv(floormod((threadIdx.x_1 + 2009), 63), 9) + ry.outer.outer) < 8) && (floormod((threadIdx.x_1 + 2), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2009), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
-              }
-              attr [IterVar(threadIdx.x_2: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1: Buffer(kernel.shared, float32, [1536], [], scope="shared")[threadIdx.x_2] = kernel[(((((blockIdx.x*73728) + cse_var_2) + (floordiv(threadIdx.x_2, 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 49)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 49), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 49), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 98)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 98), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 98), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 147)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 147), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 17), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 196)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 196), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 196), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 245)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 245), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 245), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 294)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 294), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 2), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 343)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 343), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 343), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 392)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 392), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 392), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 441)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 441), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 19), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 490)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 490), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 490), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 539)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 539), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 539), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 588)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 588), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 4), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 637)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 637), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 637), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 686)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 686), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 686), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 735)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 735), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 21), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 784)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 784), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 784), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 833)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 833), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 833), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 882)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 882), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 6), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 931)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 931), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 931), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 980)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 980), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 980), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 1029)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1029), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 23), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 1078)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1078), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1078), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 1127)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1127), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1127), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 1176)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1176), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 8), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 1225)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1225), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1225), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 1274)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1274), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1274), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 1323)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1323), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 25), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 1372)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1372), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1372), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 1421)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1421), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1421), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              kernel.shared_1[(threadIdx.x_2 + 1470)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1470), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 10), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49;
-              if @tir.likely((threadIdx.x_2 < 17), dtype=bool) {
-                kernel.shared_1[(threadIdx.x_2 + 1519)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1519), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1519), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              pad_temp.shared_1[(threadIdx.x_1 + 896)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 896), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 896), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 896), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_2: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1: Buffer(kernel.shared, float32, [1536], [], scope="shared")[threadIdx.x_2] = kernel[((((((blockIdx.x*147456) + (floordiv(threadIdx.x_2, 48)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 48), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1[(threadIdx.x_2 + 112)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 7), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 112), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1[(threadIdx.x_2 + 224)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 14), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 224), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1[(threadIdx.x_2 + 336)] = kernel[(((((((blockIdx.x*147456) + (floordiv(floordiv(threadIdx.x_2, 16), 3)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 48), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 32256)]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1[(threadIdx.x_2 + 448)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 28), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 448), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1[(threadIdx.x_2 + 560)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 35), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 560), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1[(threadIdx.x_2 + 672)] = kernel[(((((((blockIdx.x*147456) + (floordiv(floordiv(threadIdx.x_2, 16), 3)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 48), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 64512)]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1[(threadIdx.x_2 + 784)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 49), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 784), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1[(threadIdx.x_2 + 896)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 56), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 896), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1[(threadIdx.x_2 + 1008)] = kernel[(((((((blockIdx.x*147456) + (floordiv(floordiv(threadIdx.x_2, 16), 3)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 48), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 96768)]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1[(threadIdx.x_2 + 1120)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 70), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1120), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1[(threadIdx.x_2 + 1232)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 77), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1232), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              kernel.shared_1[(threadIdx.x_2 + 1344)] = kernel[(((((((blockIdx.x*147456) + (floordiv(floordiv(threadIdx.x_2, 16), 3)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 48), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 129024)]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+              if @tir.likely((threadIdx.x_2 < 80), dtype=bool) {
+                kernel.shared_1[(threadIdx.x_2 + 1456)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 91), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1456), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
               }
-              for (rc.outer.inner: int32, 0, 16) {
-                let cse_var_5: int32 = (rc.outer.inner*6)
+              for (yy.outer.inner: int32, 0, 7) {
+                let cse_var_5: int32 = (yy.outer.inner + 7)
                  {
-                  conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[cse_var_5]))
-                  conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 96)]))
-                  conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 192)]))
-                  conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 288)]))
-                  conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 384)]))
-                  conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 480)]))
-                  conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 576)]))
-                  conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 672)]))
-                  conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 768)]))
-                  conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 864)]))
-                  conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 960)]))
-                  conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 1056)]))
-                  conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 1152)]))
-                  conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 1248)]))
-                  conv2d_nchw_1[14] = (conv2d_nchw_1[14] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 1344)]))
-                  conv2d_nchw_1[15] = (conv2d_nchw_1[15] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 1440)]))
-                  conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 3)]))
-                  conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 99)]))
-                  conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 195)]))
-                  conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 291)]))
-                  conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 387)]))
-                  conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 483)]))
-                  conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 579)]))
-                  conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 675)]))
-                  conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 771)]))
-                  conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 867)]))
-                  conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 963)]))
-                  conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 1059)]))
-                  conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 1155)]))
-                  conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 1251)]))
-                  conv2d_nchw_1[14] = (conv2d_nchw_1[14] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 1347)]))
-                  conv2d_nchw_1[15] = (conv2d_nchw_1[15] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 1443)]))
-                  conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 1)]))
-                  conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 97)]))
-                  conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 193)]))
-                  conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 289)]))
-                  conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 385)]))
-                  conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 481)]))
-                  conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 577)]))
-                  conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 673)]))
-                  conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 769)]))
-                  conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 865)]))
-                  conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 961)]))
-                  conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 1057)]))
-                  conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 1153)]))
-                  conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 1249)]))
-                  conv2d_nchw_1[14] = (conv2d_nchw_1[14] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 1345)]))
-                  conv2d_nchw_1[15] = (conv2d_nchw_1[15] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 1441)]))
-                  conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 4)]))
-                  conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 100)]))
-                  conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 196)]))
-                  conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 292)]))
-                  conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 388)]))
-                  conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 484)]))
-                  conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 580)]))
-                  conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 676)]))
-                  conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 772)]))
-                  conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 868)]))
-                  conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 964)]))
-                  conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 1060)]))
-                  conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 1156)]))
-                  conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 1252)]))
-                  conv2d_nchw_1[14] = (conv2d_nchw_1[14] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 1348)]))
-                  conv2d_nchw_1[15] = (conv2d_nchw_1[15] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 1444)]))
-                  conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 2)]))
-                  conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 98)]))
-                  conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 194)]))
-                  conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 290)]))
-                  conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 386)]))
-                  conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 482)]))
-                  conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 578)]))
-                  conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 674)]))
-                  conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 770)]))
-                  conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 866)]))
-                  conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 962)]))
-                  conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 1058)]))
-                  conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 1154)]))
-                  conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 1250)]))
-                  conv2d_nchw_1[14] = (conv2d_nchw_1[14] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 1346)]))
-                  conv2d_nchw_1[15] = (conv2d_nchw_1[15] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 1442)]))
-                  conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 5)]))
-                  conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 101)]))
-                  conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 197)]))
-                  conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 293)]))
-                  conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 389)]))
-                  conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 485)]))
-                  conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 581)]))
-                  conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 677)]))
-                  conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 773)]))
-                  conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 869)]))
-                  conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 965)]))
-                  conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 1061)]))
-                  conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 1157)]))
-                  conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 1253)]))
-                  conv2d_nchw_1[14] = (conv2d_nchw_1[14] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 1349)]))
-                  conv2d_nchw_1[15] = (conv2d_nchw_1[15] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 1445)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[((yy.outer.inner*9) + floormod(threadIdx.x, 7))]*kernel.shared_1[(floordiv(threadIdx.x, 7)*96)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[((yy.outer.inner*9) + floormod(threadIdx.x, 7))]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 48)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 1)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 49)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 2)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 50)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 3)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 51)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 4)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 52)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 5)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 53)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 126)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 6)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 126)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 54)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 127)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 7)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 127)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 55)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 128)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 8)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 128)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 56)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 189)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 9)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 189)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 57)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 190)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 10)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 190)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 58)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 191)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 11)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 191)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 59)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 252)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 12)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 252)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 60)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 253)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 13)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 253)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 61)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 254)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 14)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 254)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 62)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 315)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 15)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 315)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 63)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 316)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 16)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 316)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 64)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 317)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 17)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 317)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 65)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 378)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 18)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 378)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 66)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 379)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 19)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 379)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 67)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 380)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 20)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 380)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 68)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 441)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 21)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 441)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 69)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 442)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 22)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 442)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 70)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 443)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 23)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 443)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 71)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 504)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 24)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 504)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 72)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 505)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 25)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 505)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 73)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 506)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 26)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 506)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 74)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 567)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 27)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 567)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 75)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 568)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 28)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 568)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 76)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 569)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 29)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 569)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 77)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 630)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 30)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 630)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 78)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 631)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 31)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 631)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 79)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 632)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 32)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 632)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 80)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 693)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 33)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 693)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 81)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 694)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 34)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 694)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 82)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 695)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 35)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 695)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 83)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 756)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 36)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 756)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 84)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 757)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 37)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 757)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 85)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 758)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 38)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 758)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 86)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 819)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 39)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 819)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 87)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 820)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 40)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 820)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 88)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 821)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 41)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 821)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 89)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 882)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 42)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 882)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 90)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 883)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 43)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 883)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 91)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 884)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 44)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 884)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 92)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 945)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 45)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 945)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 93)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 946)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 46)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 946)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 94)]))
+                  conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 947)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 47)]))
+                  conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 947)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 95)]))
                 }
               }
             }
           }
         }
-        for (i1.inner: int32, 0, 16) {
-          compute[(((blockIdx.x*784) + (i1.inner*49)) + threadIdx.x)] = max((conv2d_nchw_1[i1.inner] + bias[((blockIdx.x*16) + i1.inner)]), 0f32)
+        for (i1.inner: int32, 0, 2) {
+          for (i2.inner: int32, 0, 7) {
+            compute[(((((blockIdx.x*1568) + (floordiv(threadIdx.x, 7)*98)) + (i1.inner*49)) + (i2.inner*7)) + floormod(threadIdx.x, 7))] = max((conv2d_nchw_1[((i1.inner*7) + i2.inner)] + bias[(((blockIdx.x*32) + (floordiv(threadIdx.x, 7)*2)) + i1.inner)]), 0f32)
+          }
         }
       }
     }
@@ -560,7 +456,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 0.221 ms
+    Execution time of this operator: 0.323 ms
 
 
 
@@ -604,33 +500,33 @@ They can be used for debugging and learning the behavior of the auto-scheduler.
     conv2d_nchw_nn_o_o_i, conv2d_nchw_nn_o_i = s[conv2d_nchw].split(conv2d_nchw_nn_o_i, factor=1)
     conv2d_nchw_nn_o_o_o_i, conv2d_nchw_nn_o_o_i = s[conv2d_nchw].split(conv2d_nchw_nn_o_o_i, factor=1)
     conv2d_nchw_nn_o_o_o_o, conv2d_nchw_nn_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_nn_o_o_o_i, factor=1)
-    conv2d_nchw_ff_o_i, conv2d_nchw_ff_i = s[conv2d_nchw].split(conv2d_nchw_ff, factor=16)
+    conv2d_nchw_ff_o_i, conv2d_nchw_ff_i = s[conv2d_nchw].split(conv2d_nchw_ff, factor=2)
     conv2d_nchw_ff_o_o_i, conv2d_nchw_ff_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_i, factor=1)
-    conv2d_nchw_ff_o_o_o_i, conv2d_nchw_ff_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_i, factor=1)
+    conv2d_nchw_ff_o_o_o_i, conv2d_nchw_ff_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_i, factor=16)
     conv2d_nchw_ff_o_o_o_o, conv2d_nchw_ff_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_o_i, factor=1)
     conv2d_nchw_yy_o_i, conv2d_nchw_yy_i = s[conv2d_nchw].split(conv2d_nchw_yy, factor=1)
-    conv2d_nchw_yy_o_o_i, conv2d_nchw_yy_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_i, factor=1)
-    conv2d_nchw_yy_o_o_o_i, conv2d_nchw_yy_o_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_o_i, factor=7)
+    conv2d_nchw_yy_o_o_i, conv2d_nchw_yy_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_i, factor=7)
+    conv2d_nchw_yy_o_o_o_i, conv2d_nchw_yy_o_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_o_i, factor=1)
     conv2d_nchw_yy_o_o_o_o, conv2d_nchw_yy_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_o_o_i, factor=1)
     conv2d_nchw_xx_o_i, conv2d_nchw_xx_i = s[conv2d_nchw].split(conv2d_nchw_xx, factor=1)
     conv2d_nchw_xx_o_o_i, conv2d_nchw_xx_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_i, factor=1)
     conv2d_nchw_xx_o_o_o_i, conv2d_nchw_xx_o_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_o_i, factor=7)
     conv2d_nchw_xx_o_o_o_o, conv2d_nchw_xx_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_o_o_i, factor=1)
-    conv2d_nchw_rc_o_i, conv2d_nchw_rc_i = s[conv2d_nchw].split(conv2d_nchw_rc, factor=2)
-    conv2d_nchw_rc_o_o, conv2d_nchw_rc_o_i = s[conv2d_nchw].split(conv2d_nchw_rc_o_i, factor=16)
+    conv2d_nchw_rc_o_i, conv2d_nchw_rc_i = s[conv2d_nchw].split(conv2d_nchw_rc, factor=16)
+    conv2d_nchw_rc_o_o, conv2d_nchw_rc_o_i = s[conv2d_nchw].split(conv2d_nchw_rc_o_i, factor=1)
     conv2d_nchw_ry_o_i, conv2d_nchw_ry_i = s[conv2d_nchw].split(conv2d_nchw_ry, factor=1)
     conv2d_nchw_ry_o_o, conv2d_nchw_ry_o_i = s[conv2d_nchw].split(conv2d_nchw_ry_o_i, factor=1)
-    conv2d_nchw_rx_o_i, conv2d_nchw_rx_i = s[conv2d_nchw].split(conv2d_nchw_rx, factor=1)
-    conv2d_nchw_rx_o_o, conv2d_nchw_rx_o_i = s[conv2d_nchw].split(conv2d_nchw_rx_o_i, factor=3)
+    conv2d_nchw_rx_o_i, conv2d_nchw_rx_i = s[conv2d_nchw].split(conv2d_nchw_rx, factor=3)
+    conv2d_nchw_rx_o_o, conv2d_nchw_rx_o_i = s[conv2d_nchw].split(conv2d_nchw_rx_o_i, factor=1)
     s[conv2d_nchw].reorder(conv2d_nchw_nn_o_o_o_o, conv2d_nchw_ff_o_o_o_o, conv2d_nchw_yy_o_o_o_o, conv2d_nchw_xx_o_o_o_o, conv2d_nchw_nn_o_o_o_i, conv2d_nchw_ff_o_o_o_i, conv2d_nchw_yy_o_o_o_i, conv2d_nchw_xx_o_o_o_i, conv2d_nchw_nn_o_o_i, conv2d_nchw_ff_o_o_i, conv2d_nchw_yy_o_o_i, conv2d_nchw_xx_o_o_i, conv2d_nchw_rc_o_o, conv2d_nchw_ry_o_o, conv2d_nchw_rx_o_o, conv2d_nchw_rc_o_i, conv2d_nchw_ry_o_i, conv2d_nchw_rx_o_i, conv2d_nchw_nn_o_i, conv2d_nchw_ff_o_i, conv2d_nchw_yy_o_i, conv2 [...]
     compute_i0_o_i, compute_i0_i = s[compute].split(compute_i0, factor=1)
     compute_i0_o_o_i, compute_i0_o_i = s[compute].split(compute_i0_o_i, factor=1)
     compute_i0_o_o_o, compute_i0_o_o_i = s[compute].split(compute_i0_o_o_i, factor=1)
-    compute_i1_o_i, compute_i1_i = s[compute].split(compute_i1, factor=16)
-    compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=1)
+    compute_i1_o_i, compute_i1_i = s[compute].split(compute_i1, factor=2)
+    compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=16)
     compute_i1_o_o_o, compute_i1_o_o_i = s[compute].split(compute_i1_o_o_i, factor=1)
-    compute_i2_o_i, compute_i2_i = s[compute].split(compute_i2, factor=1)
-    compute_i2_o_o_i, compute_i2_o_i = s[compute].split(compute_i2_o_i, factor=7)
+    compute_i2_o_i, compute_i2_i = s[compute].split(compute_i2, factor=7)
+    compute_i2_o_o_i, compute_i2_o_i = s[compute].split(compute_i2_o_i, factor=1)
     compute_i2_o_o_o, compute_i2_o_o_i = s[compute].split(compute_i2_o_o_i, factor=1)
     compute_i3_o_i, compute_i3_i = s[compute].split(compute_i3, factor=1)
     compute_i3_o_o_i, compute_i3_o_i = s[compute].split(compute_i3_o_i, factor=7)
@@ -653,14 +549,14 @@ They can be used for debugging and learning the behavior of the auto-scheduler.
     kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused = s[kernel_shared].fuse(kernel_shared_ax0, kernel_shared_ax1, kernel_shared_ax2, kernel_shared_ax3)
     kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
     s[kernel_shared].vectorize(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i)
-    kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=49)
+    kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=112)
     s[kernel_shared].bind(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i, te.thread_axis("threadIdx.x"))
     pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused = s[pad_temp_shared].fuse(pad_temp_shared_ax0, pad_temp_shared_ax1, pad_temp_shared_ax2, pad_temp_shared_ax3)
     pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
     s[pad_temp_shared].vectorize(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i)
-    pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=49)
+    pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=112)
     s[pad_temp_shared].bind(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i, te.thread_axis("threadIdx.x"))
-    s[conv2d_nchw].pragma(conv2d_nchw_nn_o_o_o_o, "auto_unroll_max_step", 1024)
+    s[conv2d_nchw].pragma(conv2d_nchw_nn_o_o_o_o, "auto_unroll_max_step", 512)
     s[conv2d_nchw].pragma(conv2d_nchw_nn_o_o_o_o, "unroll_explicit", True)
 
     CUDA source code:
@@ -678,210 +574,157 @@ They can be used for debugging and learning the behavior of the auto-scheduler.
       #define int64_t long long
       #define uint64_t unsigned long long
     #endif
-    extern "C" __global__ void __launch_bounds__(49) default_function_kernel0(float* __restrict__ data, float* __restrict__ kernel, float* __restrict__ compute, float* __restrict__ bias) {
-      float conv2d_nchw[16];
-      __shared__ float pad_temp_shared[2016];
+    extern "C" __global__ void __launch_bounds__(112) default_function_kernel0(float* __restrict__ data, float* __restrict__ kernel, float* __restrict__ compute, float* __restrict__ bias) {
+      float conv2d_nchw[14];
+      __shared__ float pad_temp_shared[1008];
       __shared__ float kernel_shared[1536];
       conv2d_nchw[0] = 0.000000e+00f;
-      conv2d_nchw[1] = 0.000000e+00f;
-      conv2d_nchw[2] = 0.000000e+00f;
-      conv2d_nchw[3] = 0.000000e+00f;
-      conv2d_nchw[4] = 0.000000e+00f;
-      conv2d_nchw[5] = 0.000000e+00f;
-      conv2d_nchw[6] = 0.000000e+00f;
       conv2d_nchw[7] = 0.000000e+00f;
+      conv2d_nchw[1] = 0.000000e+00f;
       conv2d_nchw[8] = 0.000000e+00f;
+      conv2d_nchw[2] = 0.000000e+00f;
       conv2d_nchw[9] = 0.000000e+00f;
+      conv2d_nchw[3] = 0.000000e+00f;
       conv2d_nchw[10] = 0.000000e+00f;
+      conv2d_nchw[4] = 0.000000e+00f;
       conv2d_nchw[11] = 0.000000e+00f;
+      conv2d_nchw[5] = 0.000000e+00f;
       conv2d_nchw[12] = 0.000000e+00f;
+      conv2d_nchw[6] = 0.000000e+00f;
       conv2d_nchw[13] = 0.000000e+00f;
-      conv2d_nchw[14] = 0.000000e+00f;
-      conv2d_nchw[15] = 0.000000e+00f;
-      for (int rc_outer_outer = 0; rc_outer_outer < 16; ++rc_outer_outer) {
+      for (int rc_outer_outer = 0; rc_outer_outer < 32; ++rc_outer_outer) {
         for (int ry_outer_outer = 0; ry_outer_outer < 3; ++ry_outer_outer) {
           __syncthreads();
-          pad_temp_shared[((int)threadIdx.x)] = ((((1 <= ((((int)threadIdx.x) / 9) + ry_outer_outer)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 49)] = (((((1 <= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 49) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 98)] = (((((1 <= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 98) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 147)] = (((((1 <= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 147) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 196)] = (((((1 <= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 196) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 245)] = (((((1 <= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 2) % 9))) && (((((int)threadIdx.x) + 2) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 245) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 294)] = (((((1 <= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 6) % 9))) && (((((int)threadIdx.x) + 6) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 294) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 343)] = (((((1 <= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 1) % 9))) && (((((int)threadIdx.x) + 1) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 343) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 392)] = ((((((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) < 8) && (1 <= ((((int)threadIdx.x) + 5) % 9))) && (((((int)threadIdx.x) + 5) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 392) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 441)] = ((((1 <= ((((int)threadIdx.x) / 9) + ry_outer_outer)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) + 335)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 490)] = (((((1 <= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 490) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 539)] = (((((1 <= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 539) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 588)] = (((((1 <= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 588) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 637)] = (((((1 <= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 637) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 686)] = (((((1 <= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 2) % 9))) && (((((int)threadIdx.x) + 2) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 686) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 735)] = (((((1 <= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 6) % 9))) && (((((int)threadIdx.x) + 6) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 735) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 784)] = (((((1 <= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 1) % 9))) && (((((int)threadIdx.x) + 1) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 784) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 833)] = ((((((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) < 8) && (1 <= ((((int)threadIdx.x) + 5) % 9))) && (((((int)threadIdx.x) + 5) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 833) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 882)] = ((((1 <= ((((int)threadIdx.x) / 9) + ry_outer_outer)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) + 678)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 931)] = (((((1 <= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 931) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 980)] = (((((1 <= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 980) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1029)] = (((((1 <= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1029) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1078)] = (((((1 <= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1078) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1127)] = (((((1 <= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 2) % 9))) && (((((int)threadIdx.x) + 2) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1127) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1176)] = (((((1 <= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 6) % 9))) && (((((int)threadIdx.x) + 6) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1176) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1225)] = (((((1 <= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 1) % 9))) && (((((int)threadIdx.x) + 1) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1225) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1274)] = ((((((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) < 8) && (1 <= ((((int)threadIdx.x) + 5) % 9))) && (((((int)threadIdx.x) + 5) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1274) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1323)] = ((((1 <= ((((int)threadIdx.x) / 9) + ry_outer_outer)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) + 1021)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1372)] = (((((1 <= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1372) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1421)] = (((((1 <= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1421) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1470)] = (((((1 <= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1470) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1519)] = (((((1 <= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1519) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1568)] = (((((1 <= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 2) % 9))) && (((((int)threadIdx.x) + 2) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1568) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1617)] = (((((1 <= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 6) % 9))) && (((((int)threadIdx.x) + 6) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1617) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1666)] = (((((1 <= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 1) % 9))) && (((((int)threadIdx.x) + 1) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1666) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1715)] = ((((((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) < 8) && (1 <= ((((int)threadIdx.x) + 5) % 9))) && (((((int)threadIdx.x) + 5) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1715) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1764)] = ((((1 <= ((((int)threadIdx.x) / 9) + ry_outer_outer)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) + 1364)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1813)] = (((((1 <= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1813) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1862)] = (((((1 <= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1862) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1911)] = (((((1 <= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1911) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
-          pad_temp_shared[(((int)threadIdx.x) + 1960)] = (((((1 <= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1960) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
-          if (((int)threadIdx.x) < 7) {
-            pad_temp_shared[(((int)threadIdx.x) + 2009)] = (((((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) < 8) && (((int)threadIdx.x) < 6)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 2009) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) + 2)) - 8)] : 0.000000e+00f);
-          }
-          kernel_shared[((int)threadIdx.x)] = kernel[(((((((int)blockIdx.x) * 73728) + (rc_outer_outer * 288)) + ((((int)threadIdx.x) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 49)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 49) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 49) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 98)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 98) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 2) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 147)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 147) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) / 3) + 17) & 31) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 196)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 196) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 4) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 245)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 245) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 53) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 294)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 294) / 96) * 4608)) + (rc_outer_outer * 288)) + (((((int)threadIdx.x) / 3) + 2) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 343)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 343) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 55) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 392)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 392) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 8) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 441)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 441) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) / 3) + 19) & 31) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 490)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 490) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 10) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 539)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 539) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 59) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 588)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 588) / 96) * 4608)) + (rc_outer_outer * 288)) + (((((int)threadIdx.x) / 3) + 4) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 637)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 637) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 61) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 686)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 686) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 14) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 735)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 735) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) / 3) + 21) & 31) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 784)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 784) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 16) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 833)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 833) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 65) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 882)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 882) / 96) * 4608)) + (rc_outer_outer * 288)) + (((((int)threadIdx.x) / 3) + 6) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 931)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 931) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 67) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 980)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 980) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 20) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1029)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1029) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) / 3) + 23) & 31) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1078)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1078) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 22) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1127)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1127) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 71) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1176)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1176) / 96) * 4608)) + (rc_outer_outer * 288)) + (((((int)threadIdx.x) / 3) + 8) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1225)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1225) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 73) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1274)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1274) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 26) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1323)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1323) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) / 3) + 25) & 31) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1372)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1372) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 28) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1421)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1421) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 77) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1470)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1470) / 96) * 4608)) + (rc_outer_outer * 288)) + (((((int)threadIdx.x) / 3) + 10) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-          if (((int)threadIdx.x) < 17) {
-            kernel_shared[(((int)threadIdx.x) + 1519)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1519) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 79) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
+          pad_temp_shared[((int)threadIdx.x)] = (((((1 <= (((((int)threadIdx.x) % 63) / 9) + ry_outer_outer)) && ((((((int)threadIdx.x) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 112)] = (((((1 <= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 112) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 224)] = (((((1 <= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 224) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 336)] = (((((1 <= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 336) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 448)] = (((((1 <= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 448) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 560)] = (((((1 <= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 2) % 9))) && (((((int)threadIdx.x) + 2) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 560) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 672)] = (((((1 <= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 6) % 9))) && (((((int)threadIdx.x) + 6) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 672) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 784)] = (((((1 <= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 1) % 9))) && (((((int)threadIdx.x) + 1) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 784) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 896)] = (((((1 <= ((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 5) % 9))) && (((((int)threadIdx.x) + 5) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 896) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
+          kernel_shared[((int)threadIdx.x)] = kernel[((((((((int)blockIdx.x) * 147456) + ((((int)threadIdx.x) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 112)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 112) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 16) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 224)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 224) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 32) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 336)] = kernel[(((((((((int)blockIdx.x) * 147456) + ((((int)threadIdx.x) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 32256)];
+          kernel_shared[(((int)threadIdx.x) + 448)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 448) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 16) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 560)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 560) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 32) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 672)] = kernel[(((((((((int)blockIdx.x) * 147456) + ((((int)threadIdx.x) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 64512)];
+          kernel_shared[(((int)threadIdx.x) + 784)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 784) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 16) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 896)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 896) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 32) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 1008)] = kernel[(((((((((int)blockIdx.x) * 147456) + ((((int)threadIdx.x) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 96768)];
+          kernel_shared[(((int)threadIdx.x) + 1120)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 1120) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 16) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 1232)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 1232) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 32) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 1344)] = kernel[(((((((((int)blockIdx.x) * 147456) + ((((int)threadIdx.x) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 129024)];
+          if (((int)threadIdx.x) < 80) {
+            kernel_shared[(((int)threadIdx.x) + 1456)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 1456) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 16) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
           }
           __syncthreads();
-          for (int rc_outer_inner = 0; rc_outer_inner < 16; ++rc_outer_inner) {
-            conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[(rc_outer_inner * 6)]));
-            conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 96)]));
-            conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 192)]));
-            conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 288)]));
-            conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 384)]));
-            conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 480)]));
-            conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 576)]));
-            conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 672)]));
-            conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 768)]));
-            conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 864)]));
-            conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 960)]));
-            conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 1056)]));
-            conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 1152)]));
-            conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 1248)]));
-            conv2d_nchw[14] = (conv2d_nchw[14] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 1344)]));
-            conv2d_nchw[15] = (conv2d_nchw[15] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 1440)]));
-            conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 3)]));
-            conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 99)]));
-            conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 195)]));
-            conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 291)]));
-            conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 387)]));
-            conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 483)]));
-            conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 579)]));
-            conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 675)]));
-            conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 771)]));
-            conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 867)]));
-            conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 963)]));
-            conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 1059)]));
-            conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 1155)]));
-            conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 1251)]));
-            conv2d_nchw[14] = (conv2d_nchw[14] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 1347)]));
-            conv2d_nchw[15] = (conv2d_nchw[15] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 1443)]));
-            conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 1)]));
-            conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 97)]));
-            conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 193)]));
-            conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 289)]));
-            conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 385)]));
-            conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 481)]));
-            conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 577)]));
-            conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 673)]));
-            conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 769)]));
-            conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 865)]));
-            conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 961)]));
-            conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 1057)]));
-            conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 1153)]));
-            conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 1249)]));
-            conv2d_nchw[14] = (conv2d_nchw[14] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 1345)]));
-            conv2d_nchw[15] = (conv2d_nchw[15] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 1441)]));
-            conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 4)]));
-            conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 100)]));
-            conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 196)]));
-            conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 292)]));
-            conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 388)]));
-            conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 484)]));
-            conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 580)]));
-            conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 676)]));
-            conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 772)]));
-            conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 868)]));
-            conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 964)]));
-            conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 1060)]));
-            conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 1156)]));
-            conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 1252)]));
-            conv2d_nchw[14] = (conv2d_nchw[14] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 1348)]));
-            conv2d_nchw[15] = (conv2d_nchw[15] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 1444)]));
-            conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 2)]));
-            conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 98)]));
-            conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 194)]));
-            conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 290)]));
-            conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 386)]));
-            conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 482)]));
-            conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 578)]));
-            conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 674)]));
-            conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 770)]));
-            conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 866)]));
-            conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 962)]));
-            conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 1058)]));
-            conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 1154)]));
-            conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 1250)]));
-            conv2d_nchw[14] = (conv2d_nchw[14] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 1346)]));
-            conv2d_nchw[15] = (conv2d_nchw[15] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 1442)]));
-            conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 5)]));
-            conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 101)]));
-            conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 197)]));
-            conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 293)]));
-            conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 389)]));
-            conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 485)]));
-            conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 581)]));
-            conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 677)]));
-            conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 773)]));
-            conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 869)]));
-            conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 965)]));
-            conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 1061)]));
-            conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 1157)]));
-            conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 1253)]));
-            conv2d_nchw[14] = (conv2d_nchw[14] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 1349)]));
-            conv2d_nchw[15] = (conv2d_nchw[15] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 1445)]));
+          for (int yy_outer_inner = 0; yy_outer_inner < 7; ++yy_outer_inner) {
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[((yy_outer_inner * 9) + (((int)threadIdx.x) % 7))] * kernel_shared[((((int)threadIdx.x) / 7) * 96)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[((yy_outer_inner * 9) + (((int)threadIdx.x) % 7))] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 48)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 1)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 49)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 2)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 50)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 3)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 51)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 4)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 52)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 5)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 53)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 126)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 6)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 126)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 54)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 127)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 7)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 127)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 55)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 128)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 8)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 128)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 56)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 189)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 9)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 189)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 57)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 190)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 10)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 190)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 58)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 191)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 11)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 191)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 59)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 252)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 12)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 252)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 60)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 253)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 13)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 253)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 61)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 254)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 14)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 254)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 62)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 315)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 15)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 315)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 63)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 316)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 16)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 316)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 64)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 317)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 17)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 317)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 65)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 378)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 18)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 378)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 66)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 379)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 19)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 379)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 67)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 380)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 20)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 380)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 68)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 441)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 21)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 441)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 69)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 442)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 22)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 442)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 70)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 443)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 23)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 443)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 71)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 504)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 24)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 504)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 72)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 505)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 25)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 505)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 73)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 506)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 26)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 506)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 74)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 567)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 27)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 567)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 75)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 568)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 28)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 568)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 76)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 569)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 29)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 569)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 77)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 630)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 30)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 630)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 78)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 631)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 31)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 631)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 79)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 632)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 32)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 632)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 80)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 693)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 33)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 693)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 81)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 694)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 34)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 694)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 82)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 695)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 35)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 695)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 83)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 756)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 36)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 756)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 84)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 757)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 37)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 757)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 85)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 758)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 38)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 758)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 86)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 819)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 39)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 819)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 87)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 820)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 40)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 820)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 88)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 821)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 41)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 821)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 89)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 882)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 42)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 882)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 90)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 883)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 43)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 883)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 91)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 884)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 44)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 884)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 92)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 945)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 45)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 945)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 93)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 946)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 46)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 946)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 94)]));
+            conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 947)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 47)]));
+            conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 947)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 95)]));
           }
         }
       }
-      for (int i1_inner = 0; i1_inner < 16; ++i1_inner) {
-        compute[(((((int)blockIdx.x) * 784) + (i1_inner * 49)) + ((int)threadIdx.x))] = max((conv2d_nchw[i1_inner] + bias[((((int)blockIdx.x) * 16) + i1_inner)]), 0.000000e+00f);
+      for (int i1_inner = 0; i1_inner < 2; ++i1_inner) {
+        for (int i2_inner = 0; i2_inner < 7; ++i2_inner) {
+          compute[(((((((int)blockIdx.x) * 1568) + ((((int)threadIdx.x) / 7) * 98)) + (i1_inner * 49)) + (i2_inner * 7)) + (((int)threadIdx.x) % 7))] = max((conv2d_nchw[((i1_inner * 7) + i2_inner)] + bias[(((((int)blockIdx.x) * 32) + ((((int)threadIdx.x) / 7) * 2)) + i1_inner)]), 0.000000e+00f);
+        }
       }
     }
 
@@ -940,7 +783,7 @@ In the example below we resume the status and do more 5 trials.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 2 minutes  22.038 seconds)
+   **Total running time of the script:** ( 2 minutes  31.485 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py:
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 aae888a25..bc80bdc41 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
@@ -614,7 +614,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)  
-      10.0719      10.0476      10.1251      10.0430       0.0376   
+       9.8670       9.8753       9.8780       9.8477       0.0137   
                
 
 
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 5e916642b..2bdb09c92 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
@@ -633,7 +633,7 @@ so we can read the log file and load the best schedules.
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      753.7759     755.2016     755.7372     750.3888      2.4050   
+      806.8567     808.5949     811.0921     800.8830      4.3453   
                
 
 
@@ -658,7 +658,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  19.370 seconds)
+   **Total running time of the script:** ( 1 minutes  25.057 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_network_x86.py:
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_sparse_x86.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_sparse_x86.rst.txt
index c9ebaeadb..acb4a31a5 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_sparse_x86.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_sparse_x86.rst.txt
@@ -362,80 +362,75 @@ layout transformation, parallelization, vectorization, unrolling, and operator f
                  placeholder_4: Buffer(placeholder_14: Pointer(float32), float32, [65536], []),
                  compute: Buffer(compute_2: Pointer(float32), float32, [65536], [])}
       buffer_map = {placeholder_5: placeholder, placeholder_6: placeholder_1, placeholder_7: placeholder_2, placeholder_8: placeholder_3, placeholder_9: placeholder_4, compute_1: compute}
-      preflattened_buffer_map = {compute_1: compute_3: Buffer(compute_2, float32, [128, 512], []), placeholder_8: placeholder_15: Buffer(placeholder_13, int32, [33], []), placeholder_6: placeholder_16: Buffer(placeholder_11, float32, [4916, 16, 1], []), placeholder_7: placeholder_17: Buffer(placeholder_12, int32, [4916], []), placeholder_9: placeholder_18: Buffer(placeholder_14, float32, [128, 512], []), placeholder_5: placeholder_19: Buffer(placeholder_10, float32, [128, 256], [])} {
-      for (i0.outer.i1.outer.fused: int32, 0, 16) "parallel" {
-        allocate(compute_4: Pointer(global float32), float32, [4096]), storage_scope = global {
+      preflattened_buffer_map = {placeholder_7: placeholder_15: Buffer(placeholder_12, int32, [4916], []), placeholder_6: placeholder_16: Buffer(placeholder_11, float32, [4916, 16, 1], []), compute_1: compute_3: Buffer(compute_2, float32, [128, 512], []), placeholder_8: placeholder_17: Buffer(placeholder_13, int32, [33], []), placeholder_5: placeholder_18: Buffer(placeholder_10, float32, [128, 256], []), placeholder_9: placeholder_19: Buffer(placeholder_14, float32, [128, 512], [])} {
+      for (i0.outer.i1.outer.fused: int32, 0, 32) "parallel" {
+        allocate(compute_4: Pointer(global float32), float32, [2048]), storage_scope = global {
           for (i.outer.inner: int32, 0, 2) {
-            for (nb_j.inner: int32, 0, 2) {
-              for (i.inner.init: int32, 0, 64) {
-                let cse_var_1: int32 = (((i.outer.inner*2048) + (i.inner.init*32)) + (nb_j.inner*16))
-                 {
-                  compute_5: Buffer(compute_4, float32, [4096], [])[cse_var_1] = 0f32
-                  compute_5[(cse_var_1 + 1)] = 0f32
-                  compute_5[(cse_var_1 + 2)] = 0f32
-                  compute_5[(cse_var_1 + 3)] = 0f32
-                  compute_5[(cse_var_1 + 4)] = 0f32
-                  compute_5[(cse_var_1 + 5)] = 0f32
-                  compute_5[(cse_var_1 + 6)] = 0f32
-                  compute_5[(cse_var_1 + 7)] = 0f32
-                  compute_5[(cse_var_1 + 8)] = 0f32
-                  compute_5[(cse_var_1 + 9)] = 0f32
-                  compute_5[(cse_var_1 + 10)] = 0f32
-                  compute_5[(cse_var_1 + 11)] = 0f32
-                  compute_5[(cse_var_1 + 12)] = 0f32
-                  compute_5[(cse_var_1 + 13)] = 0f32
-                  compute_5[(cse_var_1 + 14)] = 0f32
-                  compute_5[(cse_var_1 + 15)] = 0f32
-                }
+            for (i.inner.init: int32, 0, 64) {
+              let cse_var_1: int32 = ((i.outer.inner*1024) + (i.inner.init*16))
+               {
+                compute_5: Buffer(compute_4, float32, [2048], [])[cse_var_1] = 0f32
+                compute_5[(cse_var_1 + 1)] = 0f32
+                compute_5[(cse_var_1 + 2)] = 0f32
+                compute_5[(cse_var_1 + 3)] = 0f32
+                compute_5[(cse_var_1 + 4)] = 0f32
+                compute_5[(cse_var_1 + 5)] = 0f32
+                compute_5[(cse_var_1 + 6)] = 0f32
+                compute_5[(cse_var_1 + 7)] = 0f32
+                compute_5[(cse_var_1 + 8)] = 0f32
+                compute_5[(cse_var_1 + 9)] = 0f32
+                compute_5[(cse_var_1 + 10)] = 0f32
+                compute_5[(cse_var_1 + 11)] = 0f32
+                compute_5[(cse_var_1 + 12)] = 0f32
+                compute_5[(cse_var_1 + 13)] = 0f32
+                compute_5[(cse_var_1 + 14)] = 0f32
+                compute_5[(cse_var_1 + 15)] = 0f32
               }
-              for (elem_idx: int32, 0, let cse_var_2: int32 = ((i0.outer.i1.outer.fused*2) + nb_j.inner) in (placeholder_3[(cse_var_2 + 1)] - placeholder_3[cse_var_2])) {
-                for (i.inner: int32, 0, 64) {
-                  let cse_var_21: int32 = (elem_idx*16)
-                  let cse_var_20: int32 = ((i0.outer.i1.outer.fused*2) + nb_j.inner)
-                  let cse_var_19: int32 = ((i.outer.inner*16384) + (i.inner*256))
-                  let cse_var_18: int32 = (((i.outer.inner*2048) + (i.inner*32)) + (nb_j.inner*16))
-                  let cse_var_17: int32 = (cse_var_18 + 1)
-                  let cse_var_16: int32 = (cse_var_18 + 11)
-                  let cse_var_15: int32 = (cse_var_18 + 12)
-                  let cse_var_14: int32 = (cse_var_18 + 13)
-                  let cse_var_13: int32 = (cse_var_18 + 14)
-                  let cse_var_12: int32 = (cse_var_18 + 15)
-                  let cse_var_11: int32 = (cse_var_18 + 2)
-                  let cse_var_10: int32 = (cse_var_18 + 3)
-                  let cse_var_9: int32 = (cse_var_18 + 4)
-                  let cse_var_8: int32 = (cse_var_18 + 5)
-                  let cse_var_7: int32 = (cse_var_18 + 6)
-                  let cse_var_6: int32 = (cse_var_18 + 7)
-                  let cse_var_5: int32 = (cse_var_18 + 8)
-                  let cse_var_4: int32 = (cse_var_18 + 9)
-                  let cse_var_3: int32 = (cse_var_18 + 10)
-                   {
-                    compute_5[cse_var_18] = (compute_5[cse_var_18] + (placeholder_1[((placeholder_3[cse_var_20]*16) + cse_var_21)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_17] = (compute_5[cse_var_17] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 1)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_11] = (compute_5[cse_var_11] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 2)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_10] = (compute_5[cse_var_10] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 3)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_9] = (compute_5[cse_var_9] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 4)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_8] = (compute_5[cse_var_8] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 5)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_7] = (compute_5[cse_var_7] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 6)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_6] = (compute_5[cse_var_6] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 7)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_5] = (compute_5[cse_var_5] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 8)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_4] = (compute_5[cse_var_4] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 9)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_3] = (compute_5[cse_var_3] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 10)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_16] = (compute_5[cse_var_16] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 11)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_15] = (compute_5[cse_var_15] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 12)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_14] = (compute_5[cse_var_14] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 13)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_13] = (compute_5[cse_var_13] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 14)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_5[cse_var_12] = (compute_5[cse_var_12] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 15)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                  }
+            }
+            for (elem_idx: int32, 0, (placeholder_3[(i0.outer.i1.outer.fused + 1)] - placeholder_3[i0.outer.i1.outer.fused])) {
+              for (i.inner: int32, 0, 64) {
+                let cse_var_19: int32 = (elem_idx*16)
+                let cse_var_18: int32 = ((i.outer.inner*16384) + (i.inner*256))
+                let cse_var_17: int32 = ((i.outer.inner*1024) + (i.inner*16))
+                let cse_var_16: int32 = (cse_var_17 + 1)
+                let cse_var_15: int32 = (cse_var_17 + 11)
+                let cse_var_14: int32 = (cse_var_17 + 12)
+                let cse_var_13: int32 = (cse_var_17 + 13)
+                let cse_var_12: int32 = (cse_var_17 + 14)
+                let cse_var_11: int32 = (cse_var_17 + 15)
+                let cse_var_10: int32 = (cse_var_17 + 2)
+                let cse_var_9: int32 = (cse_var_17 + 3)
+                let cse_var_8: int32 = (cse_var_17 + 4)
+                let cse_var_7: int32 = (cse_var_17 + 5)
+                let cse_var_6: int32 = (cse_var_17 + 6)
+                let cse_var_5: int32 = (cse_var_17 + 7)
+                let cse_var_4: int32 = (cse_var_17 + 8)
+                let cse_var_3: int32 = (cse_var_17 + 9)
+                let cse_var_2: int32 = (cse_var_17 + 10)
+                 {
+                  compute_5[cse_var_17] = (compute_5[cse_var_17] + (placeholder_1[((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_16] = (compute_5[cse_var_16] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 1)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_10] = (compute_5[cse_var_10] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 2)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_9] = (compute_5[cse_var_9] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 3)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_8] = (compute_5[cse_var_8] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 4)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_7] = (compute_5[cse_var_7] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 5)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_6] = (compute_5[cse_var_6] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 6)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_5] = (compute_5[cse_var_5] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 7)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_4] = (compute_5[cse_var_4] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 8)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_3] = (compute_5[cse_var_3] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 9)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_2] = (compute_5[cse_var_2] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 10)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_15] = (compute_5[cse_var_15] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 11)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_14] = (compute_5[cse_var_14] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 12)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_13] = (compute_5[cse_var_13] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 13)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_12] = (compute_5[cse_var_12] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 14)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+                  compute_5[cse_var_11] = (compute_5[cse_var_11] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 15)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
                 }
               }
             }
           }
           for (i0.inner: int32, 0, 128) {
-            for (i1.inner: int32, 0, 32) {
-              let cse_var_22: int32 = (((i0.inner*512) + (i0.outer.i1.outer.fused*32)) + i1.inner)
-              compute[cse_var_22] = max((compute_5[((i0.inner*32) + i1.inner)] + placeholder_4[cse_var_22]), 0f32)
-            }
+            let cse_var_20: int32 = ((i0.inner*512) + (i0.outer.i1.outer.fused*16))
+            compute[ramp(cse_var_20, 1, 16)] = max((compute_5[ramp((i0.inner*16), 1, 16)] + placeholder_4[ramp(cse_var_20, 1, 16)]), broadcast(0f32, 16))
           }
         }
       }
@@ -489,7 +484,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 1.843 ms
+    Execution time of this operator: 1.836 ms
 
 
 
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 97586ba86..a20cd5af9 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,10 +5,10 @@
 
 Computation times
 =================
-**00:43.212** total execution time for **how_to_tune_with_autotvm** files:
+**00:45.368** total execution time for **how_to_tune_with_autotvm** files:
 
-- **00:42.348**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)
-- **00:00.221**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_mobile_gpu.py` (``tune_relay_mobile_gpu.py``)
-- **00:00.219**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)
-- **00:00.215**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)
-- **00:00.209**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)
+- **00:44.411**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)
+- **00:00.253**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)
+- **00:00.235**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_mobile_gpu.py` (``tune_relay_mobile_gpu.py``)
+- **00:00.235**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)
+- **00:00.234**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)
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 027d1ef49..1ba96c340 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
@@ -859,8 +859,8 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 854, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 4, 32]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 1, 128]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,2885496
-    No: 6   GFLOPS: 42.24/42.24     result: MeasureResult(costs=(0.005480043052631579,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.5878784656524658, timestamp=1651674735.2251027)       [('tile_f', [-1, 1, 1, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 4, 4]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,3754080
-    No: 7   GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 6   GFLOPS: 95.22/95.22     result: MeasureResult(costs=(0.0024311252708333333,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.6658709049224854, timestamp=1651701422.3290932)      [('tile_f', [-1, 1, 1, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 4, 4]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,3754080
+    No: 7   GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common
@@ -983,7 +983,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 854, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 1, 16, 32]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 256, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,6225319
-    No: 8   GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 8   GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common
@@ -1106,7 +1106,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 854, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 2, 1, 32]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 8, 64]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,943546
-    No: 9   GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 9   GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common
@@ -1229,7 +1229,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 854, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 16, 4]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 16, 32]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,2868708
-    No: 10  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 10  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 142, in build
         res = future.result()
       File "/usr/lib/python3.7/concurrent/futures/_base.py", line 435, in result
@@ -1247,7 +1247,7 @@ for this template
     TimeoutError
 
             [('tile_f', [-1, 32, 2, 4]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 4, 2]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4691833
-    No: 11  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 11  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common
@@ -1370,7 +1370,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 854, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 1, 2, 64]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 4, 4]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,1042124
-    No: 12  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 12  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common
@@ -1493,7 +1493,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 854, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 32, 1, 4]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 32, 16]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,10013405
-    No: 13  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 13  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common
@@ -1616,7 +1616,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 854, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 8, 8, 2]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 4, 32]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,6732082
-    No: 14  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 14  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common
@@ -1739,7 +1739,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 854, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 2, 4, 32]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 4, 128]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7536735
-    No: 15  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 15  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common
@@ -1862,7 +1862,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 854, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 2, 1, 4]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 128, 4]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,482121
-    No: 16  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 16  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common
@@ -1985,7 +1985,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 854, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 2, 1, 16]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 32, 8]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,2824525
-    No: 17  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 17  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common
@@ -2108,7 +2108,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 854, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 64, 1, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 8, 8]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4559286
-    No: 18  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 18  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common
@@ -2231,7 +2231,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 854, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 1, 32, 16]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 1, 512]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9677544
-    No: 19  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+    No: 19  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 721, in __call__
         yield remote, remote.load_module(os.path.split(build_result.filename)[1])
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 685, in run_through_rpc
@@ -2319,7 +2319,7 @@ for this template
       15: _PyEval_EvalFrameDefault
       14: 0x0000000000537c30
       13: _PyObject_FastCallKeywords
-      12: 0x00007f07f3bebfa2
+      12: 0x00007efce0994fa2
       11: _ctypes_callproc
       10: ffi_call
       9: ffi_call_unix64
@@ -2384,7 +2384,7 @@ for this template
       21: _PyFunction_FastCallKeywords
       20: _PyEval_EvalFrameDefault
       19: _PyFunction_FastCall      [('tile_f', [-1, 8, 2, 16]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 1, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,6390073
-    No: 20  GFLOPS: 141.52/141.52   result: MeasureResult(costs=(0.0016358666935483868,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.1214752197265625, timestamp=1651674761.2399213)      [('tile_f', [-1, 1, 4, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9881539
+    No: 20  GFLOPS: 145.02/145.02   result: MeasureResult(costs=(0.00159629946,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.4468486309051514, timestamp=1651701448.3761618)      [('tile_f', [-1, 1, 4, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9881539
 
 
 
@@ -2437,7 +2437,7 @@ and measure running time.
 
     Best config:
     [('tile_f', [-1, 1, 4, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9881539
-    Time cost of this operator: 0.002050
+    Time cost of this operator: 0.001988
 
 
 
diff --git a/docs/_sources/how_to/tune_with_autotvm/tune_relay_cuda.rst.txt b/docs/_sources/how_to/tune_with_autotvm/tune_relay_cuda.rst.txt
index 935221dd2..9c9c4678e 100644
--- a/docs/_sources/how_to/tune_with_autotvm/tune_relay_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autotvm/tune_relay_cuda.rst.txt
@@ -164,7 +164,7 @@ Before tuning, we apply some configurations.
 
  .. code-block:: none
 
-    /workspace/python/tvm/target/target.py:288: UserWarning: Try specifying cuda arch by adding 'arch=sm_xx' to your target.
+    /workspace/python/tvm/target/target.py:347: UserWarning: Try specifying cuda arch by adding 'arch=sm_xx' to your target.
       warnings.warn("Try specifying cuda arch by adding 'arch=sm_xx' to your target.")
 
 
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 d144f95c1..e81b8a028 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
@@ -292,10 +292,10 @@ Timing the untuned program
     ########## Build without Autotuning ##########
     Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  
     ---------                                     ---                                           --------  -------  -----              ------  -------  
-    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  316.3     98.758   (1, 2, 10, 10, 3)  2       1        
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       3.07      0.958    (1, 6, 10, 10)     1       1        
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.908     0.284    (1, 1, 10, 10, 3)  1       1        
-    Total_time                                    -                                             320.278   -        -                  -       -        
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  311.6     98.745   (1, 2, 10, 10, 3)  2       1        
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       3.058     0.969    (1, 6, 10, 10)     1       1        
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.902     0.286    (1, 1, 10, 10, 3)  1       1        
+    Total_time                                    -                                             315.559   -        -                  -       -        
 
 
 
@@ -357,10 +357,10 @@ Timing the tuned program
     ########## Build with Autotuning ##########
     Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  
     ---------                                     ---                                           --------  -------  -----              ------  -------  
-    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  90.45     97.16    (1, 6, 10, 10, 1)  2       1        
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.738     1.867    (1, 6, 10, 10)     1       1        
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.906     0.974    (1, 1, 10, 10, 3)  1       1        
-    Total_time                                    -                                             93.094    -        -                  -       -        
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  206.7     98.597   (1, 1, 10, 10, 6)  2       1        
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.01      0.959    (1, 6, 10, 10)     1       1        
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.931     0.444    (1, 3, 10, 10, 1)  1       1        
+    Total_time                                    -                                             209.641   -        -                  -       -        
 
 
 
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 9a47c6f4b..ac99dfaae 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,10 +5,10 @@
 
 Computation times
 =================
-**00:42.736** total execution time for **how_to_work_with_microtvm** files:
+**00:47.764** total execution time for **how_to_work_with_microtvm** files:
 
-- **00:38.753**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)
-- **00:03.373**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)
-- **00:00.232**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_ethosu.py` (``micro_ethosu.py``)
-- **00:00.192**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_reference_vm.py` (``micro_reference_vm.py``)
-- **00:00.185**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_tvmc.py` (``micro_tvmc.py``)
+- **00:43.313**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)
+- **00:03.779**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)
+- **00:00.238**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_tvmc.py` (``micro_tvmc.py``)
+- **00:00.217**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_ethosu.py` (``micro_ethosu.py``)
+- **00:00.217**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_reference_vm.py` (``micro_reference_vm.py``)
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 cdbc1747a..b6903f10d 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,8 +5,8 @@
 
 Computation times
 =================
-**00:05.617** total execution time for **how_to_work_with_relay** files:
+**00:09.615** total execution time for **how_to_work_with_relay** files:
 
-- **00:04.034**: :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)
-- **00:01.366**: :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)
-- **00:00.217**: :ref:`sphx_glr_how_to_work_with_relay_using_relay_viz.py` (``using_relay_viz.py``)
+- **00:07.481**: :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)
+- **00:01.898**: :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)
+- **00:00.236**: :ref:`sphx_glr_how_to_work_with_relay_using_relay_viz.py` (``using_relay_viz.py``)
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 5acfa6145..3fa1802a5 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,13 +5,13 @@
 
 Computation times
 =================
-**00:05.148** total execution time for **how_to_work_with_schedules** files:
+**00:06.065** total execution time for **how_to_work_with_schedules** files:
 
-- **00:01.963**: :ref:`sphx_glr_how_to_work_with_schedules_intrin_math.py` (``intrin_math.py``)
-- **00:00.835**: :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)
-- **00:00.693**: :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)
-- **00:00.682**: :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)
-- **00:00.291**: :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)
-- **00:00.242**: :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``)
-- **00:00.223**: :ref:`sphx_glr_how_to_work_with_schedules_tuple_inputs.py` (``tuple_inputs.py``)
-- **00:00.218**: :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)
+- **00:02.204**: :ref:`sphx_glr_how_to_work_with_schedules_intrin_math.py` (``intrin_math.py``)
+- **00:01.203**: :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)
+- **00:00.778**: :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)
+- **00:00.777**: :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)
+- **00:00.338**: :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)
+- **00:00.265**: :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``)
+- **00:00.259**: :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)
+- **00:00.241**: :ref:`sphx_glr_how_to_work_with_schedules_tuple_inputs.py` (``tuple_inputs.py``)
diff --git a/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt b/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt
index 475bf5cf5..9d9da17c4 100644
--- a/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt
@@ -318,7 +318,7 @@ The importing needs to happen before the tensorized GEMV being executed.
                  C: Buffer(C_2: Pointer(float32), float32, [524288], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C}
       preflattened_buffer_map = {A_1: A_3: Buffer(A_2, float32, [1024, 64], []), B_1: B_3: Buffer(B_2, float32, [512, 64], []), C_1: C_3: Buffer(C_2, float32, [1024, 512], [])} {
-      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpft4wlm_f/input0.cc'\nsource_filename = \"/tmp/tmpft4wlm_f/input0.cc\"\ntarget datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64-pc-linux-gnu\"\n\n; Function Attrs: noinline nounwind optnone uwtable\ndefine dso_local i32 @gemv_update(float*, float*, float*, i32, i32, i32) #0 {\n  %7 = alloca float*, align 8\n  %8 = alloca float*, align 8\n  %9 = alloca floa [...]
+      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmp8uh2wupo/input0.cc'\nsource_filename = \"/tmp/tmp8uh2wupo/input0.cc\"\ntarget datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64-pc-linux-gnu\"\n\n; Function Attrs: noinline nounwind optnone uwtable\ndefine dso_local i32 @gemv_update(float*, float*, float*, i32, i32, i32) #0 {\n  %7 = alloca float*, align 8\n  %8 = alloca float*, align 8\n  %9 = alloca floa [...]
       for (i, 0, 1024) {
         for (j.outer: int32, 0, 32) {
           @tir.call_extern("gemv_update", @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), C_2, ((i*512) + (j.outer*16)), 16, 2, dtype=handle), @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), A_2, (i*64), 64, 1, dtype=handle), @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), B_2, (j.outer*1024), 1024, 1, dtype=handle), 16, 64, 64, dtype=int32)
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 8617b1d78..511dcbce8 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,7 +5,7 @@
 
 Computation times
 =================
-**00:20.037** total execution time for **topic_vta_tutorials_autotvm** files:
+**00:22.958** total execution time for **topic_vta_tutorials_autotvm** files:
 
-- **00:19.847**: :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``)
-- **00:00.190**: :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_alu_vta.py` (``tune_alu_vta.py``)
+- **00:22.733**: :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``)
+- **00:00.225**: :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_alu_vta.py` (``tune_alu_vta.py``)
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 37916f9d0..5e8e923a4 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt
@@ -261,11 +261,11 @@ The compilation steps are:
 
  .. code-block:: none
 
-    /workspace/python/tvm/relay/build_module.py:439: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+    /workspace/python/tvm/relay/build_module.py:431: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
       DeprecationWarning,
     /workspace/vta/tutorials/frontend/deploy_classification.py:213: 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.
       relay_prog, target=tvm.target.Target(target, host=env.target_host), params=params
-    resnet18_v1 inference graph built in 21.10s!
+    resnet18_v1 inference graph built in 25.10s!
 
 
 
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 be4d728c2..73899c79e 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
@@ -299,9 +299,9 @@ The compilation steps are:
 
  .. code-block:: none
 
-    /workspace/python/tvm/relay/build_module.py:439: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+    /workspace/python/tvm/relay/build_module.py:431: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
       DeprecationWarning,
-    yolov3-tiny inference graph built in 14.64s!
+    yolov3-tiny inference graph built in 17.13s!
 
 
 
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 181ce9724..ee2e9c27d 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,7 +5,7 @@
 
 Computation times
 =================
-**01:30.341** total execution time for **topic_vta_tutorials_frontend** files:
+**01:34.808** total execution time for **topic_vta_tutorials_frontend** files:
 
-- **00:48.843**: :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``)
-- **00:41.498**: :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``)
+- **00:49.394**: :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``)
+- **00:45.415**: :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``)
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 8efd96926..b2f5e54f7 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,7 +5,7 @@
 
 Computation times
 =================
-**00:03.397** total execution time for **topic_vta_tutorials_optimize** files:
+**00:03.921** total execution time for **topic_vta_tutorials_optimize** files:
 
-- **00:02.895**: :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)
-- **00:00.502**: :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``)
+- **00:03.321**: :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)
+- **00:00.600**: :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``)
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 a46aa934f..9048326f3 100644
--- a/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
@@ -5,7 +5,7 @@
 
 Computation times
 =================
-**00:00.936** total execution time for **topic_vta_tutorials** files:
+**00:01.082** total execution time for **topic_vta_tutorials** files:
 
-- **00:00.480**: :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``)
-- **00:00.456**: :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``)
+- **00:00.551**: :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``)
+- **00:00.530**: :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``)
diff --git a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
index 2c9ce78fb..44b6e2f2b 100644
--- a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
+++ b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
@@ -306,7 +306,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 93.648 ms
+    Execution time of this operator: 94.118 ms
 
 
 
diff --git a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
index d0ea8cc97..b60b76362 100644
--- a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
+++ b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
@@ -268,7 +268,7 @@ standard deviation.
 
  .. code-block:: none
 
-    {'mean': 489.13385313002436, 'median': 488.91485415006173, 'std': 1.0093729626319448}
+    {'mean': 502.3503507300029, 'median': 502.1625347000054, 'std': 1.0631175008182827}
 
 
 
@@ -482,31 +482,31 @@ the tuning data to.
 
  .. code-block:: none
 
-
    [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  1/25]  Current/Best:    9.08/  23.87 GFLOPS | Progress: (4/10) | 5.28 s
    [Task  1/25]  Current/Best:   11.71/  23.87 GFLOPS | Progress: (8/10) | 9.54 s
    [Task  1/25]  Current/Best:   10.30/  23.87 GFLOPS | Progress: (10/10) | 10.95 s Done.
-
    [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  2/25]  Current/Best:   19.36/  19.36 GFLOPS | Progress: (4/10) | 2.66 s
    [Task  2/25]  Current/Best:    3.53/  21.86 GFLOPS | Progress: (8/10) | 4.57 s
    [Task  2/25]  Current/Best:    4.74/  21.86 GFLOPS | Progress: (10/10) | 5.14 s Done.
-
    [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  3/25]  Current/Best:   17.20/  17.20 GFLOPS | Progress: (4/10) | 2.99 s
    [Task  3/25]  Current/Best:   12.48/  17.20 GFLOPS | Progress: (8/10) | 5.91 s
    [Task  3/25]  Current/Best:   22.61/  22.61 GFLOPS | Progress: (10/10) | 6.64 s Done.
-
    [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  4/25]  Current/Best:    9.69/  16.54 GFLOPS | Progress: (4/10) | 3.50 s
    [Task  4/25]  Current/Best:   11.53/  16.54 GFLOPS | Progress: (8/10) | 6.20 s
    [Task  4/25]  Current/Best:   19.32/  19.32 GFLOPS | Progress: (10/10) | 6.96 s Done.
-
    [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  5/25]  Current/Best:   13.72/  14.85 GFLOPS | Progress: (4/10) | 2.86 s
    [Task  5/25]  Current/Best:   13.73/  22.90 GFLOPS | Progress: (8/10) | 5.90 s
    [Task  5/25]  Current/Best:    5.85/  22.90 GFLOPS | Progress: (10/10) | 6.70 s Done.
-
    [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  6/25]  Current/Best:   14.62/  14.62 GFLOPS | Progress: (4/10) | 3.17 s
    [Task  6/25]  Current/Best:   13.56/  14.62 GFLOPS | Progress: (8/10) | 6.35 s
    [Task  6/25]  Current/Best:   15.01/  15.01 GFLOPS | Progress: (10/10) | 7.28 s Done.
-
    [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  7/25]  Current/Best:    6.51/  19.54 GFLOPS | Progress: (4/10) | 3.22 s
    [Task  7/25]  Current/Best:   13.98/  19.54 GFLOPS | Progress: (8/10) | 5.58 s
    [Task  7/25]  Current/Best:   10.48/  19.54 GFLOPS | Progress: (10/10) | 7.20 s Done.
-
    [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  8/25]  Current/Best:    9.40/  10.37 GFLOPS | Progress: (4/10) | 10.33 s
    [Task  8/25]  Current/Best:   14.56/  19.27 GFLOPS | Progress: (8/10) | 12.70 s
    [Task  8/25]  Current/Best:    6.58/  19.27 GFLOPS | Progress: (10/10) | 21.81 s Done.
-
    [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  9/25]  Current/Best:   16.02/  16.02 GFLOPS | Progress: (4/10) | 3.64 s
    [Task  9/25]  Current/Best:   11.79/  22.84 GFLOPS | Progress: (8/10) | 4.91 s
    [Task  9/25]  Current/Best:   19.14/  22.84 GFLOPS | Progress: (10/10) | 5.51 s Done.
-
    [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 10/25]  Current/Best:   11.99/  15.32 GFLOPS | Progress: (4/10) | 2.71 s
    [Task 10/25]  Current/Best:    6.35/  15.59 GFLOPS | Progress: (8/10) | 4.35 s
    [Task 10/25]  Current/Best:   14.43/  15.59 GFLOPS | Progress: (10/10) | 5.60 s Done.
-
    [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 11/25]  Current/Best:   20.88/  21.05 GFLOPS | Progress: (4/10) | 3.97 s
    [Task 11/25]  Current/Best:   12.19/  21.05 GFLOPS | Progress: (8/10) | 5.91 s
    [Task 11/25]  Current/Best:   11.82/  21.05 GFLOPS | Progress: (10/10) | 6.98 s Done.
-
    [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 12/25]  Current/Best:   10.58/  15.23 GFLOPS | Progress: (4/10) | 7.43 s
    [Task 12/25]  Current/Best:   16.39/  16.39 GFLOPS | Progress: (8/10) | 10.42 s
    [Task 12/25]  Current/Best:   15.94/  22.45 GFLOPS | Progress: (10/10) | 11.13 s Done.
-
    [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 13/25]  Current/Best:   11.41/  21.37 GFLOPS | Progress: (4/10) | 4.48 s
    [Task 13/25]  Current/Best:   11.26/  21.37 GFLOPS | Progress: (8/10) | 8.88 s
    [Task 13/25]  Current/Best:   10.88/  21.37 GFLOPS | Progress: (10/10) | 11.00 s Done.
-
    [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 14/25]  Current/Best:   10.56/  14.19 GFLOPS | Progress: (4/10) | 2.68 s
    [Task 14/25]  Current/Best:   13.96/  19.14 GFLOPS | Progress: (8/10) | 4.76 s
    [Task 14/25]  Current/Best:   13.27/  19.14 GFLOPS | Progress: (10/10) | 5.68 s
    [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 15/25]  Current/Best:    9.28/  19.15 GFLOPS | Progress: (4/10) | 8.04 s
    [Task 15/25]  Current/Best:   17.87/  19.15 GFLOPS | Progress: (8/10) | 9.32 s
    [Task 15/25]  Current/Best:    9.86/  19.15 GFLOPS | Progress: (10/10) | 11.65 s
    [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s Done.
+
    [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  1/25]  Current/Best:    5.75/  14.28 GFLOPS | Progress: (4/10) | 6.22 s
    [Task  1/25]  Current/Best:   24.09/  24.09 GFLOPS | Progress: (8/10) | 7.84 s
    [Task  1/25]  Current/Best:   16.79/  24.09 GFLOPS | Progress: (10/10) | 8.61 s Done.
+
    [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  2/25]  Current/Best:   14.40/  17.41 GFLOPS | Progress: (4/10) | 2.30 s
    [Task  2/25]  Current/Best:   11.32/  22.04 GFLOPS | Progress: (8/10) | 4.08 s
    [Task  2/25]  Current/Best:   14.82/  22.04 GFLOPS | Progress: (10/10) | 5.04 s Done.
+
    [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  3/25]  Current/Best:    6.21/  23.35 GFLOPS | Progress: (4/10) | 3.10 s
    [Task  3/25]  Current/Best:   19.24/  24.01 GFLOPS | Progress: (8/10) | 5.39 s
    [Task  3/25]  Current/Best:   10.64/  24.01 GFLOPS | Progress: (10/10) | 6.33 s Done.
+
    [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  4/25]  Current/Best:   16.12/  16.12 GFLOPS | Progress: (4/10) | 7.07 s
    [Task  4/25]  Current/Best:   11.94/  16.12 GFLOPS | Progress: (8/10) | 9.17 s
    [Task  4/25]  Current/Best:    9.83/  16.12 GFLOPS | Progress: (10/10) | 11.82 s Done.
+
    [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  5/25]  Current/Best:   17.47/  17.68 GFLOPS | Progress: (4/10) | 2.88 s
    [Task  5/25]  Current/Best:    4.58/  18.16 GFLOPS | Progress: (8/10) | 4.37 s
    [Task  5/25]  Current/Best:    8.13/  18.16 GFLOPS | Progress: (10/10) | 5.33 s Done.
+
    [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  6/25]  Current/Best:   13.19/  17.77 GFLOPS | Progress: (4/10) | 3.36 s
    [Task  6/25]  Current/Best:   11.77/  19.71 GFLOPS | Progress: (8/10) | 7.11 s
    [Task  6/25]  Current/Best:   13.92/  19.71 GFLOPS | Progress: (10/10) | 7.93 s Done.
+
    [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  7/25]  Current/Best:   13.86/  20.38 GFLOPS | Progress: (4/10) | 3.16 s
    [Task  7/25]  Current/Best:   18.19/  20.38 GFLOPS | Progress: (8/10) | 5.14 s
    [Task  7/25]  Current/Best:   15.03/  20.38 GFLOPS | Progress: (10/10) | 6.13 s Done.
+
    [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  8/25]  Current/Best:    7.85/  13.30 GFLOPS | Progress: (4/10) | 4.68 s
    [Task  8/25]  Current/Best:    9.81/  13.30 GFLOPS | Progress: (8/10) | 13.07 s
    [Task  8/25]  Current/Best:    8.96/  13.30 GFLOPS | Progress: (10/10) | 16.39 s Done.
+
    [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  9/25]  Current/Best:    4.79/  22.93 GFLOPS | Progress: (4/10) | 2.88 s
    [Task  9/25]  Current/Best:   11.44/  22.93 GFLOPS | Progress: (8/10) | 4.60 s
    [Task  9/25]  Current/Best:    6.38/  22.93 GFLOPS | Progress: (10/10) | 5.33 s Done.
+
    [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 10/25]  Current/Best:   10.58/  15.68 GFLOPS | Progress: (4/10) | 2.50 s
    [Task 10/25]  Current/Best:    6.53/  19.11 GFLOPS | Progress: (8/10) | 5.07 s
    [Task 10/25]  Current/Best:    9.98/  19.11 GFLOPS | Progress: (10/10) | 6.18 s Done.
+
    [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 11/25]  Current/Best:   20.13/  20.13 GFLOPS | Progress: (4/10) | 2.79 s
    [Task 11/25]  Current/Best:   23.10/  23.10 GFLOPS | Progress: (8/10) | 6.22 s
    [Task 11/25]  Current/Best:    9.55/  23.10 GFLOPS | Progress: (10/10) | 7.35 s Done.
+
    [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 12/25]  Current/Best:   10.82/  16.41 GFLOPS | Progress: (4/10) | 5.70 s
    [Task 12/25]  Current/Best:   15.68/  16.41 GFLOPS | Progress: (8/10) | 8.42 s
    [Task 12/25]  Current/Best:   16.79/  16.79 GFLOPS | Progress: (10/10) | 9.60 s Done.
+
    [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 13/25]  Current/Best:   13.80/  20.68 GFLOPS | Progress: (4/10) | 4.96 s
    [Task 13/25]  Current/Best:   18.52/  20.68 GFLOPS | Progress: (8/10) | 7.85 s
    [Task 13/25]  Current/Best:    3.10/  20.68 GFLOPS | Progress: (10/10) | 9.69 s Done.
+
    [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 14/25]  Current/Best:   18.73/  20.43 GFLOPS | Progress: (4/10) | 3.01 s
    [Task 14/25]  Current/Best:    8.61/  20.43 GFLOPS | Progress: (8/10) | 9.32 s
    [Task 14/25]  Current/Best:   17.48/  20.43 GFLOPS | Progress: (10/10) | 10.31 s
    [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 15/25]  Current/Best:    9.29/  17.62 GFLOPS | Progress: (4/10) | 6.05 s
    [Task 15/25]  Current/Best:    9.62/  17.92 GFLOPS | Progress: (8/10) | 9.06 s Done.
+
    [Task 15/25]  Current/Best:   12.24/  17.92 GFLOPS | Progress: (10/10) | 10.41 s Done.
+
    [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 16/25]  Current/Best:   15.91/  17.20 GFLOPS | Progress: (4/10) | 3.68 s
    [Task 16/25]  Current/Best:   13.68/  20.66 GFLOPS | Progress: (8/10) | 5.40 s
    [Task 16/25]  Current/Best:    9.57/  20.66 GFLOPS | Progress: (10/10) | 7.89 s Done.
+
    [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 17/25]  Current/Best:    6.14/  14.58 GFLOPS | Progress: (4/10) | 3.81 s
    [Task 17/25]  Current/Best:   16.11/  17.47 GFLOPS | Progress: (8/10) | 5.80 s
    [Task 17/25]  Current/Best:   20.92/  20.92 GFLOPS | Progress: (10/10) | 6.65 s Done.
+
    [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 18/25]  Current/Best:   10.05/  16.34 GFLOPS | Progress: (4/10) | 3.27 s
    [Task 18/25]  Current/Best:   11.72/  16.34 GFLOPS | Progress: (8/10) | 6.88 s
    [Task 18/25]  Current/Best:   14.92/  16.34 GFLOPS | Progress: (10/10) | 7.89 s Done.
+
    [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 19/25]  Current/Best:   16.42/  16.42 GFLOPS | Progress: (4/10) | 4.51 s
    [Task 19/25]  Current/Best:   10.61/  16.42 GFLOPS | Progress: (8/10) | 6.72 s
    [Task 19/25]  Current/Best:   16.80/  16.80 GFLOPS | Progress: (10/10) | 7.69 s Done.
+
    [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 20/25]  Current/Best:   20.67/  20.67 GFLOPS | Progress: (4/10) | 3.92 s
    [Task 20/25]  Current/Best:   12.15/  20.67 GFLOPS | Progress: (8/10) | 6.09 s
    [Task 20/25]  Current/Best:   10.09/  20.67 GFLOPS | Progress: (10/10) | 7.00 s Done.
+
    [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 21/25]  Current/Best:    7.42/  20.39 GFLOPS | Progress: (4/10) | 2.64 s
    [Task 21/25]  Current/Best:   22.58/  22.58 GFLOPS | Progress: (8/10) | 4.37 s
    [Task 21/25]  Current/Best:   15.71/  22.58 GFLOPS | Progress: (10/10) | 5.55 s
    [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 22/25]  Current/Best:    5.97/  17.32 GFLOPS | Progress: (4/10) | 4.89 s
    [Task 22/25]  Current/Best:   11.08/  18.32 GFLOPS | Progress: (8/10) | 7.69 s
    [Task 22/25]  Current/Best:   16.99/  18.32 GFLOPS | Progress: (10/10) | 8.32 s Done.
+
    [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 23/25]  Current/Best:    9.33/  14.22 GFLOPS | Progress: (4/10) | 5.03 s
    [Task 23/25]  Current/Best:    9.20/  16.88 GFLOPS | Progress: (8/10) | 7.97 s
    [Task 23/25]  Current/Best:   18.42/  18.42 GFLOPS | Progress: (10/10) | 9.39 s Done.
+
    [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 24/25]  Current/Best:    3.37/   3.37 GFLOPS | Progress: (4/10) | 16.54 s
    [Task 24/25]  Current/Best:    5.91/   8.71 GFLOPS | Progress: (8/10) | 44.35 s
    [Task 24/25]  Current/Best:    2.84/   8.71 GFLOPS | Progress: (10/10) | 51.37 s
    [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s Done.
      Done.
-
    [Task 16/25]  Current/Best:   14.20/  16.74 GFLOPS | Progress: (4/10) | 2.83 s
    [Task 16/25]  Current/Best:   15.62/  16.74 GFLOPS | Progress: (8/10) | 4.93 s
    [Task 16/25]  Current/Best:   14.46/  16.74 GFLOPS | Progress: (10/10) | 6.17 s Done.
-
    [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 17/25]  Current/Best:   10.55/  16.85 GFLOPS | Progress: (4/10) | 3.46 s
    [Task 17/25]  Current/Best:    6.24/  16.85 GFLOPS | Progress: (8/10) | 5.53 s
    [Task 17/25]  Current/Best:    9.42/  18.70 GFLOPS | Progress: (10/10) | 6.60 s Done.
-
    [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 18/25]  Current/Best:   15.20/  15.65 GFLOPS | Progress: (4/10) | 5.45 s
    [Task 18/25]  Current/Best:   17.37/  17.37 GFLOPS | Progress: (8/10) | 8.34 s
    [Task 18/25]  Current/Best:   17.42/  17.42 GFLOPS | Progress: (10/10) | 9.11 s Done.
-
    [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 19/25]  Current/Best:    9.86/  22.80 GFLOPS | Progress: (4/10) | 4.82 s
    [Task 19/25]  Current/Best:   10.11/  22.80 GFLOPS | Progress: (8/10) | 7.98 s
    [Task 19/25]  Current/Best:    3.09/  22.80 GFLOPS | Progress: (10/10) | 9.58 s Done.
-
    [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 20/25]  Current/Best:   17.63/  21.64 GFLOPS | Progress: (4/10) | 2.77 s
    [Task 20/25]  Current/Best:   13.71/  21.64 GFLOPS | Progress: (8/10) | 4.66 s
    [Task 20/25]  Current/Best:   10.30/  21.64 GFLOPS | Progress: (10/10) | 6.17 s Done.
-
    [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 21/25]  Current/Best:   17.88/  17.88 GFLOPS | Progress: (4/10) | 2.92 s
    [Task 21/25]  Current/Best:   19.58/  19.58 GFLOPS | Progress: (8/10) | 4.13 s
    [Task 21/25]  Current/Best:   12.74/  19.58 GFLOPS | Progress: (10/10) | 5.51 s Done.
-
    [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 22/25]  Current/Best:   16.12/  17.48 GFLOPS | Progress: (4/10) | 4.38 s
    [Task 22/25]  Current/Best:   13.67/  17.67 GFLOPS | Progress: (8/10) | 7.38 s
    [Task 22/25]  Current/Best:   15.01/  17.67 GFLOPS | Progress: (10/10) | 8.04 s Done.
-
    [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 23/25]  Current/Best:   18.80/  22.75 GFLOPS | Progress: (4/10) | 3.52 s
    [Task 23/25]  Current/Best:   20.78/  22.75 GFLOPS | Progress: (8/10) | 6.84 s
    [Task 23/25]  Current/Best:   12.20/  22.75 GFLOPS | Progress: (10/10) | 8.57 s Done.
-
    [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 24/25]  Current/Best:    5.57/   8.06 GFLOPS | Progress: (4/10) | 11.89 s
    [Task 24/25]  Current/Best:    2.97/   8.06 GFLOPS | Progress: (8/10) | 68.27 s
    [Task 24/25]  Current/Best:    3.80/   8.06 GFLOPS | Progress: (10/10) | 69.35 s
    [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s Done.
-
    [Task 25/25]  Current/Best:    5.92/   9.76 GFLOPS | Progress: (4/10) | 13.54 s
    [Task 25/25]  Current/Best:    3.55/   9.76 GFLOPS | Progress: (8/10) | 15.01 s
    [Task 25/25]  Current/Best:    8.30/   9.76 GFLOPS | Progress: (10/10) | 299.04 s
+
    [Task 25/25]  Current/Best:    1.53/   5.66 GFLOPS | Progress: (4/10) | 31.92 s
    [Task 25/25]  Current/Best:    2.85/   5.73 GFLOPS | Progress: (8/10) | 49.78 s
    [Task 25/25]  Current/Best:    1.53/   5.73 GFLOPS | Progress: (10/10) | 50.45 s
 
 
 The output from this tuning process will look something like this:
@@ -602,8 +602,8 @@ Verify that the optimized model runs and produces the same results:
 
  .. code-block:: none
 
-    class='n02123045 tabby, tabby cat' with probability=0.621102
-    class='n02123159 tiger cat' with probability=0.356380
+    class='n02123045 tabby, tabby cat' with probability=0.621104
+    class='n02123159 tiger cat' with probability=0.356378
     class='n02124075 Egyptian cat' with probability=0.019712
     class='n02129604 tiger, Panthera tigris' with probability=0.001215
     class='n04040759 radiator' with probability=0.000262
@@ -656,8 +656,8 @@ improvement in comparing the optimized model to the unoptimized model.
 
  .. code-block:: none
 
-    optimized: {'mean': 455.29671436999706, 'median': 455.13899144998504, 'std': 1.5743355271314416}
-    unoptimized: {'mean': 489.13385313002436, 'median': 488.91485415006173, 'std': 1.0093729626319448}
+    optimized: {'mean': 443.23648075000165, 'median': 443.2520545999978, 'std': 1.2965896223192286}
+    unoptimized: {'mean': 502.3503507300029, 'median': 502.1625347000054, 'std': 1.0631175008182827}
 
 
 
@@ -677,7 +677,7 @@ profiling/benchmarking.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 12 minutes  29.970 seconds)
+   **Total running time of the script:** ( 8 minutes  5.560 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 1962dc123..f8889132e 100644
--- a/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
+++ b/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
@@ -235,7 +235,7 @@ device and returns the measured cost. Network overhead is excluded.
 
  .. code-block:: none
 
-    1.235e-07 secs/op
+    1.282e-07 secs/op
 
 
 
diff --git a/docs/_sources/tutorial/intro_topi.rst.txt b/docs/_sources/tutorial/intro_topi.rst.txt
index 7e9dcb253..1d3dbf755 100644
--- a/docs/_sources/tutorial/intro_topi.rst.txt
+++ b/docs/_sources/tutorial/intro_topi.rst.txt
@@ -185,7 +185,7 @@ we can schedule the following series of operations ending with :code:`topi.sum`
 
  .. code-block:: none
 
-    /workspace/python/tvm/target/target.py:288: UserWarning: Try specifying cuda arch by adding 'arch=sm_xx' to your target.
+    /workspace/python/tvm/target/target.py:347: UserWarning: Try specifying cuda arch by adding 'arch=sm_xx' to your target.
       warnings.warn("Try specifying cuda arch by adding 'arch=sm_xx' to your target.")
     @main = primfn(a_1: handle, b_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
@@ -233,7 +233,7 @@ As you can see, scheduled stages of computation have been accumulated and we can
 
  .. code-block:: none
 
-    [stage(a, placeholder(a, 0x28221e40)), stage(b, placeholder(b, 0xa3bc300)), stage(T_add, compute(T_add, body=[(a[ax0, ax1, ax2] + b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min=0, ext=10))], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[(a[ax0, ax1, ax2]*b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min [...]
+    [stage(a, placeholder(a, 0xe3ecd80)), stage(b, placeholder(b, 0xc5ccb80)), stage(T_add, compute(T_add, body=[(a[ax0, ax1, ax2] + b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min=0, ext=10))], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[(a[ax0, ax1, ax2]*b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min= [...]
 
 
 
diff --git a/docs/_sources/tutorial/relay_quick_start.rst.txt b/docs/_sources/tutorial/relay_quick_start.rst.txt
index bc4dcdbd2..0096e846b 100644
--- a/docs/_sources/tutorial/relay_quick_start.rst.txt
+++ b/docs/_sources/tutorial/relay_quick_start.rst.txt
@@ -226,7 +226,7 @@ in this example. Then the machine code will be generated as the module library.
 
  .. code-block:: none
 
-    /workspace/python/tvm/target/target.py:288: UserWarning: Try specifying cuda arch by adding 'arch=sm_xx' to your target.
+    /workspace/python/tvm/target/target.py:347: UserWarning: Try specifying cuda arch by adding 'arch=sm_xx' to your target.
       warnings.warn("Try specifying cuda arch by adding 'arch=sm_xx' to your target.")
 
 
diff --git a/docs/_sources/tutorial/sg_execution_times.rst.txt b/docs/_sources/tutorial/sg_execution_times.rst.txt
index 83c83bc29..22fb840ba 100644
--- a/docs/_sources/tutorial/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorial/sg_execution_times.rst.txt
@@ -5,17 +5,17 @@
 
 Computation times
 =================
-**15:15.558** total execution time for **tutorial** files:
+**10:49.422** total execution time for **tutorial** files:
 
-- **12:29.970**: :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)
-- **00:58.683**: :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)
-- **00:56.533**: :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``)
-- **00:26.142**: :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)
-- **00:22.663**: :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)
-- **00:00.699**: :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)
-- **00:00.542**: :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)
-- **00:00.216**: :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
-- **00:00.029**: :ref:`sphx_glr_tutorial_introduction.py` (``introduction.py``)
-- **00:00.027**: :ref:`sphx_glr_tutorial_install.py` (``install.py``)
-- **00:00.027**: :ref:`sphx_glr_tutorial_tvmc_command_line_driver.py` (``tvmc_command_line_driver.py``)
-- **00:00.027**: :ref:`sphx_glr_tutorial_tvmc_python.py` (``tvmc_python.py``)
+- **08:05.560**: :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)
+- **01:03.169**: :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)
+- **00:50.024**: :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``)
+- **00:27.317**: :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)
+- **00:20.768**: :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)
+- **00:01.374**: :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)
+- **00:00.754**: :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)
+- **00:00.232**: :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
+- **00:00.056**: :ref:`sphx_glr_tutorial_introduction.py` (``introduction.py``)
+- **00:00.056**: :ref:`sphx_glr_tutorial_install.py` (``install.py``)
+- **00:00.056**: :ref:`sphx_glr_tutorial_tvmc_command_line_driver.py` (``tvmc_command_line_driver.py``)
+- **00:00.056**: :ref:`sphx_glr_tutorial_tvmc_python.py` (``tvmc_python.py``)
diff --git a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
index c7786bd43..76ca75c80 100644
--- a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
+++ b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
@@ -243,7 +243,7 @@ helper function to run a profile of the TVM generated code.
 
  .. code-block:: none
 
-    Numpy running time: 0.000008
+    Numpy running time: 0.000007
     naive: 0.000006
 
 
@@ -335,7 +335,7 @@ compile and run this new schedule with the parallel operation applied:
 
  .. code-block:: none
 
-    parallel: 0.000007
+    parallel: 0.000006
 
 
 
@@ -438,10 +438,10 @@ We can now compare the different schedules
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                   numpy    8.19355000203359e-06                     1.0
-                   naive    5.8551999999999994e-06    0.7146108827732515
-                parallel    7.012400000000001e-06     0.8558439258025601
-                  vector             2.46237e-05       3.005254132078104
+                   numpy    7.1260000004258476e-06                   1.0
+                   naive              5.8158e-06       0.816138085833911
+                parallel              6.0976e-06      0.8556834128032008
+                  vector             2.45775e-05      3.4489896152864516
 
 
 
@@ -830,7 +830,7 @@ matrix multiplication.
 
  .. code-block:: none
 
-    Numpy running time: 0.017732
+    Numpy running time: 0.019207
 
 
 
@@ -886,7 +886,7 @@ optimizations.
 
  .. code-block:: none
 
-    none: 3.264217
+    none: 3.512506
 
 
 
@@ -985,7 +985,7 @@ schedule.
 
  .. code-block:: none
 
-    blocking: 0.296393
+    blocking: 0.331071
 
 
 
@@ -1077,7 +1077,7 @@ already cache friendly from our previous optimizations.
 
  .. code-block:: none
 
-    vectorization: 0.328019
+    vectorization: 0.347813
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
@@ -1149,7 +1149,7 @@ more cache friendly.
 
  .. code-block:: none
 
-    loop permutation: 0.115767
+    loop permutation: 0.136599
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
@@ -1246,7 +1246,7 @@ optimized schedule.
 
  .. code-block:: none
 
-    array packing: 0.108397
+    array packing: 0.111624
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
@@ -1337,7 +1337,7 @@ to `C` when all the block results are ready.
 
  .. code-block:: none
 
-    block caching: 0.110292
+    block caching: 0.111918
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
@@ -1421,7 +1421,7 @@ of thread-level parallelization.
 
  .. code-block:: none
 
-    parallelization: 0.144191
+    parallelization: 0.147626
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
@@ -1500,13 +1500,13 @@ working, we can compare the results.
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                    none            3.2642167188                     1.0
-                blocking            0.2963927547     0.09080057491065135
-           vectorization            0.3280194928     0.10048949596722467
-        loop permutation     0.11576726200000001     0.03546555635636799
-           array packing     0.10839654920000001     0.03320752221373617
-           block caching     0.11029192940000002    0.033788176123473145
-         parallelization            0.1441911041     0.04417326315055696
+                    none            3.5125063933                     1.0
+                blocking     0.33107129129999996     0.09425500034149645
+           vectorization            0.3478128892     0.09902128288319777
+        loop permutation            0.1365990129    0.038889327905725246
+           array packing            0.1116241107     0.03177904840626614
+           block caching     0.11191796059999999     0.03186270658851472
+         parallelization     0.14762583219999997     0.04202863017746866
 
 
 
@@ -1541,6 +1541,11 @@ operations with tunable parameters that allows you to automatically optimize
 the computation for specific platforms.
 
 
+.. rst-class:: sphx-glr-timing
+
+   **Total running time of the script:** ( 1 minutes  3.169 seconds)
+
+
 .. _sphx_glr_download_tutorial_tensor_expr_get_started.py:
 
 
diff --git a/docs/commit_hash b/docs/commit_hash
index 756e35f43..6aa644c1c 100644
--- a/docs/commit_hash
+++ b/docs/commit_hash
@@ -1 +1 @@
-3d0fc36ae4967a5ee24a75cff311828447003235
+521b80af217a60bf4be3febd5a1e081eb4f76b93
diff --git a/docs/genindex.html b/docs/genindex.html
index 9ad6e585d..c9e1549e8 100644
--- a/docs/genindex.html
+++ b/docs/genindex.html
@@ -729,6 +729,12 @@
       <li><a href="reference/api/python/relay/dataflow_pattern.html#tvm.relay.dataflow_pattern.CallPattern">CallPattern (class in tvm.relay.dataflow_pattern)</a>
 </li>
       <li><a href="reference/api/python/runtime.html#tvm.runtime.Report.calls">calls (tvm.runtime.Report attribute)</a>
+</li>
+      <li><a href="reference/api/python/target.html#tvm.target.Target.canonicalize_multi_targets">canonicalize_multi_targets() (tvm.target.Target static method)</a>
+</li>
+      <li><a href="reference/api/python/target.html#tvm.target.Target.canonicalize_target">canonicalize_target() (tvm.target.Target static method)</a>
+</li>
+      <li><a href="reference/api/python/target.html#tvm.target.Target.canonicalize_target_and_host">canonicalize_target_and_host() (tvm.target.Target static method)</a>
 </li>
       <li><a href="reference/api/python/relay/transform.html#tvm.relay.transform.CanonicalizeCast">CanonicalizeCast() (in module tvm.relay.transform)</a>
 </li>
@@ -903,11 +909,11 @@
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.conv1d_ncw">conv1d_ncw() (in module tvm.topi.nn)</a>
 </li>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.conv1d_nwc">conv1d_nwc() (in module tvm.topi.nn)</a>
-</li>
-      <li><a href="reference/api/python/relay/nn.html#tvm.relay.nn.conv1d_transpose">conv1d_transpose() (in module tvm.relay.nn)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="reference/api/python/relay/nn.html#tvm.relay.nn.conv1d_transpose">conv1d_transpose() (in module tvm.relay.nn)</a>
+</li>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.conv1d_transpose_ncw">conv1d_transpose_ncw() (in module tvm.topi.nn)</a>
 </li>
       <li><a href="reference/api/python/relay/nn.html#tvm.relay.nn.conv2d">conv2d() (in module tvm.relay.nn)</a>
diff --git a/docs/how_to/compile_models/from_mxnet.html b/docs/how_to/compile_models/from_mxnet.html
index ff9a700d2..74165a84a 100644
--- a/docs/how_to/compile_models/from_mxnet.html
+++ b/docs/how_to/compile_models/from_mxnet.html
@@ -401,7 +401,7 @@
 </div>
 <img alt="../../_images/sphx_glr_from_mxnet_001.png" class="sphx-glr-single-img" src="../../_images/sphx_glr_from_mxnet_001.png" />
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zip9e7d197c-2789-4b73-bf72-9c01563dd09c from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zip7d90167a-60dc-48d1-8911-4b9dd0e1ebc0 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
 x (1, 3, 224, 224)
 </pre></div>
 </div>
diff --git a/docs/how_to/compile_models/from_oneflow.html b/docs/how_to/compile_models/from_oneflow.html
index a9f7a70ee..eae2d8f7c 100644
--- a/docs/how_to/compile_models/from_oneflow.html
+++ b/docs/how_to/compile_models/from_oneflow.html
@@ -406,129 +406,41 @@ python3 -m pip install -f https://release.oneflow.info <span class="nv">oneflow<
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading: &quot;https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/flowvision/classification/ResNet/resnet18.zip&quot; to /workspace/.oneflow/flowvision_cache/resnet18.zip
 
   0%|          | 0.00/41.5M [00:00&lt;?, ?B/s]
-  0%|          | 16.0k/41.5M [00:00&lt;09:33, 75.8kB/s]
-  0%|          | 48.0k/41.5M [00:00&lt;06:02, 120kB/s]
-  0%|          | 96.0k/41.5M [00:00&lt;04:24, 164kB/s]
-  0%|          | 168k/41.5M [00:00&lt;03:10, 228kB/s]
-  1%|          | 256k/41.5M [00:01&lt;02:25, 298kB/s]
-  1%|          | 328k/41.5M [00:01&lt;02:14, 321kB/s]
-  1%|          | 408k/41.5M [00:01&lt;02:07, 339kB/s]
-  1%|1         | 488k/41.5M [00:01&lt;02:04, 345kB/s]
-  1%|1         | 576k/41.5M [00:01&lt;01:59, 360kB/s]
-  2%|1         | 656k/41.5M [00:02&lt;01:58, 362kB/s]
-  2%|1         | 744k/41.5M [00:02&lt;01:49, 391kB/s]
-  2%|1         | 824k/41.5M [00:02&lt;01:45, 406kB/s]
-  2%|2         | 912k/41.5M [00:02&lt;01:42, 416kB/s]
-  2%|2         | 0.98M/41.5M [00:02&lt;01:41, 417kB/s]
-  3%|2         | 1.05M/41.5M [00:03&lt;01:45, 403kB/s]
-  3%|2         | 1.14M/41.5M [00:03&lt;01:45, 399kB/s]
-  3%|2         | 1.23M/41.5M [00:03&lt;01:43, 409kB/s]
-  3%|3         | 1.32M/41.5M [00:03&lt;01:39, 425kB/s]
-  3%|3         | 1.41M/41.5M [00:03&lt;01:21, 518kB/s]
-  4%|3         | 1.50M/41.5M [00:04&lt;01:17, 542kB/s]
-  4%|3         | 1.56M/41.5M [00:04&lt;01:17, 537kB/s]
-  4%|3         | 1.62M/41.5M [00:04&lt;01:31, 455kB/s]
-  4%|4         | 1.71M/41.5M [00:04&lt;01:20, 518kB/s]
-  4%|4         | 1.81M/41.5M [00:04&lt;01:14, 556kB/s]
-  5%|4         | 1.88M/41.5M [00:04&lt;01:16, 545kB/s]
-  5%|4         | 1.94M/41.5M [00:05&lt;01:31, 455kB/s]
-  5%|4         | 2.05M/41.5M [00:05&lt;01:12, 573kB/s]
-  5%|5         | 2.17M/41.5M [00:05&lt;01:07, 611kB/s]
-  5%|5         | 2.23M/41.5M [00:05&lt;01:11, 576kB/s]
-  6%|5         | 2.31M/41.5M [00:05&lt;01:08, 595kB/s]
-  6%|5         | 2.45M/41.5M [00:05&lt;00:57, 716kB/s]
-  6%|6         | 2.52M/41.5M [00:05&lt;01:08, 601kB/s]
-  6%|6         | 2.61M/41.5M [00:06&lt;01:03, 638kB/s]
-  7%|6         | 2.76M/41.5M [00:06&lt;00:51, 784kB/s]
-  7%|6         | 2.84M/41.5M [00:06&lt;00:57, 711kB/s]
-  7%|7         | 2.95M/41.5M [00:06&lt;00:50, 804kB/s]
-  7%|7         | 3.11M/41.5M [00:06&lt;00:39, 1.01MB/s]
-  8%|7         | 3.22M/41.5M [00:06&lt;00:45, 892kB/s]
-  8%|8         | 3.32M/41.5M [00:06&lt;00:45, 886kB/s]
-  8%|8         | 3.52M/41.5M [00:07&lt;00:36, 1.10MB/s]
-  9%|8         | 3.62M/41.5M [00:07&lt;00:41, 947kB/s]
-  9%|9         | 3.75M/41.5M [00:07&lt;00:39, 1.01MB/s]
- 10%|9         | 3.96M/41.5M [00:07&lt;00:31, 1.25MB/s]
- 10%|9         | 4.09M/41.5M [00:07&lt;00:36, 1.07MB/s]
- 10%|#         | 4.23M/41.5M [00:07&lt;00:36, 1.08MB/s]
- 10%|#         | 4.34M/41.5M [00:07&lt;00:35, 1.09MB/s]
- 11%|#         | 4.49M/41.5M [00:07&lt;00:33, 1.15MB/s]
- 11%|#1        | 4.61M/41.5M [00:08&lt;00:33, 1.17MB/s]
- 12%|#1        | 4.77M/41.5M [00:08&lt;00:31, 1.22MB/s]
- 12%|#1        | 4.90M/41.5M [00:08&lt;00:30, 1.24MB/s]
- 12%|#2        | 5.08M/41.5M [00:08&lt;00:28, 1.33MB/s]
- 13%|#2        | 5.37M/41.5M [00:08&lt;00:21, 1.73MB/s]
- 13%|#3        | 5.54M/41.5M [00:08&lt;00:24, 1.54MB/s]
- 14%|#3        | 5.77M/41.5M [00:08&lt;00:25, 1.45MB/s]
- 15%|#4        | 6.09M/41.5M [00:08&lt;00:20, 1.84MB/s]
- 16%|#5        | 6.45M/41.5M [00:09&lt;00:17, 2.14MB/s]
- 16%|#6        | 6.66M/41.5M [00:09&lt;00:20, 1.81MB/s]
- 17%|#6        | 6.88M/41.5M [00:09&lt;00:19, 1.88MB/s]
- 18%|#7        | 7.28M/41.5M [00:09&lt;00:15, 2.33MB/s]
- 18%|#8        | 7.52M/41.5M [00:09&lt;00:17, 2.00MB/s]
- 19%|#8        | 7.77M/41.5M [00:09&lt;00:17, 2.06MB/s]
- 19%|#9        | 7.98M/41.5M [00:09&lt;00:16, 2.09MB/s]
- 20%|#9        | 8.25M/41.5M [00:10&lt;00:16, 2.18MB/s]
- 20%|##        | 8.47M/41.5M [00:10&lt;00:15, 2.21MB/s]
- 21%|##1       | 8.77M/41.5M [00:10&lt;00:14, 2.32MB/s]
- 22%|##1       | 8.99M/41.5M [00:10&lt;00:14, 2.29MB/s]
- 22%|##2       | 9.30M/41.5M [00:10&lt;00:14, 2.41MB/s]
- 23%|##2       | 9.54M/41.5M [00:10&lt;00:14, 2.38MB/s]
- 24%|##3       | 9.88M/41.5M [00:10&lt;00:12, 2.59MB/s]
- 25%|##5       | 10.5M/41.5M [00:10&lt;00:09, 3.38MB/s]
- 26%|##5       | 10.8M/41.5M [00:10&lt;00:10, 2.97MB/s]
- 27%|##7       | 11.2M/41.5M [00:11&lt;00:10, 3.01MB/s]
- 28%|##8       | 11.8M/41.5M [00:11&lt;00:08, 3.64MB/s]
- 29%|##9       | 12.1M/41.5M [00:11&lt;00:09, 3.30MB/s]
- 30%|###       | 12.5M/41.5M [00:11&lt;00:09, 3.31MB/s]
- 31%|###       | 12.8M/41.5M [00:11&lt;00:09, 3.33MB/s]
- 32%|###2      | 13.3M/41.5M [00:11&lt;00:08, 3.48MB/s]
- 34%|###3      | 14.0M/41.5M [00:11&lt;00:06, 4.39MB/s]
- 35%|###4      | 14.4M/41.5M [00:11&lt;00:06, 4.14MB/s]
- 36%|###5      | 14.8M/41.5M [00:12&lt;00:06, 4.13MB/s]
- 38%|###7      | 15.6M/41.5M [00:12&lt;00:05, 5.09MB/s]
- 39%|###8      | 16.1M/41.5M [00:12&lt;00:06, 3.94MB/s]
- 40%|###9      | 16.6M/41.5M [00:12&lt;00:06, 4.25MB/s]
- 42%|####2     | 17.5M/41.5M [00:12&lt;00:04, 5.32MB/s]
- 43%|####3     | 18.0M/41.5M [00:12&lt;00:05, 4.61MB/s]
- 45%|####4     | 18.5M/41.5M [00:12&lt;00:05, 4.63MB/s]
- 46%|####5     | 19.0M/41.5M [00:12&lt;00:05, 4.66MB/s]
- 47%|####7     | 19.6M/41.5M [00:13&lt;00:04, 4.85MB/s]
- 48%|####8     | 20.0M/41.5M [00:13&lt;00:04, 4.80MB/s]
- 50%|####9     | 20.6M/41.5M [00:13&lt;00:04, 5.08MB/s]
- 51%|#####     | 21.1M/41.5M [00:13&lt;00:04, 4.98MB/s]
- 53%|#####2    | 21.8M/41.5M [00:13&lt;00:03, 5.27MB/s]
- 54%|#####3    | 22.3M/41.5M [00:13&lt;00:03, 5.08MB/s]
- 55%|#####5    | 23.0M/41.5M [00:13&lt;00:03, 5.47MB/s]
- 57%|#####6    | 23.5M/41.5M [00:13&lt;00:03, 5.26MB/s]
- 58%|#####8    | 24.2M/41.5M [00:14&lt;00:04, 4.27MB/s]
- 62%|######1   | 25.6M/41.5M [00:14&lt;00:02, 5.74MB/s]
- 64%|######4   | 26.6M/41.5M [00:14&lt;00:02, 5.45MB/s]
- 66%|######6   | 27.5M/41.5M [00:14&lt;00:02, 5.44MB/s]
- 69%|######8   | 28.4M/41.5M [00:14&lt;00:02, 6.04MB/s]
- 70%|#######   | 29.0M/41.5M [00:14&lt;00:02, 5.69MB/s]
- 71%|#######1  | 29.6M/41.5M [00:15&lt;00:03, 3.81MB/s]
- 73%|#######2  | 30.2M/41.5M [00:15&lt;00:02, 4.25MB/s]
- 74%|#######4  | 30.7M/41.5M [00:15&lt;00:02, 4.33MB/s]
- 75%|#######5  | 31.2M/41.5M [00:15&lt;00:02, 4.25MB/s]
- 76%|#######6  | 31.7M/41.5M [00:15&lt;00:02, 3.52MB/s]
- 78%|#######8  | 32.4M/41.5M [00:15&lt;00:02, 3.49MB/s]
- 80%|#######9  | 33.1M/41.5M [00:16&lt;00:02, 3.49MB/s]
- 82%|########1 | 33.9M/41.5M [00:16&lt;00:02, 3.61MB/s]
- 83%|########2 | 34.4M/41.5M [00:16&lt;00:01, 3.87MB/s]
- 84%|########3 | 34.8M/41.5M [00:16&lt;00:01, 3.65MB/s]
- 85%|########5 | 35.4M/41.5M [00:16&lt;00:01, 3.65MB/s]
- 87%|########7 | 36.2M/41.5M [00:17&lt;00:01, 3.95MB/s]
- 89%|########9 | 37.0M/41.5M [00:17&lt;00:01, 4.10MB/s]
- 91%|######### | 37.6M/41.5M [00:17&lt;00:00, 4.48MB/s]
- 92%|#########1| 38.0M/41.5M [00:17&lt;00:00, 4.25MB/s]
- 93%|#########3| 38.6M/41.5M [00:17&lt;00:00, 3.90MB/s]
- 95%|#########4| 39.2M/41.5M [00:17&lt;00:00, 4.38MB/s]
- 96%|#########5| 39.7M/41.5M [00:17&lt;00:00, 4.06MB/s]
- 97%|#########6| 40.2M/41.5M [00:18&lt;00:00, 4.14MB/s]
- 98%|#########8| 40.9M/41.5M [00:18&lt;00:00, 4.22MB/s]
- 99%|#########9| 41.3M/41.5M [00:18&lt;00:00, 3.68MB/s]
-100%|##########| 41.5M/41.5M [00:18&lt;00:00, 2.37MB/s]
+  0%|          | 16.0k/41.5M [00:00&lt;07:49, 92.7kB/s]
+  0%|          | 48.0k/41.5M [00:00&lt;04:56, 147kB/s]
+  0%|          | 96.0k/41.5M [00:00&lt;03:30, 206kB/s]
+  0%|          | 200k/41.5M [00:00&lt;01:59, 361kB/s]
+  1%|          | 368k/41.5M [00:00&lt;01:14, 580kB/s]
+  2%|1         | 704k/41.5M [00:01&lt;00:41, 1.04MB/s]
+  3%|3         | 1.26M/41.5M [00:01&lt;00:23, 1.80MB/s]
+  6%|6         | 2.53M/41.5M [00:01&lt;00:11, 3.62MB/s]
+ 10%|9         | 4.00M/41.5M [00:01&lt;00:07, 5.20MB/s]
+ 13%|#3        | 5.46M/41.5M [00:01&lt;00:06, 6.25MB/s]
+ 17%|#6        | 6.93M/41.5M [00:01&lt;00:05, 6.99MB/s]
+ 20%|##        | 8.40M/41.5M [00:02&lt;00:04, 7.50MB/s]
+ 24%|##3       | 9.87M/41.5M [00:02&lt;00:04, 7.85MB/s]
+ 27%|##7       | 11.3M/41.5M [00:02&lt;00:03, 8.09MB/s]
+ 31%|###       | 12.8M/41.5M [00:02&lt;00:03, 8.26MB/s]
+ 34%|###4      | 14.3M/41.5M [00:02&lt;00:03, 8.38MB/s]
+ 38%|###7      | 15.7M/41.5M [00:03&lt;00:03, 8.57MB/s]
+ 41%|####1     | 17.2M/41.5M [00:03&lt;00:02, 8.57MB/s]
+ 45%|####4     | 18.7M/41.5M [00:03&lt;00:02, 8.60MB/s]
+ 49%|####8     | 20.1M/41.5M [00:03&lt;00:02, 8.50MB/s]
+ 52%|#####2    | 21.6M/41.5M [00:03&lt;00:02, 8.56MB/s]
+ 56%|#####5    | 23.1M/41.5M [00:03&lt;00:02, 8.58MB/s]
+ 59%|#####9    | 24.5M/41.5M [00:04&lt;00:02, 8.58MB/s]
+ 63%|######2   | 26.0M/41.5M [00:04&lt;00:01, 8.60MB/s]
+ 66%|######6   | 27.5M/41.5M [00:04&lt;00:01, 8.62MB/s]
+ 70%|######9   | 28.9M/41.5M [00:04&lt;00:01, 8.62MB/s]
+ 73%|#######3  | 30.4M/41.5M [00:04&lt;00:01, 8.65MB/s]
+ 77%|#######6  | 31.9M/41.5M [00:04&lt;00:01, 8.65MB/s]
+ 80%|########  | 33.3M/41.5M [00:05&lt;00:00, 8.64MB/s]
+ 84%|########3 | 34.8M/41.5M [00:05&lt;00:00, 8.65MB/s]
+ 87%|########7 | 36.3M/41.5M [00:05&lt;00:00, 8.64MB/s]
+ 91%|######### | 37.7M/41.5M [00:05&lt;00:00, 8.64MB/s]
+ 94%|#########4| 39.2M/41.5M [00:05&lt;00:00, 8.65MB/s]
+ 98%|#########7| 40.6M/41.5M [00:06&lt;00:00, 8.63MB/s]
+100%|##########| 41.5M/41.5M [00:06&lt;00:00, 7.19MB/s]
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/compile_models/from_paddle.html b/docs/how_to/compile_models/from_paddle.html
index fa35d8032..646773a28 100644
--- a/docs/how_to/compile_models/from_paddle.html
+++ b/docs/how_to/compile_models/from_paddle.html
@@ -464,7 +464,7 @@ A quick solution is</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>TVM prediction top-1 id: 282, class name:  282: &#39;tiger cat&#39;,
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  27.295 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  9.805 seconds)</p>
 <div class="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-compile-models-from-paddle-py">
 <div class="sphx-glr-download docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/16269b77359771348d507395692524cf/from_paddle.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">from_paddle.py</span></code></a></p>
diff --git a/docs/how_to/compile_models/from_pytorch.html b/docs/how_to/compile_models/from_pytorch.html
index 2c5cda0e7..e988ef815 100644
--- a/docs/how_to/compile_models/from_pytorch.html
+++ b/docs/how_to/compile_models/from_pytorch.html
@@ -387,9 +387,9 @@ be unstable.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading: &quot;https://download.pytorch.org/models/resnet18-f37072fd.pth&quot; to /workspace/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth
 
   0%|          | 0.00/44.7M [00:00&lt;?, ?B/s]
- 38%|###8      | 17.0M/44.7M [00:00&lt;00:00, 178MB/s]
- 82%|########2 | 36.7M/44.7M [00:00&lt;00:00, 195MB/s]
-100%|##########| 44.7M/44.7M [00:00&lt;00:00, 200MB/s]
+ 40%|###9      | 17.8M/44.7M [00:00&lt;00:00, 179MB/s]
+ 95%|#########5| 42.6M/44.7M [00:00&lt;00:00, 226MB/s]
+100%|##########| 44.7M/44.7M [00:00&lt;00:00, 220MB/s]
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/compile_models/from_tensorflow.html b/docs/how_to/compile_models/from_tensorflow.html
index f1be82f8b..21d8b6924 100644
--- a/docs/how_to/compile_models/from_tensorflow.html
+++ b/docs/how_to/compile_models/from_tensorflow.html
@@ -607,7 +607,7 @@ banana (score = 0.00022)
 desk (score = 0.00019)
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  3.442 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  6.815 seconds)</p>
 <div class="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-compile-models-from-tensorflow-py">
 <div class="sphx-glr-download docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7f1d3d1b878694c201c614c807cdebc8/from_tensorflow.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">from_tensorflow.py</span></code></a></p>
diff --git a/docs/how_to/compile_models/sg_execution_times.html b/docs/how_to/compile_models/sg_execution_times.html
index d7589b51c..506d1bb36 100644
--- a/docs/how_to/compile_models/sg_execution_times.html
+++ b/docs/how_to/compile_models/sg_execution_times.html
@@ -300,18 +300,18 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-compile-models-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>05:50.116</strong> total execution time for <strong>how_to_compile_models</strong> files:</p>
+<p><strong>05:39.253</strong> total execution time for <strong>how_to_compile_models</strong> files:</p>
 <ul class="simple">
-<li><p><strong>01:27.295</strong>: <a class="reference internal" href="from_paddle.html#sphx-glr-how-to-compile-models-from-paddle-py"><span class="std std-ref">Compile PaddlePaddle Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_paddle.py</span></code>)</p></li>
-<li><p><strong>01:03.442</strong>: <a class="reference internal" href="from_tensorflow.html#sphx-glr-how-to-compile-models-from-tensorflow-py"><span class="std std-ref">Compile Tensorflow Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_tensorflow.py</span></code>)</p></li>
-<li><p><strong>00:56.561</strong>: <a class="reference internal" href="from_darknet.html#sphx-glr-how-to-compile-models-from-darknet-py"><span class="std std-ref">Compile YOLO-V2 and YOLO-V3 in DarkNet Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_darknet.py</span></code>)</p></li>
-<li><p><strong>00:41.867</strong>: <a class="reference internal" href="from_oneflow.html#sphx-glr-how-to-compile-models-from-oneflow-py"><span class="std std-ref">Compile OneFlow Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_oneflow.py</span></code>)</p></li>
-<li><p><strong>00:25.005</strong>: <a class="reference internal" href="from_tflite.html#sphx-glr-how-to-compile-models-from-tflite-py"><span class="std std-ref">Compile TFLite Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_tflite.py</span></code>)</p></li>
-<li><p><strong>00:20.944</strong>: <a class="reference internal" href="from_mxnet.html#sphx-glr-how-to-compile-models-from-mxnet-py"><span class="std std-ref">Compile MXNet Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_mxnet.py</span></code>)</p></li>
-<li><p><strong>00:20.805</strong>: <a class="reference internal" href="from_coreml.html#sphx-glr-how-to-compile-models-from-coreml-py"><span class="std std-ref">Compile CoreML Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_coreml.py</span></code>)</p></li>
-<li><p><strong>00:19.257</strong>: <a class="reference internal" href="from_pytorch.html#sphx-glr-how-to-compile-models-from-pytorch-py"><span class="std std-ref">Compile PyTorch Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_pytorch.py</span></code>)</p></li>
-<li><p><strong>00:12.328</strong>: <a class="reference internal" href="from_keras.html#sphx-glr-how-to-compile-models-from-keras-py"><span class="std std-ref">Compile Keras Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_keras.py</span></code>)</p></li>
-<li><p><strong>00:02.612</strong>: <a class="reference internal" href="from_onnx.html#sphx-glr-how-to-compile-models-from-onnx-py"><span class="std std-ref">Compile ONNX Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_onnx.py</span></code>)</p></li>
+<li><p><strong>01:09.805</strong>: <a class="reference internal" href="from_paddle.html#sphx-glr-how-to-compile-models-from-paddle-py"><span class="std std-ref">Compile PaddlePaddle Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_paddle.py</span></code>)</p></li>
+<li><p><strong>01:06.815</strong>: <a class="reference internal" href="from_tensorflow.html#sphx-glr-how-to-compile-models-from-tensorflow-py"><span class="std std-ref">Compile Tensorflow Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_tensorflow.py</span></code>)</p></li>
+<li><p><strong>00:59.385</strong>: <a class="reference internal" href="from_darknet.html#sphx-glr-how-to-compile-models-from-darknet-py"><span class="std std-ref">Compile YOLO-V2 and YOLO-V3 in DarkNet Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_darknet.py</span></code>)</p></li>
+<li><p><strong>00:32.312</strong>: <a class="reference internal" href="from_oneflow.html#sphx-glr-how-to-compile-models-from-oneflow-py"><span class="std std-ref">Compile OneFlow Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_oneflow.py</span></code>)</p></li>
+<li><p><strong>00:25.918</strong>: <a class="reference internal" href="from_tflite.html#sphx-glr-how-to-compile-models-from-tflite-py"><span class="std std-ref">Compile TFLite Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_tflite.py</span></code>)</p></li>
+<li><p><strong>00:23.989</strong>: <a class="reference internal" href="from_coreml.html#sphx-glr-how-to-compile-models-from-coreml-py"><span class="std std-ref">Compile CoreML Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_coreml.py</span></code>)</p></li>
+<li><p><strong>00:23.978</strong>: <a class="reference internal" href="from_mxnet.html#sphx-glr-how-to-compile-models-from-mxnet-py"><span class="std std-ref">Compile MXNet Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_mxnet.py</span></code>)</p></li>
+<li><p><strong>00:19.845</strong>: <a class="reference internal" href="from_pytorch.html#sphx-glr-how-to-compile-models-from-pytorch-py"><span class="std std-ref">Compile PyTorch Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_pytorch.py</span></code>)</p></li>
+<li><p><strong>00:14.557</strong>: <a class="reference internal" href="from_keras.html#sphx-glr-how-to-compile-models-from-keras-py"><span class="std std-ref">Compile Keras Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_keras.py</span></code>)</p></li>
+<li><p><strong>00:02.650</strong>: <a class="reference internal" href="from_onnx.html#sphx-glr-how-to-compile-models-from-onnx-py"><span class="std std-ref">Compile ONNX Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_onnx.py</span></code>)</p></li>
 </ul>
 </div>
 
diff --git a/docs/how_to/deploy_models/deploy_model_on_android.html b/docs/how_to/deploy_models/deploy_model_on_android.html
index 0289b314c..b1a6fc56a 100644
--- a/docs/how_to/deploy_models/deploy_model_on_android.html
+++ b/docs/how_to/deploy_models/deploy_model_on_android.html
@@ -622,7 +622,7 @@ to the remote android device.</p>
 Evaluate inference time cost...
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-  15.5674      15.5431      15.6927      15.4704       0.0776
+  17.0220      16.9537      17.5340      16.5876       0.3437
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/deploy_models/deploy_model_on_rasp.html b/docs/how_to/deploy_models/deploy_model_on_rasp.html
index 47f555b3e..a039c43e3 100644
--- a/docs/how_to/deploy_models/deploy_model_on_rasp.html
+++ b/docs/how_to/deploy_models/deploy_model_on_rasp.html
@@ -497,7 +497,7 @@ to run this tutorial with a real device.</p>
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/workspace/python/tvm/relay/build_module.py:439: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/workspace/python/tvm/relay/build_module.py:431: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
   DeprecationWarning,
 </pre></div>
 </div>
diff --git a/docs/how_to/deploy_models/deploy_object_detection_pytorch.html b/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
index 318661610..7a47d2a35 100644
--- a/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
+++ b/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
@@ -409,36 +409,40 @@ be unstable.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading: &quot;https://download.pytorch.org/models/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth&quot; to /workspace/.cache/torch/hub/checkpoints/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth
 
   0%|          | 0.00/170M [00:00&lt;?, ?B/s]
-  3%|2         | 4.88M/170M [00:00&lt;00:03, 51.0MB/s]
-  6%|5         | 9.94M/170M [00:00&lt;00:03, 52.0MB/s]
-  9%|8         | 14.9M/170M [00:00&lt;00:03, 50.2MB/s]
- 12%|#1        | 19.7M/170M [00:00&lt;00:03, 48.3MB/s]
- 15%|#4        | 24.9M/170M [00:00&lt;00:03, 50.3MB/s]
- 18%|#8        | 30.7M/170M [00:00&lt;00:02, 53.8MB/s]
- 21%|##1       | 35.8M/170M [00:00&lt;00:02, 52.4MB/s]
- 24%|##4       | 41.1M/170M [00:00&lt;00:02, 53.0MB/s]
- 27%|##7       | 46.1M/170M [00:01&lt;00:03, 41.5MB/s]
- 31%|###1      | 52.8M/170M [00:01&lt;00:02, 48.6MB/s]
- 34%|###4      | 57.8M/170M [00:01&lt;00:02, 49.6MB/s]
- 37%|###6      | 62.8M/170M [00:01&lt;00:02, 43.3MB/s]
- 40%|###9      | 67.3M/170M [00:01&lt;00:02, 42.7MB/s]
- 43%|####2     | 72.6M/170M [00:01&lt;00:02, 45.3MB/s]
- 46%|####6     | 78.9M/170M [00:01&lt;00:01, 50.7MB/s]
- 49%|####9     | 83.9M/170M [00:01&lt;00:01, 50.6MB/s]
- 53%|#####3    | 90.6M/170M [00:01&lt;00:01, 55.8MB/s]
- 57%|#####6    | 96.0M/170M [00:02&lt;00:01, 54.9MB/s]
- 60%|#####9    | 101M/170M [00:02&lt;00:01, 55.3MB/s]
- 64%|######3   | 108M/170M [00:02&lt;00:01, 60.5MB/s]
- 67%|######7   | 114M/170M [00:02&lt;00:00, 60.0MB/s]
- 71%|#######1  | 121M/170M [00:02&lt;00:00, 62.4MB/s]
- 75%|#######4  | 127M/170M [00:02&lt;00:00, 59.5MB/s]
- 78%|#######8  | 133M/170M [00:02&lt;00:00, 61.1MB/s]
- 82%|########2 | 139M/170M [00:02&lt;00:00, 60.2MB/s]
- 86%|########5 | 146M/170M [00:02&lt;00:00, 62.9MB/s]
- 90%|########9 | 152M/170M [00:02&lt;00:00, 63.4MB/s]
- 93%|#########3| 159M/170M [00:03&lt;00:00, 64.1MB/s]
- 97%|#########6| 165M/170M [00:03&lt;00:00, 63.9MB/s]
-100%|##########| 170M/170M [00:03&lt;00:00, 55.0MB/s]
+  4%|3         | 6.01M/170M [00:00&lt;00:02, 62.9MB/s]
+  7%|7         | 12.0M/170M [00:00&lt;00:02, 55.2MB/s]
+ 10%|#         | 17.3M/170M [00:00&lt;00:03, 51.4MB/s]
+ 13%|#3        | 22.3M/170M [00:00&lt;00:03, 51.5MB/s]
+ 16%|#6        | 27.2M/170M [00:00&lt;00:03, 40.7MB/s]
+ 19%|#8        | 31.8M/170M [00:00&lt;00:03, 42.5MB/s]
+ 21%|##1       | 36.1M/170M [00:00&lt;00:03, 43.2MB/s]
+ 24%|##3       | 40.3M/170M [00:00&lt;00:03, 40.5MB/s]
+ 27%|##7       | 46.3M/170M [00:01&lt;00:02, 46.3MB/s]
+ 30%|##9       | 50.9M/170M [00:01&lt;00:03, 41.5MB/s]
+ 32%|###2      | 55.0M/170M [00:01&lt;00:03, 37.9MB/s]
+ 35%|###5      | 59.9M/170M [00:01&lt;00:02, 41.3MB/s]
+ 39%|###8      | 65.8M/170M [00:01&lt;00:02, 46.5MB/s]
+ 41%|####1     | 70.4M/170M [00:01&lt;00:02, 46.7MB/s]
+ 44%|####4     | 75.6M/170M [00:01&lt;00:02, 48.8MB/s]
+ 47%|####7     | 80.6M/170M [00:01&lt;00:01, 49.9MB/s]
+ 50%|#####     | 85.5M/170M [00:01&lt;00:01, 48.5MB/s]
+ 53%|#####3    | 90.2M/170M [00:02&lt;00:01, 47.9MB/s]
+ 56%|#####5    | 94.8M/170M [00:02&lt;00:01, 47.0MB/s]
+ 59%|#####9    | 101M/170M [00:02&lt;00:01, 51.1MB/s]
+ 62%|######2   | 106M/170M [00:02&lt;00:01, 47.8MB/s]
+ 66%|######5   | 111M/170M [00:02&lt;00:01, 51.3MB/s]
+ 68%|######8   | 116M/170M [00:02&lt;00:01, 51.3MB/s]
+ 71%|#######1  | 121M/170M [00:02&lt;00:01, 50.2MB/s]
+ 75%|#######4  | 127M/170M [00:02&lt;00:00, 53.1MB/s]
+ 78%|#######7  | 132M/170M [00:02&lt;00:00, 53.0MB/s]
+ 81%|########  | 137M/170M [00:03&lt;00:00, 48.4MB/s]
+ 84%|########3 | 142M/170M [00:03&lt;00:00, 46.5MB/s]
+ 87%|########6 | 147M/170M [00:03&lt;00:00, 49.3MB/s]
+ 90%|########9 | 152M/170M [00:03&lt;00:00, 43.6MB/s]
+ 93%|#########2| 158M/170M [00:03&lt;00:00, 47.5MB/s]
+ 96%|#########6| 163M/170M [00:03&lt;00:00, 50.8MB/s]
+ 99%|#########9| 168M/170M [00:03&lt;00:00, 35.6MB/s]
+100%|##########| 170M/170M [00:03&lt;00:00, 45.2MB/s]
 /usr/local/lib/python3.7/dist-packages/torch/nn/functional.py:3878: 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).
   for i in range(dim)
 /usr/local/lib/python3.7/dist-packages/torchvision/models/detection/anchor_utils.py:127: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the &#39;trunc&#39; function NOT &#39;floor&#39;). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode=&#39;trunc&#39;), or for actual floor division, use torch.div(a, b, rounding_mode=&#39;floor&#39;).
@@ -483,7 +487,7 @@ be unstable.</p>
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/workspace/python/tvm/relay/build_module.py:439: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/workspace/python/tvm/relay/build_module.py:431: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
   DeprecationWarning,
 </pre></div>
 </div>
@@ -531,7 +535,7 @@ torchvision rcnn models.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Get 9 valid boxes
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 3 minutes  1.507 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 3 minutes  26.010 seconds)</p>
 <div class="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-object-detection-pytorch-py">
 <div class="sphx-glr-download docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7795da4b258c8feff986668b95ef57ad/deploy_object_detection_pytorch.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_object_detection_pytorch.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_prequantized.html b/docs/how_to/deploy_models/deploy_prequantized.html
index 25919142a..8cd426a42 100644
--- a/docs/how_to/deploy_models/deploy_prequantized.html
+++ b/docs/how_to/deploy_models/deploy_prequantized.html
@@ -450,9 +450,7 @@ training. Other models require a full post training calibration.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading: &quot;https://download.pytorch.org/models/mobilenet_v2-b0353104.pth&quot; to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2-b0353104.pth
 
   0%|          | 0.00/13.6M [00:00&lt;?, ?B/s]
- 26%|##6       | 3.57M/13.6M [00:00&lt;00:00, 37.3MB/s]
- 53%|#####3    | 7.20M/13.6M [00:00&lt;00:00, 37.8MB/s]
-100%|##########| 13.6M/13.6M [00:00&lt;00:00, 60.2MB/s]
+100%|##########| 13.6M/13.6M [00:00&lt;00:00, 151MB/s]
 </pre></div>
 </div>
 </div>
@@ -541,7 +539,7 @@ output values are identical out of 1000 outputs from mobilenet v2.</p>
 <p class="sphx-glr-script-out">Out:</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-  90.3567      90.1864      99.1484      89.8744       0.9661
+  90.6754      90.5349      91.6982      90.3244       0.3079
 </pre></div>
 </div>
 <div class="admonition note">
@@ -580,7 +578,7 @@ This includes support for the VNNI 8 bit dot product instruction (CascadeLake or
 <div class="section" id="deploy-a-quantized-tflite-model">
 <h2>Deploy a quantized TFLite Model<a class="headerlink" href="#deploy-a-quantized-tflite-model" title="Permalink to this headline">¶</a></h2>
 <p>TODO</p>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  3.791 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  13.411 seconds)</p>
 <div class="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-prequantized-py">
 <div class="sphx-glr-download docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/fb8217c13f4351224c6cf3aacf1a87fc/deploy_prequantized.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_prequantized.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_prequantized_tflite.html b/docs/how_to/deploy_models/deploy_prequantized_tflite.html
index e095ba427..244a91f9a 100644
--- a/docs/how_to/deploy_models/deploy_prequantized_tflite.html
+++ b/docs/how_to/deploy_models/deploy_prequantized_tflite.html
@@ -540,7 +540,7 @@ TFLite Top-5 labels: [387 102 386 341 349]
 <p class="sphx-glr-script-out">Out:</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-  118.3741     118.4525     120.2847     116.1592      1.0702
+  121.0929     120.8253     125.0510     119.9421      0.9224
 </pre></div>
 </div>
 <div class="admonition note">
@@ -568,7 +568,7 @@ network for ARM CPU</span></a>.</p></li>
 </ul>
 </div></blockquote>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  59.468 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  55.896 seconds)</p>
 <div class="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-prequantized-tflite-py">
 <div class="sphx-glr-download docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/56691c7a27d45da61d112276334640d3/deploy_prequantized_tflite.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_prequantized_tflite.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_quantized.html b/docs/how_to/deploy_models/deploy_quantized.html
index cb22789b4..8e11a6092 100644
--- a/docs/how_to/deploy_models/deploy_quantized.html
+++ b/docs/how_to/deploy_models/deploy_quantized.html
@@ -476,11 +476,11 @@ for calibration. But the accuracy might be impacted.</p>
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/workspace/python/tvm/relay/build_module.py:439: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/workspace/python/tvm/relay/build_module.py:431: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
   DeprecationWarning,
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 2 minutes  5.876 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  21.284 seconds)</p>
 <div class="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-quantized-py">
 <div class="sphx-glr-download docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7810ecf51bfc05f7d5e8a400ac3e815d/deploy_quantized.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_quantized.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_ssd_gluoncv.html b/docs/how_to/deploy_models/deploy_ssd_gluoncv.html
index a87ec6e6c..3373bb2db 100644
--- a/docs/how_to/deploy_models/deploy_ssd_gluoncv.html
+++ b/docs/how_to/deploy_models/deploy_ssd_gluoncv.html
@@ -415,24 +415,22 @@ to your device.</p>
 Downloading /workspace/.mxnet/models/ssd_512_resnet50_v1_voc-9c8b225a.zip from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/ssd_512_resnet50_v1_voc-9c8b225a.zip...
 
   0%|          | 0/132723 [00:00&lt;?, ?KB/s]
-  4%|3         | 4769/132723 [00:00&lt;00:02, 47677.20KB/s]
- 10%|9         | 12722/132723 [00:00&lt;00:01, 66406.43KB/s]
- 16%|#5        | 20717/132723 [00:00&lt;00:01, 72585.42KB/s]
- 22%|##1       | 28753/132723 [00:00&lt;00:01, 75652.95KB/s]
- 27%|##7       | 36319/132723 [00:00&lt;00:01, 60073.39KB/s]
- 33%|###3      | 44302/132723 [00:00&lt;00:01, 65807.12KB/s]
- 39%|###8      | 51256/132723 [00:00&lt;00:01, 62753.58KB/s]
- 45%|####4     | 59258/132723 [00:00&lt;00:01, 67621.70KB/s]
- 51%|#####     | 67284/132723 [00:00&lt;00:00, 71248.97KB/s]
- 57%|#####6    | 75226/132723 [00:01&lt;00:00, 73624.07KB/s]
- 63%|######2   | 83325/132723 [00:01&lt;00:00, 75784.37KB/s]
- 69%|######8   | 91372/132723 [00:01&lt;00:00, 77166.38KB/s]
- 75%|#######4  | 99364/132723 [00:01&lt;00:00, 77981.09KB/s]
- 81%|########  | 107304/132723 [00:01&lt;00:00, 78402.86KB/s]
- 87%|########6 | 115187/132723 [00:01&lt;00:00, 78175.55KB/s]
- 93%|#########2| 123035/132723 [00:01&lt;00:00, 77963.12KB/s]
- 99%|#########8| 130855/132723 [00:01&lt;00:00, 78031.29KB/s]
-100%|##########| 132723/132723 [00:01&lt;00:00, 72892.71KB/s]
+  5%|5         | 6754/132723 [00:00&lt;00:01, 67531.21KB/s]
+ 11%|#1        | 15125/132723 [00:00&lt;00:01, 77042.60KB/s]
+ 18%|#7        | 23558/132723 [00:00&lt;00:01, 80365.36KB/s]
+ 24%|##4       | 32019/132723 [00:00&lt;00:01, 82029.58KB/s]
+ 30%|###       | 40476/132723 [00:00&lt;00:01, 82941.94KB/s]
+ 37%|###6      | 48920/132723 [00:00&lt;00:01, 83448.07KB/s]
+ 43%|####3     | 57382/132723 [00:00&lt;00:00, 83829.16KB/s]
+ 50%|####9     | 65832/132723 [00:00&lt;00:00, 84041.20KB/s]
+ 56%|#####5    | 74306/132723 [00:00&lt;00:00, 84258.16KB/s]
+ 62%|######2   | 82770/132723 [00:01&lt;00:00, 84374.63KB/s]
+ 69%|######8   | 91249/132723 [00:01&lt;00:00, 84497.46KB/s]
+ 75%|#######5  | 99710/132723 [00:01&lt;00:00, 84527.98KB/s]
+ 81%|########1 | 108169/132723 [00:01&lt;00:00, 84542.70KB/s]
+ 88%|########7 | 116642/132723 [00:01&lt;00:00, 84596.25KB/s]
+ 94%|#########4| 125155/132723 [00:01&lt;00:00, 84751.42KB/s]
+100%|##########| 132723/132723 [00:01&lt;00:00, 83383.63KB/s]
 </pre></div>
 </div>
 <p>Create TVM runtime and do inference
@@ -472,7 +470,7 @@ Downloading /workspace/.mxnet/models/ssd_512_resnet50_v1_voc-9c8b225a.zip from h
 </pre></div>
 </div>
 <img alt="../../_images/sphx_glr_deploy_ssd_gluoncv_001.png" class="sphx-glr-single-img" src="../../_images/sphx_glr_deploy_ssd_gluoncv_001.png" />
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 2 minutes  18.679 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 2 minutes  36.954 seconds)</p>
 <div class="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-ssd-gluoncv-py">
 <div class="sphx-glr-download docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/cccb17d28e5e8b2e94ea8cd5ec59f6ed/deploy_ssd_gluoncv.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_ssd_gluoncv.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/sg_execution_times.html b/docs/how_to/deploy_models/sg_execution_times.html
index 7bbfd61be..540776838 100644
--- a/docs/how_to/deploy_models/sg_execution_times.html
+++ b/docs/how_to/deploy_models/sg_execution_times.html
@@ -300,16 +300,16 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-deploy-models-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>11:18.815</strong> total execution time for <strong>how_to_deploy_models</strong> files:</p>
+<p><strong>11:27.811</strong> total execution time for <strong>how_to_deploy_models</strong> files:</p>
 <ul class="simple">
-<li><p><strong>03:01.507</strong>: <a class="reference internal" href="deploy_object_detection_pytorch.html#sphx-glr-how-to-deploy-models-deploy-object-detection-pytorch-py"><span class="std std-ref">Compile PyTorch Object Detection Models</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_object_detection_pytorch.py</span></code>)</p></li>
-<li><p><strong>02:18.679</strong>: <a class="reference internal" href="deploy_ssd_gluoncv.html#sphx-glr-how-to-deploy-models-deploy-ssd-gluoncv-py"><span class="std std-ref">Deploy Single Shot Multibox Detector(SSD) model</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_ssd_gluoncv.py</span></code>)</p></li>
-<li><p><strong>02:05.876</strong>: <a class="reference internal" href="deploy_quantized.html#sphx-glr-how-to-deploy-models-deploy-quantized-py"><span class="std std-ref">Deploy a Quantized Model on Cuda</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_quantized.py</span></code>)</p></li>
-<li><p><strong>01:59.468</strong>: <a class="reference internal" href="deploy_prequantized_tflite.html#sphx-glr-how-to-deploy-models-deploy-prequantized-tflite-py"><span class="std std-ref">Deploy a Framework-prequantized Model with TVM - Part 3 (TFLite)</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_prequantized_tflite.py</span></code>)</p></li>
-<li><p><strong>01:03.791</strong>: <a class="reference internal" href="deploy_prequantized.html#sphx-glr-how-to-deploy-models-deploy-prequantized-py"><span class="std std-ref">Deploy a Framework-prequantized Model with TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_prequantized.py</span></code>)</p></li>
-<li><p><strong>00:27.496</strong>: <a class="reference internal" href="deploy_model_on_android.html#sphx-glr-how-to-deploy-models-deploy-model-on-android-py"><span class="std std-ref">Deploy the Pretrained Model on Android</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_android.py</span></code>)</p></li>
-<li><p><strong>00:21.795</strong>: <a class="reference internal" href="deploy_model_on_rasp.html#sphx-glr-how-to-deploy-models-deploy-model-on-rasp-py"><span class="std std-ref">Deploy the Pretrained Model on Raspberry Pi</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_rasp.py</span></code>)</p></li>
-<li><p><strong>00:00.202</strong>: <a class="reference internal" href="deploy_sparse.html#sphx-glr-how-to-deploy-models-deploy-sparse-py"><span class="std std-ref">Deploy a Hugging Face Pruned Model on CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_sparse.py</span></code>)</p></li>
+<li><p><strong>03:26.010</strong>: <a class="reference internal" href="deploy_object_detection_pytorch.html#sphx-glr-how-to-deploy-models-deploy-object-detection-pytorch-py"><span class="std std-ref">Compile PyTorch Object Detection Models</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_object_detection_pytorch.py</span></code>)</p></li>
+<li><p><strong>02:36.954</strong>: <a class="reference internal" href="deploy_ssd_gluoncv.html#sphx-glr-how-to-deploy-models-deploy-ssd-gluoncv-py"><span class="std std-ref">Deploy Single Shot Multibox Detector(SSD) model</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_ssd_gluoncv.py</span></code>)</p></li>
+<li><p><strong>01:55.896</strong>: <a class="reference internal" href="deploy_prequantized_tflite.html#sphx-glr-how-to-deploy-models-deploy-prequantized-tflite-py"><span class="std std-ref">Deploy a Framework-prequantized Model with TVM - Part 3 (TFLite)</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_prequantized_tflite.py</span></code>)</p></li>
+<li><p><strong>01:21.284</strong>: <a class="reference internal" href="deploy_quantized.html#sphx-glr-how-to-deploy-models-deploy-quantized-py"><span class="std std-ref">Deploy a Quantized Model on Cuda</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_quantized.py</span></code>)</p></li>
+<li><p><strong>01:13.411</strong>: <a class="reference internal" href="deploy_prequantized.html#sphx-glr-how-to-deploy-models-deploy-prequantized-py"><span class="std std-ref">Deploy a Framework-prequantized Model with TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_prequantized.py</span></code>)</p></li>
+<li><p><strong>00:31.015</strong>: <a class="reference internal" href="deploy_model_on_android.html#sphx-glr-how-to-deploy-models-deploy-model-on-android-py"><span class="std std-ref">Deploy the Pretrained Model on Android</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_android.py</span></code>)</p></li>
+<li><p><strong>00:23.025</strong>: <a class="reference internal" href="deploy_model_on_rasp.html#sphx-glr-how-to-deploy-models-deploy-model-on-rasp-py"><span class="std std-ref">Deploy the Pretrained Model on Raspberry Pi</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_rasp.py</span></code>)</p></li>
+<li><p><strong>00:00.215</strong>: <a class="reference internal" href="deploy_sparse.html#sphx-glr-how-to-deploy-models-deploy-sparse-py"><span class="std std-ref">Deploy a Hugging Face Pruned Model on CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_sparse.py</span></code>)</p></li>
 </ul>
 </div>
 
diff --git a/docs/how_to/extend_tvm/bring_your_own_datatypes.html b/docs/how_to/extend_tvm/bring_your_own_datatypes.html
index 5a3922ab7..e8d892610 100644
--- a/docs/how_to/extend_tvm/bring_your_own_datatypes.html
+++ b/docs/how_to/extend_tvm/bring_your_own_datatypes.html
@@ -588,7 +588,7 @@ In this alpha state of the Bring Your Own Datatypes framework, we have not imple
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zip5322494f-0b66-42e4-9a5c-9fd9bb331175 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zipc97dc2a8-d241-4504-9f7e-2e4884bfe63f from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
 </pre></div>
 </div>
 <p>It’s easy to execute MobileNet with native TVM:</p>
@@ -650,7 +650,7 @@ In this alpha state of the Bring Your Own Datatypes framework, we have not imple
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Check failed: (lower) is false: FloatImm lowering function for target llvm type 150 not found
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Check failed: (lower) is false: Intrinsic lowering function for target llvm, intrinsic name tir.sqrt, type 150 not found
 </pre></div>
 </div>
 <p>When we attempt to run the model, we get a familiar error telling us that more functions need to be registerd for myfloat.</p>
diff --git a/docs/how_to/extend_tvm/sg_execution_times.html b/docs/how_to/extend_tvm/sg_execution_times.html
index d2d5ecf44..d99c55d42 100644
--- a/docs/how_to/extend_tvm/sg_execution_times.html
+++ b/docs/how_to/extend_tvm/sg_execution_times.html
@@ -300,12 +300,12 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-extend-tvm-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:37.776</strong> total execution time for <strong>how_to_extend_tvm</strong> files:</p>
+<p><strong>00:40.869</strong> total execution time for <strong>how_to_extend_tvm</strong> files:</p>
 <ul class="simple">
-<li><p><strong>00:34.325</strong>: <a class="reference internal" href="bring_your_own_datatypes.html#sphx-glr-how-to-extend-tvm-bring-your-own-datatypes-py"><span class="std std-ref">Bring Your Own Datatypes to TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">bring_your_own_datatypes.py</span></code>)</p></li>
-<li><p><strong>00:02.211</strong>: <a class="reference internal" href="use_pass_instrument.html#sphx-glr-how-to-extend-tvm-use-pass-instrument-py"><span class="std std-ref">How to Use TVM Pass Instrument</span></a> (<code class="docutils literal notranslate"><span class="pre">use_pass_instrument.py</span></code>)</p></li>
-<li><p><strong>00:01.059</strong>: <a class="reference internal" href="use_pass_infra.html#sphx-glr-how-to-extend-tvm-use-pass-infra-py"><span class="std std-ref">How to Use TVM Pass Infra</span></a> (<code class="docutils literal notranslate"><span class="pre">use_pass_infra.py</span></code>)</p></li>
-<li><p><strong>00:00.181</strong>: <a class="reference internal" href="low_level_custom_pass.html#sphx-glr-how-to-extend-tvm-low-level-custom-pass-py"><span class="std std-ref">Writing a Customized Pass</span></a> (<code class="docutils literal notranslate"><span class="pre">low_level_custom_pass.py</span></code>)</p></li>
+<li><p><strong>00:37.117</strong>: <a class="reference internal" href="bring_your_own_datatypes.html#sphx-glr-how-to-extend-tvm-bring-your-own-datatypes-py"><span class="std std-ref">Bring Your Own Datatypes to TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">bring_your_own_datatypes.py</span></code>)</p></li>
+<li><p><strong>00:02.397</strong>: <a class="reference internal" href="use_pass_instrument.html#sphx-glr-how-to-extend-tvm-use-pass-instrument-py"><span class="std std-ref">How to Use TVM Pass Instrument</span></a> (<code class="docutils literal notranslate"><span class="pre">use_pass_instrument.py</span></code>)</p></li>
+<li><p><strong>00:01.129</strong>: <a class="reference internal" href="use_pass_infra.html#sphx-glr-how-to-extend-tvm-use-pass-infra-py"><span class="std std-ref">How to Use TVM Pass Infra</span></a> (<code class="docutils literal notranslate"><span class="pre">use_pass_infra.py</span></code>)</p></li>
+<li><p><strong>00:00.227</strong>: <a class="reference internal" href="low_level_custom_pass.html#sphx-glr-how-to-extend-tvm-low-level-custom-pass-py"><span class="std std-ref">Writing a Customized Pass</span></a> (<code class="docutils literal notranslate"><span class="pre">low_level_custom_pass.py</span></code>)</p></li>
 </ul>
 </div>
 
diff --git a/docs/how_to/extend_tvm/use_pass_instrument.html b/docs/how_to/extend_tvm/use_pass_instrument.html
index 4a15cff11..239690ff9 100644
--- a/docs/how_to/extend_tvm/use_pass_instrument.html
+++ b/docs/how_to/extend_tvm/use_pass_instrument.html
@@ -486,10 +486,10 @@ profile the execution time of each passes.</p>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Printing results of timing profile...
-InferType: 6204us [6204us] (45.81%; 45.81%)
-FoldScaleAxis: 7340us [3us] (54.19%; 54.19%)
-        FoldConstant: 7337us [1522us] (54.17%; 99.96%)
-                InferType: 5814us [5814us] (42.93%; 79.25%)
+InferType: 6287us [6287us] (45.69%; 45.69%)
+FoldScaleAxis: 7475us [3us] (54.31%; 54.31%)
+        FoldConstant: 7472us [1526us] (54.30%; 99.97%)
+                InferType: 5946us [5946us] (43.21%; 79.57%)
 </pre></div>
 </div>
 </div>
@@ -512,10 +512,10 @@ Refer to following sections and <a class="reference internal" href="../../refere
 </div>
 <p class="sphx-glr-script-out">Out:</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Printing results of timing profile...
-InferType: 5910us [5910us] (45.11%; 45.11%)
-FoldScaleAxis: 7190us [2us] (54.89%; 54.89%)
-        FoldConstant: 7188us [1489us] (54.87%; 99.97%)
-                InferType: 5699us [5699us] (43.50%; 79.28%)
+InferType: 6068us [6068us] (44.90%; 44.90%)
+FoldScaleAxis: 7447us [3us] (55.10%; 55.10%)
+        FoldConstant: 7444us [1552us] (55.08%; 99.97%)
+                InferType: 5892us [5892us] (43.60%; 79.16%)
 </pre></div>
 </div>
 <p>Register empty list to clear existing instruments.</p>
diff --git a/docs/how_to/optimize_operators/opt_conv_cuda.html b/docs/how_to/optimize_operators/opt_conv_cuda.html
index 0d1a7df17..ee6448b2f 100644
--- a/docs/how_to/optimize_operators/opt_conv_cuda.html
+++ b/docs/how_to/optimize_operators/opt_conv_cuda.html
@@ -534,7 +534,7 @@ latency of convolution.</p>
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Convolution: 42.368728 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Convolution: 54.174938 ms
 </pre></div>
 </div>
 <div class="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-optimize-operators-opt-conv-cuda-py">
diff --git a/docs/how_to/optimize_operators/opt_conv_tensorcore.html b/docs/how_to/optimize_operators/opt_conv_tensorcore.html
index 584b025f6..ec0c12ff7 100644
--- a/docs/how_to/optimize_operators/opt_conv_tensorcore.html
+++ b/docs/how_to/optimize_operators/opt_conv_tensorcore.html
@@ -878,7 +878,7 @@ be able to run on our build server</p>
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>conv2d with tensor core: 7.008247 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>conv2d with tensor core: 6.466869 ms
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/optimize_operators/opt_gemm.html b/docs/how_to/optimize_operators/opt_gemm.html
index df681d7c3..9865bccd3 100644
--- a/docs/how_to/optimize_operators/opt_gemm.html
+++ b/docs/how_to/optimize_operators/opt_gemm.html
@@ -431,8 +431,8 @@ Then we write a baseline implementation, the simplest way to write a matrix mult
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Numpy running time: 0.018506
-Baseline: 3.245997
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Numpy running time: 0.020153
+Baseline: 3.498409
 </pre></div>
 </div>
 <p>In TVM, we can always inspect lower level IR to debug or optimize our schedule.
@@ -494,7 +494,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt1: 0.303008
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt1: 0.325702
 </pre></div>
 </div>
 <p>Here is the generated IR after blocking.</p>
@@ -563,7 +563,7 @@ vastly.</p>
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt2: 0.336242
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt2: 0.344468
 </pre></div>
 </div>
 <p>Here is the generated IR after vectorization.</p>
@@ -626,7 +626,7 @@ the access pattern for A matrix is more cache friendly.</p>
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt3: 0.117632
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt3: 0.133277
 </pre></div>
 </div>
 <p>Here is the generated IR after loop permutation.</p>
@@ -711,7 +711,7 @@ flattening.</p>
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt4: 0.110116
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt4: 0.112306
 </pre></div>
 </div>
 <p>Here is the generated IR after array packing.</p>
@@ -799,7 +799,7 @@ write to C when all the block results are ready.</p>
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt5: 0.110598
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt5: 0.113493
 </pre></div>
 </div>
 <p>Here is the generated IR after blocking.</p>
@@ -891,7 +891,7 @@ write to C when all the block results are ready.</p>
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt6: 0.144518
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt6: 0.147983
 </pre></div>
 </div>
 <p>Here is the generated IR after parallelization.</p>
diff --git a/docs/how_to/optimize_operators/sg_execution_times.html b/docs/how_to/optimize_operators/sg_execution_times.html
index d5f45fb2c..aea5f7656 100644
--- a/docs/how_to/optimize_operators/sg_execution_times.html
+++ b/docs/how_to/optimize_operators/sg_execution_times.html
@@ -300,11 +300,11 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-optimize-operators-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:34.387</strong> total execution time for <strong>how_to_optimize_operators</strong> files:</p>
+<p><strong>00:36.467</strong> total execution time for <strong>how_to_optimize_operators</strong> files:</p>
 <ul class="simple">
-<li><p><strong>00:31.866</strong>: <a class="reference internal" href="opt_gemm.html#sphx-glr-how-to-optimize-operators-opt-gemm-py"><span class="std std-ref">How to optimize GEMM on CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_gemm.py</span></code>)</p></li>
-<li><p><strong>00:01.338</strong>: <a class="reference internal" href="opt_conv_tensorcore.html#sphx-glr-how-to-optimize-operators-opt-conv-tensorcore-py"><span class="std std-ref">How to optimize convolution using TensorCores</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_conv_tensorcore.py</span></code>)</p></li>
-<li><p><strong>00:01.184</strong>: <a class="reference internal" href="opt_conv_cuda.html#sphx-glr-how-to-optimize-operators-opt-conv-cuda-py"><span class="std std-ref">How to optimize convolution on GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_conv_cuda.py</span></code>)</p></li>
+<li><p><strong>00:33.685</strong>: <a class="reference internal" href="opt_gemm.html#sphx-glr-how-to-optimize-operators-opt-gemm-py"><span class="std std-ref">How to optimize GEMM on CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_gemm.py</span></code>)</p></li>
+<li><p><strong>00:01.466</strong>: <a class="reference internal" href="opt_conv_tensorcore.html#sphx-glr-how-to-optimize-operators-opt-conv-tensorcore-py"><span class="std std-ref">How to optimize convolution using TensorCores</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_conv_tensorcore.py</span></code>)</p></li>
+<li><p><strong>00:01.316</strong>: <a class="reference internal" href="opt_conv_cuda.html#sphx-glr-how-to-optimize-operators-opt-conv-cuda-py"><span class="std std-ref">How to optimize convolution on GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_conv_cuda.py</span></code>)</p></li>
 </ul>
 </div>
 
diff --git a/docs/how_to/tune_with_autoscheduler/sg_execution_times.html b/docs/how_to/tune_with_autoscheduler/sg_execution_times.html
index 03295cb1f..41744a936 100644
--- a/docs/how_to/tune_with_autoscheduler/sg_execution_times.html
+++ b/docs/how_to/tune_with_autoscheduler/sg_execution_times.html
@@ -300,14 +300,14 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-tune-with-autoscheduler-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>04:54.833</strong> total execution time for <strong>how_to_tune_with_autoscheduler</strong> files:</p>
+<p><strong>05:16.094</strong> total execution time for <strong>how_to_tune_with_autoscheduler</strong> files:</p>
 <ul class="simple">
-<li><p><strong>02:22.038</strong>: <a class="reference internal" href="tune_conv2d_layer_cuda.html#sphx-glr-how-to-tune-with-autoscheduler-tune-conv2d-layer-cuda-py"><span class="std std-ref">Auto-scheduling a Convolution Layer for GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_conv2d_layer_cuda.py</span></code>)</p></li>
-<li><p><strong>01:19.370</strong>: <a class="reference internal" href="tune_network_x86.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-x86-py"><span class="std std-ref">Auto-scheduling a Neural Network for x86 CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_x86.py</span></code>)</p></li>
-<li><p><strong>00:39.917</strong>: <a class="reference internal" href="tune_network_cuda.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-cuda-py"><span class="std std-ref">Auto-scheduling a Neural Network for NVIDIA GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_cuda.py</span></code>)</p></li>
-<li><p><strong>00:16.436</strong>: <a class="reference internal" href="tune_sparse_x86.html#sphx-glr-how-to-tune-with-autoscheduler-tune-sparse-x86-py"><span class="std std-ref">Auto-scheduling Sparse Matrix Multiplication on CPU with Custom Sketch Rule</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_sparse_x86.py</span></code>)</p></li>
-<li><p><strong>00:08.759</strong>: <a class="reference internal" href="tune_network_mali.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-mali-py"><span class="std std-ref">Auto-scheduling a Neural Network for mali GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_mali.py</span></code>)</p></li>
-<li><p><strong>00:08.312</strong>: <a class="reference internal" href="tune_network_arm.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-arm-py"><span class="std std-ref">Auto-scheduling a Neural Network for ARM CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_arm.py</span></code>)</p></li>
+<li><p><strong>02:31.485</strong>: <a class="reference internal" href="tune_conv2d_layer_cuda.html#sphx-glr-how-to-tune-with-autoscheduler-tune-conv2d-layer-cuda-py"><span class="std std-ref">Auto-scheduling a Convolution Layer for GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_conv2d_layer_cuda.py</span></code>)</p></li>
+<li><p><strong>01:25.057</strong>: <a class="reference internal" href="tune_network_x86.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-x86-py"><span class="std std-ref">Auto-scheduling a Neural Network for x86 CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_x86.py</span></code>)</p></li>
+<li><p><strong>00:43.242</strong>: <a class="reference internal" href="tune_network_cuda.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-cuda-py"><span class="std std-ref">Auto-scheduling a Neural Network for NVIDIA GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_cuda.py</span></code>)</p></li>
+<li><p><strong>00:17.877</strong>: <a class="reference internal" href="tune_sparse_x86.html#sphx-glr-how-to-tune-with-autoscheduler-tune-sparse-x86-py"><span class="std std-ref">Auto-scheduling Sparse Matrix Multiplication on CPU with Custom Sketch Rule</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_sparse_x86.py</span></code>)</p></li>
+<li><p><strong>00:09.345</strong>: <a class="reference internal" href="tune_network_mali.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-mali-py"><span class="std std-ref">Auto-scheduling a Neural Network for mali GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_mali.py</span></code>)</p></li>
+<li><p><strong>00:09.089</strong>: <a class="reference internal" href="tune_network_arm.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-arm-py"><span class="std std-ref">Auto-scheduling a Neural Network for ARM CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_arm.py</span></code>)</p></li>
 </ul>
 </div>
 
diff --git a/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html b/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html
index da8112fcb..ac6369a98 100644
--- a/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html
+++ b/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html
@@ -470,292 +470,188 @@ cooperative fetching, unrolling and operator fusion.</p>
              compute: Buffer(compute_2: Pointer(float32), float32, [25088], [])}
   buffer_map = {data_1: data, kernel_1: kernel, bias_1: bias, compute_1: compute}
   preflattened_buffer_map = {data_1: data_3: Buffer(data_2, float32, [1, 512, 7, 7], []), kernel_1: kernel_3: Buffer(kernel_2, float32, [512, 512, 3, 3], []), bias_1: bias_3: Buffer(bias_2, float32, [1, 512, 1, 1], []), compute_1: compute_3: Buffer(compute_2, float32, [1, 512, 7, 7], [])} {
-  attr [IterVar(blockIdx.x: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;blockIdx.x&quot;)] &quot;thread_extent&quot; = 32;
-  allocate(conv2d_nchw: Pointer(local float32), float32, [16]), storage_scope = local;
-  allocate(pad_temp.shared: Pointer(shared float32), float32, [2016]), storage_scope = shared;
+  attr [IterVar(blockIdx.x: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;blockIdx.x&quot;)] &quot;thread_extent&quot; = 16;
+  allocate(conv2d_nchw: Pointer(local float32), float32, [14]), storage_scope = local;
+  allocate(pad_temp.shared: Pointer(shared float32), float32, [1008]), storage_scope = shared;
   allocate(kernel.shared: Pointer(shared float32), float32, [1536]), storage_scope = shared;
-  attr [IterVar(threadIdx.x: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49 {
-    conv2d_nchw_1: Buffer(conv2d_nchw, float32, [16], [], scope=&quot;local&quot;, align=64)[0] = 0f32
-    conv2d_nchw_1[1] = 0f32
-    conv2d_nchw_1[2] = 0f32
-    conv2d_nchw_1[3] = 0f32
-    conv2d_nchw_1[4] = 0f32
-    conv2d_nchw_1[5] = 0f32
-    conv2d_nchw_1[6] = 0f32
+  attr [IterVar(threadIdx.x: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112 {
+    conv2d_nchw_1: Buffer(conv2d_nchw, float32, [14], [], scope=&quot;local&quot;, align=32)[0] = 0f32
     conv2d_nchw_1[7] = 0f32
+    conv2d_nchw_1[1] = 0f32
     conv2d_nchw_1[8] = 0f32
+    conv2d_nchw_1[2] = 0f32
     conv2d_nchw_1[9] = 0f32
+    conv2d_nchw_1[3] = 0f32
     conv2d_nchw_1[10] = 0f32
+    conv2d_nchw_1[4] = 0f32
     conv2d_nchw_1[11] = 0f32
+    conv2d_nchw_1[5] = 0f32
     conv2d_nchw_1[12] = 0f32
+    conv2d_nchw_1[6] = 0f32
     conv2d_nchw_1[13] = 0f32
-    conv2d_nchw_1[14] = 0f32
-    conv2d_nchw_1[15] = 0f32
-    for (rc.outer.outer: int32, 0, 16) {
+    for (rc.outer.outer: int32, 0, 32) {
       for (ry.outer.outer: int32, 0, 3) {
-        let cse_var_4: int32 = (rc.outer.outer*1568)
+        let cse_var_4: int32 = (rc.outer.outer*784)
         let cse_var_3: int32 = (ry.outer.outer*7)
-        let cse_var_2: int32 = (rc.outer.outer*288)
+        let cse_var_2: int32 = (rc.outer.outer*144)
         let cse_var_1: int32 = (ry.outer.outer*3)
          {
-          attr [IterVar(threadIdx.x_1: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1: Buffer(pad_temp.shared, float32, [2016], [], scope=&quot;shared&quot;)[threadIdx.x_1] = @tir.if_then_else((((1 &lt;= (floordiv(threadIdx.x_1, 9) + ry.outer.outer)) &amp;&amp; (1 &lt;= floormod(threadIdx.x_1, 9))) &amp;&amp; (floormod(threadIdx.x_1, 9) &lt; 8)), data[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 49)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 4), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 4), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 49), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 98)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 98), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 98), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 8), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 8), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 98), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 147)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 147), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 147), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 3), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 3), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 147), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 196)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 196), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 196), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 7), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 7), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 196), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 245)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 245), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 245), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 2), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 2), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 245), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 294)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 294), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 294), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 6), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 6), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 294), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 343)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 343), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 343), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 1), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 1), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 343), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 392)] = @tir.if_then_else(((((floordiv(floormod((threadIdx.x_1 + 392), 63), 9) + ry.outer.outer) &lt; 8) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 5), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 5), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 392), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 441)] = @tir.if_then_else((((1 &lt;= (floordiv(threadIdx.x_1, 9) + ry.outer.outer)) &amp;&amp; (1 &lt;= floormod(threadIdx.x_1, 9))) &amp;&amp; (floormod(threadIdx.x_1, 9) &lt; 8)), data[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 335)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 490)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 490), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 490), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 4), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 4), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 490), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 539)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 539), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 539), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 8), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 8), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 539), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 588)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 588), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 588), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 3), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 3), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 588), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 637)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 637), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 637), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 7), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 7), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 637), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 686)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 686), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 686), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 2), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 2), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 686), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 735)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 735), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 735), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 6), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 6), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 735), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
+          attr [IterVar(threadIdx.x_1: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          pad_temp.shared_1: Buffer(pad_temp.shared, float32, [1008], [], scope=&quot;shared&quot;)[threadIdx.x_1] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod(threadIdx.x_1, 9))) &amp;&amp; (floormod(threadIdx.x_1, 9) &lt; 8)), data[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) - 8)], 0f [...]
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          pad_temp.shared_1[(threadIdx.x_1 + 112)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 112), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 112), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 4), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 4), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 112), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          pad_temp.shared_1[(threadIdx.x_1 + 224)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 224), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 224), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 8), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 8), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 224), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          pad_temp.shared_1[(threadIdx.x_1 + 336)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 336), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 336), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 3), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 3), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 336), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          pad_temp.shared_1[(threadIdx.x_1 + 448)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 448), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 448), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 7), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 7), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 448), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          pad_temp.shared_1[(threadIdx.x_1 + 560)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 560), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 560), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 2), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 2), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 560), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          pad_temp.shared_1[(threadIdx.x_1 + 672)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 672), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 672), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 6), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 6), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 672), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
           pad_temp.shared_1[(threadIdx.x_1 + 784)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 784), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 784), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 1), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 1), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 784), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 833)] = @tir.if_then_else(((((floordiv(floormod((threadIdx.x_1 + 833), 63), 9) + ry.outer.outer) &lt; 8) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 5), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 5), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 833), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 882)] = @tir.if_then_else((((1 &lt;= (floordiv(threadIdx.x_1, 9) + ry.outer.outer)) &amp;&amp; (1 &lt;= floormod(threadIdx.x_1, 9))) &amp;&amp; (floormod(threadIdx.x_1, 9) &lt; 8)), data[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 678)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 931)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 931), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 931), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 4), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 4), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 931), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 980)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 980), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 980), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 8), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 8), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 980), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1029)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1029), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1029), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 3), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 3), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1029), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1078)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1078), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1078), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 7), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 7), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1078), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1127)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1127), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1127), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 2), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 2), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1127), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1176)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1176), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1176), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 6), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 6), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1176), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1225)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1225), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1225), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 1), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 1), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1225), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1274)] = @tir.if_then_else(((((floordiv(floormod((threadIdx.x_1 + 1274), 63), 9) + ry.outer.outer) &lt; 8) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 5), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 5), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1274), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1323)] = @tir.if_then_else((((1 &lt;= (floordiv(threadIdx.x_1, 9) + ry.outer.outer)) &amp;&amp; (1 &lt;= floormod(threadIdx.x_1, 9))) &amp;&amp; (floormod(threadIdx.x_1, 9) &lt; 8)), data[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 1021)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1372)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1372), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1372), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 4), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 4), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1372), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1421)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1421), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1421), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 8), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 8), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1421), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1470)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1470), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1470), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 3), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 3), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1470), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1519)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1519), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1519), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 7), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 7), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1519), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1568)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1568), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1568), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 2), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 2), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1568), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1617)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1617), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1617), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 6), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 6), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1617), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1666)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1666), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1666), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 1), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 1), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1666), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1715)] = @tir.if_then_else(((((floordiv(floormod((threadIdx.x_1 + 1715), 63), 9) + ry.outer.outer) &lt; 8) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 5), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 5), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1715), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1764)] = @tir.if_then_else((((1 &lt;= (floordiv(threadIdx.x_1, 9) + ry.outer.outer)) &amp;&amp; (1 &lt;= floormod(threadIdx.x_1, 9))) &amp;&amp; (floormod(threadIdx.x_1, 9) &lt; 8)), data[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 1364)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1813)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1813), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1813), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 4), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 4), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1813), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1862)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1862), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1862), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 8), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 8), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1862), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1911)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1911), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1911), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 3), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 3), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1911), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          pad_temp.shared_1[(threadIdx.x_1 + 1960)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 1960), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 1960), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 7), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 7), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1960), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
-          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          if @tir.likely((threadIdx.x_1 &lt; 7), dtype=bool) {
-            pad_temp.shared_1[(threadIdx.x_1 + 2009)] = @tir.if_then_else((((floordiv(floormod((threadIdx.x_1 + 2009), 63), 9) + ry.outer.outer) &lt; 8) &amp;&amp; (floormod((threadIdx.x_1 + 2), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2009), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
-          }
-          attr [IterVar(threadIdx.x_2: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1: Buffer(kernel.shared, float32, [1536], [], scope=&quot;shared&quot;)[threadIdx.x_2] = kernel[(((((blockIdx.x*73728) + cse_var_2) + (floordiv(threadIdx.x_2, 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 49)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 49), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 49), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 98)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 98), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 98), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 147)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 147), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 17), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 196)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 196), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 196), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 245)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 245), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 245), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 294)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 294), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 2), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 343)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 343), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 343), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 392)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 392), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 392), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 441)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 441), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 19), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 490)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 490), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 490), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 539)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 539), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 539), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 588)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 588), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 4), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 637)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 637), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 637), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 686)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 686), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 686), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 735)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 735), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 21), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 784)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 784), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 784), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 833)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 833), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 833), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 882)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 882), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 6), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 931)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 931), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 931), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 980)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 980), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 980), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 1029)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1029), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 23), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 1078)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1078), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1078), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 1127)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1127), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1127), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 1176)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1176), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 8), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 1225)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1225), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1225), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 1274)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1274), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1274), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 1323)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1323), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 25), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 1372)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1372), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1372), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 1421)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1421), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1421), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          kernel.shared_1[(threadIdx.x_2 + 1470)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1470), 96)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 10), 32)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 49;
-          if @tir.likely((threadIdx.x_2 &lt; 17), dtype=bool) {
-            kernel.shared_1[(threadIdx.x_2 + 1519)] = kernel[((((((blockIdx.x*73728) + (floordiv((threadIdx.x_2 + 1519), 96)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1519), 96), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          pad_temp.shared_1[(threadIdx.x_1 + 896)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 896), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 896), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 5), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 5), 9) &lt; 8)), data[((((cse_var_4 + (floordiv((threadIdx.x_1 + 896), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_2: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1: Buffer(kernel.shared, float32, [1536], [], scope=&quot;shared&quot;)[threadIdx.x_2] = kernel[((((((blockIdx.x*147456) + (floordiv(threadIdx.x_2, 48)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 48), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1[(threadIdx.x_2 + 112)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 7), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 112), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1[(threadIdx.x_2 + 224)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 14), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 224), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1[(threadIdx.x_2 + 336)] = kernel[(((((((blockIdx.x*147456) + (floordiv(floordiv(threadIdx.x_2, 16), 3)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 48), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 32256)]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1[(threadIdx.x_2 + 448)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 28), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 448), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1[(threadIdx.x_2 + 560)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 35), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 560), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1[(threadIdx.x_2 + 672)] = kernel[(((((((blockIdx.x*147456) + (floordiv(floordiv(threadIdx.x_2, 16), 3)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 48), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 64512)]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1[(threadIdx.x_2 + 784)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 49), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 784), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1[(threadIdx.x_2 + 896)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 56), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 896), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1[(threadIdx.x_2 + 1008)] = kernel[(((((((blockIdx.x*147456) + (floordiv(floordiv(threadIdx.x_2, 16), 3)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 48), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 96768)]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1[(threadIdx.x_2 + 1120)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 70), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1120), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1[(threadIdx.x_2 + 1232)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 77), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1232), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          kernel.shared_1[(threadIdx.x_2 + 1344)] = kernel[(((((((blockIdx.x*147456) + (floordiv(floordiv(threadIdx.x_2, 16), 3)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 48), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 129024)]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 112;
+          if @tir.likely((threadIdx.x_2 &lt; 80), dtype=bool) {
+            kernel.shared_1[(threadIdx.x_2 + 1456)] = kernel[((((((blockIdx.x*147456) + (floordiv((floordiv(threadIdx.x_2, 16) + 91), 3)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 1456), 48), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
           }
-          for (rc.outer.inner: int32, 0, 16) {
-            let cse_var_5: int32 = (rc.outer.inner*6)
+          for (yy.outer.inner: int32, 0, 7) {
+            let cse_var_5: int32 = (yy.outer.inner + 7)
              {
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[cse_var_5]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 96)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 192)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 288)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 384)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 480)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 576)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 672)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 768)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 864)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 960)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 1056)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 1152)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 1248)]))
-              conv2d_nchw_1[14] = (conv2d_nchw_1[14] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 1344)]))
-              conv2d_nchw_1[15] = (conv2d_nchw_1[15] + (pad_temp.shared_1[(((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7))]*kernel.shared_1[(cse_var_5 + 1440)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 3)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 99)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 195)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 291)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 387)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 483)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 579)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 675)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 771)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 867)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 963)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 1059)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 1155)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 1251)]))
-              conv2d_nchw_1[14] = (conv2d_nchw_1[14] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 1347)]))
-              conv2d_nchw_1[15] = (conv2d_nchw_1[15] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[(cse_var_5 + 1443)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 1)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 97)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 193)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 289)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 385)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 481)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 577)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 673)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 769)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 865)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 961)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 1057)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 1153)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 1249)]))
-              conv2d_nchw_1[14] = (conv2d_nchw_1[14] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 1345)]))
-              conv2d_nchw_1[15] = (conv2d_nchw_1[15] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[(cse_var_5 + 1441)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 4)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 100)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 196)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 292)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 388)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 484)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 580)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 676)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 772)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 868)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 964)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 1060)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 1156)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 1252)]))
-              conv2d_nchw_1[14] = (conv2d_nchw_1[14] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 1348)]))
-              conv2d_nchw_1[15] = (conv2d_nchw_1[15] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[(cse_var_5 + 1444)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 2)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 98)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 194)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 290)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 386)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 482)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 578)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 674)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 770)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 866)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 962)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 1058)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 1154)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 1250)]))
-              conv2d_nchw_1[14] = (conv2d_nchw_1[14] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 1346)]))
-              conv2d_nchw_1[15] = (conv2d_nchw_1[15] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[(cse_var_5 + 1442)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 5)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 101)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 197)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 293)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 389)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 485)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 581)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 677)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 773)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 869)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 965)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 1061)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 1157)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 1253)]))
-              conv2d_nchw_1[14] = (conv2d_nchw_1[14] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 1349)]))
-              conv2d_nchw_1[15] = (conv2d_nchw_1[15] + (pad_temp.shared_1[((((rc.outer.inner*126) + (floordiv(threadIdx.x, 7)*9)) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[(cse_var_5 + 1445)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[((yy.outer.inner*9) + floormod(threadIdx.x, 7))]*kernel.shared_1[(floordiv(threadIdx.x, 7)*96)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[((yy.outer.inner*9) + floormod(threadIdx.x, 7))]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 48)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 1)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 49)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 2)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 50)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 3)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 51)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 4)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 52)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 5)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 53)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 126)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 6)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 126)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 54)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 127)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 7)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 127)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 55)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 128)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 8)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 128)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 56)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 189)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 9)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 189)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 57)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 190)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 10)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 190)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 58)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 191)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 11)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 191)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 59)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 252)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 12)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 252)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 60)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 253)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 13)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 253)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 61)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 254)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 14)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 254)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 62)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 315)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 15)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 315)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 63)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 316)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 16)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 316)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 64)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 317)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 17)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 317)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 65)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 378)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 18)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 378)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 66)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 379)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 19)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 379)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 67)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 380)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 20)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 380)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 68)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 441)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 21)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 441)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 69)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 442)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 22)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 442)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 70)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 443)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 23)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 443)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 71)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 504)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 24)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 504)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 72)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 505)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 25)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 505)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 73)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 506)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 26)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 506)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 74)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 567)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 27)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 567)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 75)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 568)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 28)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 568)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 76)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 569)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 29)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 569)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 77)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 630)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 30)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 630)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 78)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 631)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 31)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 631)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 79)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 632)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 32)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 632)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 80)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 693)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 33)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 693)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 81)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 694)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 34)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 694)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 82)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 695)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 35)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 695)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 83)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 756)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 36)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 756)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 84)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 757)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 37)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 757)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 85)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 758)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 38)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 758)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 86)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 819)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 39)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 819)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 87)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 820)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 40)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 820)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 88)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 821)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 41)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 821)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 89)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 882)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 42)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 882)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 90)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 883)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 43)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 883)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 91)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 884)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 44)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 884)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 92)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 945)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 45)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 945)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 93)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 946)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 46)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 946)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 94)]))
+              conv2d_nchw_1[yy.outer.inner] = (conv2d_nchw_1[yy.outer.inner] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 947)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 47)]))
+              conv2d_nchw_1[cse_var_5] = (conv2d_nchw_1[cse_var_5] + (pad_temp.shared_1[(((yy.outer.inner*9) + floormod(threadIdx.x, 7)) + 947)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*96) + 95)]))
             }
           }
         }
       }
     }
-    for (i1.inner: int32, 0, 16) {
-      compute[(((blockIdx.x*784) + (i1.inner*49)) + threadIdx.x)] = max((conv2d_nchw_1[i1.inner] + bias[((blockIdx.x*16) + i1.inner)]), 0f32)
+    for (i1.inner: int32, 0, 2) {
+      for (i2.inner: int32, 0, 7) {
+        compute[(((((blockIdx.x*1568) + (floordiv(threadIdx.x, 7)*98)) + (i1.inner*49)) + (i2.inner*7)) + floormod(threadIdx.x, 7))] = max((conv2d_nchw_1[((i1.inner*7) + i2.inner)] + bias[(((blockIdx.x*32) + (floordiv(threadIdx.x, 7)*2)) + i1.inner)]), 0f32)
+      }
     }
   }
 }
@@ -793,7 +689,7 @@ cooperative fetching, unrolling and operator fusion.</p>
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 0.221 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 0.323 ms
 </pre></div>
 </div>
 </div>
@@ -823,33 +719,33 @@ conv2d_nchw_nn_o_i, conv2d_nchw_nn_i = s[conv2d_nchw].split(conv2d_nchw_nn, fact
 conv2d_nchw_nn_o_o_i, conv2d_nchw_nn_o_i = s[conv2d_nchw].split(conv2d_nchw_nn_o_i, factor=1)
 conv2d_nchw_nn_o_o_o_i, conv2d_nchw_nn_o_o_i = s[conv2d_nchw].split(conv2d_nchw_nn_o_o_i, factor=1)
 conv2d_nchw_nn_o_o_o_o, conv2d_nchw_nn_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_nn_o_o_o_i, factor=1)
-conv2d_nchw_ff_o_i, conv2d_nchw_ff_i = s[conv2d_nchw].split(conv2d_nchw_ff, factor=16)
+conv2d_nchw_ff_o_i, conv2d_nchw_ff_i = s[conv2d_nchw].split(conv2d_nchw_ff, factor=2)
 conv2d_nchw_ff_o_o_i, conv2d_nchw_ff_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_i, factor=1)
-conv2d_nchw_ff_o_o_o_i, conv2d_nchw_ff_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_i, factor=1)
+conv2d_nchw_ff_o_o_o_i, conv2d_nchw_ff_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_i, factor=16)
 conv2d_nchw_ff_o_o_o_o, conv2d_nchw_ff_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_o_i, factor=1)
 conv2d_nchw_yy_o_i, conv2d_nchw_yy_i = s[conv2d_nchw].split(conv2d_nchw_yy, factor=1)
-conv2d_nchw_yy_o_o_i, conv2d_nchw_yy_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_i, factor=1)
-conv2d_nchw_yy_o_o_o_i, conv2d_nchw_yy_o_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_o_i, factor=7)
+conv2d_nchw_yy_o_o_i, conv2d_nchw_yy_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_i, factor=7)
+conv2d_nchw_yy_o_o_o_i, conv2d_nchw_yy_o_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_o_i, factor=1)
 conv2d_nchw_yy_o_o_o_o, conv2d_nchw_yy_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_o_o_i, factor=1)
 conv2d_nchw_xx_o_i, conv2d_nchw_xx_i = s[conv2d_nchw].split(conv2d_nchw_xx, factor=1)
 conv2d_nchw_xx_o_o_i, conv2d_nchw_xx_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_i, factor=1)
 conv2d_nchw_xx_o_o_o_i, conv2d_nchw_xx_o_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_o_i, factor=7)
 conv2d_nchw_xx_o_o_o_o, conv2d_nchw_xx_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_o_o_i, factor=1)
-conv2d_nchw_rc_o_i, conv2d_nchw_rc_i = s[conv2d_nchw].split(conv2d_nchw_rc, factor=2)
-conv2d_nchw_rc_o_o, conv2d_nchw_rc_o_i = s[conv2d_nchw].split(conv2d_nchw_rc_o_i, factor=16)
+conv2d_nchw_rc_o_i, conv2d_nchw_rc_i = s[conv2d_nchw].split(conv2d_nchw_rc, factor=16)
+conv2d_nchw_rc_o_o, conv2d_nchw_rc_o_i = s[conv2d_nchw].split(conv2d_nchw_rc_o_i, factor=1)
 conv2d_nchw_ry_o_i, conv2d_nchw_ry_i = s[conv2d_nchw].split(conv2d_nchw_ry, factor=1)
 conv2d_nchw_ry_o_o, conv2d_nchw_ry_o_i = s[conv2d_nchw].split(conv2d_nchw_ry_o_i, factor=1)
-conv2d_nchw_rx_o_i, conv2d_nchw_rx_i = s[conv2d_nchw].split(conv2d_nchw_rx, factor=1)
-conv2d_nchw_rx_o_o, conv2d_nchw_rx_o_i = s[conv2d_nchw].split(conv2d_nchw_rx_o_i, factor=3)
+conv2d_nchw_rx_o_i, conv2d_nchw_rx_i = s[conv2d_nchw].split(conv2d_nchw_rx, factor=3)
+conv2d_nchw_rx_o_o, conv2d_nchw_rx_o_i = s[conv2d_nchw].split(conv2d_nchw_rx_o_i, factor=1)
 s[conv2d_nchw].reorder(conv2d_nchw_nn_o_o_o_o, conv2d_nchw_ff_o_o_o_o, conv2d_nchw_yy_o_o_o_o, conv2d_nchw_xx_o_o_o_o, conv2d_nchw_nn_o_o_o_i, conv2d_nchw_ff_o_o_o_i, conv2d_nchw_yy_o_o_o_i, conv2d_nchw_xx_o_o_o_i, conv2d_nchw_nn_o_o_i, conv2d_nchw_ff_o_o_i, conv2d_nchw_yy_o_o_i, conv2d_nchw_xx_o_o_i, conv2d_nchw_rc_o_o, conv2d_nchw_ry_o_o, conv2d_nchw_rx_o_o, conv2d_nchw_rc_o_i, conv2d_nchw_ry_o_i, conv2d_nchw_rx_o_i, conv2d_nchw_nn_o_i, conv2d_nchw_ff_o_i, conv2d_nchw_yy_o_i, conv2d_nc [...]
 compute_i0_o_i, compute_i0_i = s[compute].split(compute_i0, factor=1)
 compute_i0_o_o_i, compute_i0_o_i = s[compute].split(compute_i0_o_i, factor=1)
 compute_i0_o_o_o, compute_i0_o_o_i = s[compute].split(compute_i0_o_o_i, factor=1)
-compute_i1_o_i, compute_i1_i = s[compute].split(compute_i1, factor=16)
-compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=1)
+compute_i1_o_i, compute_i1_i = s[compute].split(compute_i1, factor=2)
+compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=16)
 compute_i1_o_o_o, compute_i1_o_o_i = s[compute].split(compute_i1_o_o_i, factor=1)
-compute_i2_o_i, compute_i2_i = s[compute].split(compute_i2, factor=1)
-compute_i2_o_o_i, compute_i2_o_i = s[compute].split(compute_i2_o_i, factor=7)
+compute_i2_o_i, compute_i2_i = s[compute].split(compute_i2, factor=7)
+compute_i2_o_o_i, compute_i2_o_i = s[compute].split(compute_i2_o_i, factor=1)
 compute_i2_o_o_o, compute_i2_o_o_i = s[compute].split(compute_i2_o_o_i, factor=1)
 compute_i3_o_i, compute_i3_i = s[compute].split(compute_i3, factor=1)
 compute_i3_o_o_i, compute_i3_o_i = s[compute].split(compute_i3_o_i, factor=7)
@@ -872,14 +768,14 @@ s[compute].bind(compute_i0_o_i_i1_o_i_fused_i2_o_i_fused_i3_o_i_fused, te.thread
 kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused = s[kernel_shared].fuse(kernel_shared_ax0, kernel_shared_ax1, kernel_shared_ax2, kernel_shared_ax3)
 kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
 s[kernel_shared].vectorize(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i)
-kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=49)
+kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=112)
 s[kernel_shared].bind(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i, te.thread_axis(&quot;threadIdx.x&quot;))
 pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused = s[pad_temp_shared].fuse(pad_temp_shared_ax0, pad_temp_shared_ax1, pad_temp_shared_ax2, pad_temp_shared_ax3)
 pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
 s[pad_temp_shared].vectorize(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i)
-pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=49)
+pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=112)
 s[pad_temp_shared].bind(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i, te.thread_axis(&quot;threadIdx.x&quot;))
-s[conv2d_nchw].pragma(conv2d_nchw_nn_o_o_o_o, &quot;auto_unroll_max_step&quot;, 1024)
+s[conv2d_nchw].pragma(conv2d_nchw_nn_o_o_o_o, &quot;auto_unroll_max_step&quot;, 512)
 s[conv2d_nchw].pragma(conv2d_nchw_nn_o_o_o_o, &quot;unroll_explicit&quot;, True)
 
 CUDA source code:
@@ -897,210 +793,157 @@ CUDA source code:
   #define int64_t long long
   #define uint64_t unsigned long long
 #endif
-extern &quot;C&quot; __global__ void __launch_bounds__(49) default_function_kernel0(float* __restrict__ data, float* __restrict__ kernel, float* __restrict__ compute, float* __restrict__ bias) {
-  float conv2d_nchw[16];
-  __shared__ float pad_temp_shared[2016];
+extern &quot;C&quot; __global__ void __launch_bounds__(112) default_function_kernel0(float* __restrict__ data, float* __restrict__ kernel, float* __restrict__ compute, float* __restrict__ bias) {
+  float conv2d_nchw[14];
+  __shared__ float pad_temp_shared[1008];
   __shared__ float kernel_shared[1536];
   conv2d_nchw[0] = 0.000000e+00f;
-  conv2d_nchw[1] = 0.000000e+00f;
-  conv2d_nchw[2] = 0.000000e+00f;
-  conv2d_nchw[3] = 0.000000e+00f;
-  conv2d_nchw[4] = 0.000000e+00f;
-  conv2d_nchw[5] = 0.000000e+00f;
-  conv2d_nchw[6] = 0.000000e+00f;
   conv2d_nchw[7] = 0.000000e+00f;
+  conv2d_nchw[1] = 0.000000e+00f;
   conv2d_nchw[8] = 0.000000e+00f;
+  conv2d_nchw[2] = 0.000000e+00f;
   conv2d_nchw[9] = 0.000000e+00f;
+  conv2d_nchw[3] = 0.000000e+00f;
   conv2d_nchw[10] = 0.000000e+00f;
+  conv2d_nchw[4] = 0.000000e+00f;
   conv2d_nchw[11] = 0.000000e+00f;
+  conv2d_nchw[5] = 0.000000e+00f;
   conv2d_nchw[12] = 0.000000e+00f;
+  conv2d_nchw[6] = 0.000000e+00f;
   conv2d_nchw[13] = 0.000000e+00f;
-  conv2d_nchw[14] = 0.000000e+00f;
-  conv2d_nchw[15] = 0.000000e+00f;
-  for (int rc_outer_outer = 0; rc_outer_outer &lt; 16; ++rc_outer_outer) {
+  for (int rc_outer_outer = 0; rc_outer_outer &lt; 32; ++rc_outer_outer) {
     for (int ry_outer_outer = 0; ry_outer_outer &lt; 3; ++ry_outer_outer) {
       __syncthreads();
-      pad_temp_shared[((int)threadIdx.x)] = ((((1 &lt;= ((((int)threadIdx.x) / 9) + ry_outer_outer)) &amp;&amp; (1 &lt;= (((int)threadIdx.x) % 9))) &amp;&amp; ((((int)threadIdx.x) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 49)] = (((((1 &lt;= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 4) % 9))) &amp;&amp; (((((int)threadIdx.x) + 4) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 49) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 98)] = (((((1 &lt;= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 8) % 9))) &amp;&amp; (((((int)threadIdx.x) + 8) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 98) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 147)] = (((((1 &lt;= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 3) % 9))) &amp;&amp; (((((int)threadIdx.x) + 3) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 147) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 196)] = (((((1 &lt;= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 7) % 9))) &amp;&amp; (((((int)threadIdx.x) + 7) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 196) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 245)] = (((((1 &lt;= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 2) % 9))) &amp;&amp; (((((int)threadIdx.x) + 2) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 245) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 294)] = (((((1 &lt;= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 6) % 9))) &amp;&amp; (((((int)threadIdx.x) + 6) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 294) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 343)] = (((((1 &lt;= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 1) % 9))) &amp;&amp; (((((int)threadIdx.x) + 1) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 343) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 392)] = ((((((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) &lt; 8) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 5) % 9))) &amp;&amp; (((((int)threadIdx.x) + 5) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 392) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 441)] = ((((1 &lt;= ((((int)threadIdx.x) / 9) + ry_outer_outer)) &amp;&amp; (1 &lt;= (((int)threadIdx.x) % 9))) &amp;&amp; ((((int)threadIdx.x) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) + 335)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 490)] = (((((1 &lt;= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 4) % 9))) &amp;&amp; (((((int)threadIdx.x) + 4) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 490) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 539)] = (((((1 &lt;= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 8) % 9))) &amp;&amp; (((((int)threadIdx.x) + 8) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 539) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 588)] = (((((1 &lt;= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 3) % 9))) &amp;&amp; (((((int)threadIdx.x) + 3) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 588) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 637)] = (((((1 &lt;= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 7) % 9))) &amp;&amp; (((((int)threadIdx.x) + 7) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 637) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 686)] = (((((1 &lt;= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 2) % 9))) &amp;&amp; (((((int)threadIdx.x) + 2) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 686) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 735)] = (((((1 &lt;= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 6) % 9))) &amp;&amp; (((((int)threadIdx.x) + 6) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 735) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 784)] = (((((1 &lt;= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 1) % 9))) &amp;&amp; (((((int)threadIdx.x) + 1) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 784) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 833)] = ((((((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) &lt; 8) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 5) % 9))) &amp;&amp; (((((int)threadIdx.x) + 5) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 833) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 882)] = ((((1 &lt;= ((((int)threadIdx.x) / 9) + ry_outer_outer)) &amp;&amp; (1 &lt;= (((int)threadIdx.x) % 9))) &amp;&amp; ((((int)threadIdx.x) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) + 678)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 931)] = (((((1 &lt;= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 4) % 9))) &amp;&amp; (((((int)threadIdx.x) + 4) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 931) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 980)] = (((((1 &lt;= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 8) % 9))) &amp;&amp; (((((int)threadIdx.x) + 8) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 980) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1029)] = (((((1 &lt;= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 3) % 9))) &amp;&amp; (((((int)threadIdx.x) + 3) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1029) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1078)] = (((((1 &lt;= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 7) % 9))) &amp;&amp; (((((int)threadIdx.x) + 7) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1078) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1127)] = (((((1 &lt;= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 2) % 9))) &amp;&amp; (((((int)threadIdx.x) + 2) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1127) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1176)] = (((((1 &lt;= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 6) % 9))) &amp;&amp; (((((int)threadIdx.x) + 6) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1176) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1225)] = (((((1 &lt;= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 1) % 9))) &amp;&amp; (((((int)threadIdx.x) + 1) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1225) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1274)] = ((((((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) &lt; 8) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 5) % 9))) &amp;&amp; (((((int)threadIdx.x) + 5) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1274) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1323)] = ((((1 &lt;= ((((int)threadIdx.x) / 9) + ry_outer_outer)) &amp;&amp; (1 &lt;= (((int)threadIdx.x) % 9))) &amp;&amp; ((((int)threadIdx.x) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) + 1021)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1372)] = (((((1 &lt;= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 4) % 9))) &amp;&amp; (((((int)threadIdx.x) + 4) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1372) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1421)] = (((((1 &lt;= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 8) % 9))) &amp;&amp; (((((int)threadIdx.x) + 8) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1421) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1470)] = (((((1 &lt;= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 3) % 9))) &amp;&amp; (((((int)threadIdx.x) + 3) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1470) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1519)] = (((((1 &lt;= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 7) % 9))) &amp;&amp; (((((int)threadIdx.x) + 7) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1519) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1568)] = (((((1 &lt;= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 2) % 9))) &amp;&amp; (((((int)threadIdx.x) + 2) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1568) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1617)] = (((((1 &lt;= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 6) % 9))) &amp;&amp; (((((int)threadIdx.x) + 6) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1617) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1666)] = (((((1 &lt;= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 1) % 9))) &amp;&amp; (((((int)threadIdx.x) + 1) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1666) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1715)] = ((((((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) &lt; 8) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 5) % 9))) &amp;&amp; (((((int)threadIdx.x) + 5) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1715) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1764)] = ((((1 &lt;= ((((int)threadIdx.x) / 9) + ry_outer_outer)) &amp;&amp; (1 &lt;= (((int)threadIdx.x) % 9))) &amp;&amp; ((((int)threadIdx.x) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) + 1364)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1813)] = (((((1 &lt;= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 4) % 9))) &amp;&amp; (((((int)threadIdx.x) + 4) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1813) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1862)] = (((((1 &lt;= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 8) % 9))) &amp;&amp; (((((int)threadIdx.x) + 8) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1862) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1911)] = (((((1 &lt;= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 3) % 9))) &amp;&amp; (((((int)threadIdx.x) + 3) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1911) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
-      pad_temp_shared[(((int)threadIdx.x) + 1960)] = (((((1 &lt;= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 7) % 9))) &amp;&amp; (((((int)threadIdx.x) + 7) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 1960) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
-      if (((int)threadIdx.x) &lt; 7) {
-        pad_temp_shared[(((int)threadIdx.x) + 2009)] = (((((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) &lt; 8) &amp;&amp; (((int)threadIdx.x) &lt; 6)) ? data[(((((rc_outer_outer * 1568) + (((((int)threadIdx.x) + 2009) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) + 2)) - 8)] : 0.000000e+00f);
-      }
-      kernel_shared[((int)threadIdx.x)] = kernel[(((((((int)blockIdx.x) * 73728) + (rc_outer_outer * 288)) + ((((int)threadIdx.x) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 49)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 49) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 49) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 98)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 98) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 2) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 147)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 147) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) / 3) + 17) &amp; 31) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 196)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 196) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 4) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 245)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 245) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 53) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 294)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 294) / 96) * 4608)) + (rc_outer_outer * 288)) + (((((int)threadIdx.x) / 3) + 2) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 343)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 343) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 55) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 392)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 392) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 8) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 441)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 441) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) / 3) + 19) &amp; 31) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 490)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 490) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 10) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 539)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 539) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 59) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 588)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 588) / 96) * 4608)) + (rc_outer_outer * 288)) + (((((int)threadIdx.x) / 3) + 4) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 637)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 637) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 61) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 686)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 686) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 14) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 735)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 735) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) / 3) + 21) &amp; 31) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 784)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 784) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 16) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 833)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 833) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 65) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 882)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 882) / 96) * 4608)) + (rc_outer_outer * 288)) + (((((int)threadIdx.x) / 3) + 6) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 931)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 931) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 67) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 980)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 980) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 20) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 1029)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1029) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) / 3) + 23) &amp; 31) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 1078)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1078) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 22) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 1127)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1127) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 71) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 1176)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1176) / 96) * 4608)) + (rc_outer_outer * 288)) + (((((int)threadIdx.x) / 3) + 8) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 1225)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1225) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 73) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 1274)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1274) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 26) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 1323)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1323) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) / 3) + 25) &amp; 31) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 1372)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1372) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 28) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 1421)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1421) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 77) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-      kernel_shared[(((int)threadIdx.x) + 1470)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1470) / 96) * 4608)) + (rc_outer_outer * 288)) + (((((int)threadIdx.x) / 3) + 10) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-      if (((int)threadIdx.x) &lt; 17) {
-        kernel_shared[(((int)threadIdx.x) + 1519)] = kernel[((((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1519) / 96) * 4608)) + (rc_outer_outer * 288)) + ((((((int)threadIdx.x) + 79) % 96) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
+      pad_temp_shared[((int)threadIdx.x)] = (((((1 &lt;= (((((int)threadIdx.x) % 63) / 9) + ry_outer_outer)) &amp;&amp; ((((((int)threadIdx.x) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= (((int)threadIdx.x) % 9))) &amp;&amp; ((((int)threadIdx.x) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 784) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 112)] = (((((1 &lt;= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 4) % 9))) &amp;&amp; (((((int)threadIdx.x) + 4) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 112) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 224)] = (((((1 &lt;= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 8) % 9))) &amp;&amp; (((((int)threadIdx.x) + 8) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 224) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 336)] = (((((1 &lt;= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 3) % 9))) &amp;&amp; (((((int)threadIdx.x) + 3) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 336) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 448)] = (((((1 &lt;= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 7) % 9))) &amp;&amp; (((((int)threadIdx.x) + 7) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 448) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 560)] = (((((1 &lt;= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 2) % 9))) &amp;&amp; (((((int)threadIdx.x) + 2) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 560) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 672)] = (((((1 &lt;= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 6) % 9))) &amp;&amp; (((((int)threadIdx.x) + 6) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 672) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 784)] = (((((1 &lt;= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 1) % 9))) &amp;&amp; (((((int)threadIdx.x) + 1) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 784) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 896)] = (((((1 &lt;= ((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 5) % 9))) &amp;&amp; (((((int)threadIdx.x) + 5) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 896) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
+      kernel_shared[((int)threadIdx.x)] = kernel[((((((((int)blockIdx.x) * 147456) + ((((int)threadIdx.x) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
+      kernel_shared[(((int)threadIdx.x) + 112)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 112) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 16) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
+      kernel_shared[(((int)threadIdx.x) + 224)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 224) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 32) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
+      kernel_shared[(((int)threadIdx.x) + 336)] = kernel[(((((((((int)blockIdx.x) * 147456) + ((((int)threadIdx.x) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 32256)];
+      kernel_shared[(((int)threadIdx.x) + 448)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 448) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 16) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
+      kernel_shared[(((int)threadIdx.x) + 560)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 560) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 32) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
+      kernel_shared[(((int)threadIdx.x) + 672)] = kernel[(((((((((int)blockIdx.x) * 147456) + ((((int)threadIdx.x) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 64512)];
+      kernel_shared[(((int)threadIdx.x) + 784)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 784) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 16) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
+      kernel_shared[(((int)threadIdx.x) + 896)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 896) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 32) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
+      kernel_shared[(((int)threadIdx.x) + 1008)] = kernel[(((((((((int)blockIdx.x) * 147456) + ((((int)threadIdx.x) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 96768)];
+      kernel_shared[(((int)threadIdx.x) + 1120)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 1120) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 16) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
+      kernel_shared[(((int)threadIdx.x) + 1232)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 1232) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 32) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
+      kernel_shared[(((int)threadIdx.x) + 1344)] = kernel[(((((((((int)blockIdx.x) * 147456) + ((((int)threadIdx.x) / 48) * 4608)) + (rc_outer_outer * 144)) + (((((int)threadIdx.x) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 129024)];
+      if (((int)threadIdx.x) &lt; 80) {
+        kernel_shared[(((int)threadIdx.x) + 1456)] = kernel[((((((((int)blockIdx.x) * 147456) + (((((int)threadIdx.x) + 1456) / 48) * 4608)) + (rc_outer_outer * 144)) + ((((((int)threadIdx.x) + 16) % 48) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
       }
       __syncthreads();
-      for (int rc_outer_inner = 0; rc_outer_inner &lt; 16; ++rc_outer_inner) {
-        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[(rc_outer_inner * 6)]));
-        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 96)]));
-        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 192)]));
-        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 288)]));
-        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 384)]));
-        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 480)]));
-        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 576)]));
-        conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 672)]));
-        conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 768)]));
-        conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 864)]));
-        conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 960)]));
-        conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 1056)]));
-        conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 1152)]));
-        conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 1248)]));
-        conv2d_nchw[14] = (conv2d_nchw[14] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 1344)]));
-        conv2d_nchw[15] = (conv2d_nchw[15] + (pad_temp_shared[(((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7))] * kernel_shared[((rc_outer_inner * 6) + 1440)]));
-        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 3)]));
-        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 99)]));
-        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 195)]));
-        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 291)]));
-        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 387)]));
-        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 483)]));
-        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 579)]));
-        conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 675)]));
-        conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 771)]));
-        conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 867)]));
-        conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 963)]));
-        conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 1059)]));
-        conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 1155)]));
-        conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 1251)]));
-        conv2d_nchw[14] = (conv2d_nchw[14] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 1347)]));
-        conv2d_nchw[15] = (conv2d_nchw[15] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[((rc_outer_inner * 6) + 1443)]));
-        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 1)]));
-        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 97)]));
-        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 193)]));
-        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 289)]));
-        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 385)]));
-        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 481)]));
-        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 577)]));
-        conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 673)]));
-        conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 769)]));
-        conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 865)]));
-        conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 961)]));
-        conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 1057)]));
-        conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 1153)]));
-        conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 1249)]));
-        conv2d_nchw[14] = (conv2d_nchw[14] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 1345)]));
-        conv2d_nchw[15] = (conv2d_nchw[15] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[((rc_outer_inner * 6) + 1441)]));
-        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 4)]));
-        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 100)]));
-        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 196)]));
-        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 292)]));
-        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 388)]));
-        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 484)]));
-        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 580)]));
-        conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 676)]));
-        conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 772)]));
-        conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 868)]));
-        conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 964)]));
-        conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 1060)]));
-        conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 1156)]));
-        conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 1252)]));
-        conv2d_nchw[14] = (conv2d_nchw[14] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 1348)]));
-        conv2d_nchw[15] = (conv2d_nchw[15] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[((rc_outer_inner * 6) + 1444)]));
-        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 2)]));
-        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 98)]));
-        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 194)]));
-        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 290)]));
-        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 386)]));
-        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 482)]));
-        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 578)]));
-        conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 674)]));
-        conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 770)]));
-        conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 866)]));
-        conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 962)]));
-        conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 1058)]));
-        conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 1154)]));
-        conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 1250)]));
-        conv2d_nchw[14] = (conv2d_nchw[14] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 1346)]));
-        conv2d_nchw[15] = (conv2d_nchw[15] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[((rc_outer_inner * 6) + 1442)]));
-        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 5)]));
-        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 101)]));
-        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 197)]));
-        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 293)]));
-        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 389)]));
-        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 485)]));
-        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 581)]));
-        conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 677)]));
-        conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 773)]));
-        conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 869)]));
-        conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 965)]));
-        conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 1061)]));
-        conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 1157)]));
-        conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 1253)]));
-        conv2d_nchw[14] = (conv2d_nchw[14] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 1349)]));
-        conv2d_nchw[15] = (conv2d_nchw[15] + (pad_temp_shared[((((rc_outer_inner * 126) + ((((int)threadIdx.x) / 7) * 9)) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[((rc_outer_inner * 6) + 1445)]));
+      for (int yy_outer_inner = 0; yy_outer_inner &lt; 7; ++yy_outer_inner) {
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[((yy_outer_inner * 9) + (((int)threadIdx.x) % 7))] * kernel_shared[((((int)threadIdx.x) / 7) * 96)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[((yy_outer_inner * 9) + (((int)threadIdx.x) % 7))] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 48)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 1)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 49)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 2)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 50)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 3)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 51)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 4)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 52)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 5)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 53)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 126)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 6)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 126)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 54)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 127)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 7)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 127)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 55)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 128)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 8)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 128)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 56)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 189)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 9)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 189)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 57)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 190)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 10)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 190)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 58)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 191)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 11)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 191)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 59)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 252)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 12)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 252)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 60)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 253)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 13)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 253)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 61)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 254)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 14)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 254)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 62)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 315)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 15)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 315)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 63)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 316)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 16)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 316)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 64)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 317)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 17)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 317)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 65)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 378)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 18)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 378)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 66)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 379)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 19)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 379)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 67)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 380)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 20)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 380)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 68)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 441)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 21)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 441)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 69)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 442)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 22)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 442)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 70)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 443)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 23)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 443)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 71)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 504)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 24)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 504)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 72)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 505)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 25)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 505)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 73)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 506)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 26)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 506)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 74)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 567)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 27)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 567)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 75)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 568)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 28)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 568)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 76)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 569)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 29)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 569)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 77)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 630)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 30)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 630)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 78)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 631)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 31)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 631)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 79)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 632)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 32)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 632)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 80)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 693)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 33)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 693)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 81)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 694)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 34)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 694)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 82)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 695)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 35)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 695)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 83)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 756)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 36)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 756)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 84)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 757)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 37)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 757)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 85)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 758)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 38)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 758)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 86)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 819)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 39)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 819)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 87)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 820)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 40)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 820)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 88)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 821)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 41)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 821)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 89)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 882)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 42)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 882)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 90)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 883)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 43)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 883)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 91)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 884)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 44)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 884)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 92)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 945)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 45)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 945)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 93)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 946)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 46)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 946)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 94)]));
+        conv2d_nchw[yy_outer_inner] = (conv2d_nchw[yy_outer_inner] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 947)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 47)]));
+        conv2d_nchw[(yy_outer_inner + 7)] = (conv2d_nchw[(yy_outer_inner + 7)] + (pad_temp_shared[(((yy_outer_inner * 9) + (((int)threadIdx.x) % 7)) + 947)] * kernel_shared[(((((int)threadIdx.x) / 7) * 96) + 95)]));
       }
     }
   }
-  for (int i1_inner = 0; i1_inner &lt; 16; ++i1_inner) {
-    compute[(((((int)blockIdx.x) * 784) + (i1_inner * 49)) + ((int)threadIdx.x))] = max((conv2d_nchw[i1_inner] + bias[((((int)blockIdx.x) * 16) + i1_inner)]), 0.000000e+00f);
+  for (int i1_inner = 0; i1_inner &lt; 2; ++i1_inner) {
+    for (int i2_inner = 0; i2_inner &lt; 7; ++i2_inner) {
+      compute[(((((((int)blockIdx.x) * 1568) + ((((int)threadIdx.x) / 7) * 98)) + (i1_inner * 49)) + (i2_inner * 7)) + (((int)threadIdx.x) % 7))] = max((conv2d_nchw[((i1_inner * 7) + i2_inner)] + bias[(((((int)blockIdx.x) * 32) + ((((int)threadIdx.x) / 7) * 2)) + i1_inner)]), 0.000000e+00f);
+    }
   }
 }
 </pre></div>
@@ -1138,7 +981,7 @@ In the example below we resume the status and do more 5 trials.</p>
 Get devices for measurement successfully!
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 2 minutes  22.038 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 2 minutes  31.485 seconds)</p>
 <div class="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-tune-with-autoscheduler-tune-conv2d-layer-cuda-py">
 <div class="sphx-glr-download docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/e3e540f3b477c0c52d8eb73e674e8ffd/tune_conv2d_layer_cuda.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">tune_conv2d_layer_cuda.py</span></code></a></p>
diff --git a/docs/how_to/tune_with_autoscheduler/tune_network_cuda.html b/docs/how_to/tune_with_autoscheduler/tune_network_cuda.html
index 628a94888..55994ef92 100644
--- a/docs/how_to/tune_with_autoscheduler/tune_network_cuda.html
+++ b/docs/how_to/tune_with_autoscheduler/tune_network_cuda.html
@@ -876,7 +876,7 @@ so we can read the log file and load the best schedules.</p>
 Evaluate inference time cost...
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-  10.0719      10.0476      10.1251      10.0430       0.0376
+   9.8670       9.8753       9.8780       9.8477       0.0137
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/tune_with_autoscheduler/tune_network_x86.html b/docs/how_to/tune_with_autoscheduler/tune_network_x86.html
index 0c91859a2..725a7509e 100644
--- a/docs/how_to/tune_with_autoscheduler/tune_network_x86.html
+++ b/docs/how_to/tune_with_autoscheduler/tune_network_x86.html
@@ -895,7 +895,7 @@ so we can read the log file and load the best schedules.</p>
 Evaluate inference time cost...
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-  753.7759     755.2016     755.7372     750.3888      2.4050
+  806.8567     808.5949     811.0921     800.8830      4.3453
 </pre></div>
 </div>
 </div>
@@ -917,7 +917,7 @@ to learn how to use the RPC Tracker and RPC Server.
 To use the RPC Tracker in auto-scheduler, replace the runner in <code class="code docutils literal notranslate"><span class="pre">TuningOptions</span></code>
 with <a class="reference internal" href="../../reference/api/python/auto_scheduler.html#tvm.auto_scheduler.RPCRunner" title="tvm.auto_scheduler.RPCRunner"><code class="xref any py py-class docutils literal notranslate"><span class="pre">auto_scheduler.RPCRunner</span></code></a>.</p></li>
 </ol>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  19.370 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  25.057 seconds)</p>
 <div class="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-tune-with-autoscheduler-tune-network-x86-py">
 <div class="sphx-glr-download docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/e416b94ca1090b0897c0f6e0df95b911/tune_network_x86.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">tune_network_x86.py</span></code></a></p>
diff --git a/docs/how_to/tune_with_autoscheduler/tune_sparse_x86.html b/docs/how_to/tune_with_autoscheduler/tune_sparse_x86.html
index 4250ccdfe..14983a85e 100644
--- a/docs/how_to/tune_with_autoscheduler/tune_sparse_x86.html
+++ b/docs/how_to/tune_with_autoscheduler/tune_sparse_x86.html
@@ -600,80 +600,75 @@ layout transformation, parallelization, vectorization, unrolling, and operator f
              placeholder_4: Buffer(placeholder_14: Pointer(float32), float32, [65536], []),
              compute: Buffer(compute_2: Pointer(float32), float32, [65536], [])}
   buffer_map = {placeholder_5: placeholder, placeholder_6: placeholder_1, placeholder_7: placeholder_2, placeholder_8: placeholder_3, placeholder_9: placeholder_4, compute_1: compute}
-  preflattened_buffer_map = {compute_1: compute_3: Buffer(compute_2, float32, [128, 512], []), placeholder_8: placeholder_15: Buffer(placeholder_13, int32, [33], []), placeholder_6: placeholder_16: Buffer(placeholder_11, float32, [4916, 16, 1], []), placeholder_7: placeholder_17: Buffer(placeholder_12, int32, [4916], []), placeholder_9: placeholder_18: Buffer(placeholder_14, float32, [128, 512], []), placeholder_5: placeholder_19: Buffer(placeholder_10, float32, [128, 256], [])} {
-  for (i0.outer.i1.outer.fused: int32, 0, 16) &quot;parallel&quot; {
-    allocate(compute_4: Pointer(global float32), float32, [4096]), storage_scope = global {
+  preflattened_buffer_map = {placeholder_7: placeholder_15: Buffer(placeholder_12, int32, [4916], []), placeholder_6: placeholder_16: Buffer(placeholder_11, float32, [4916, 16, 1], []), compute_1: compute_3: Buffer(compute_2, float32, [128, 512], []), placeholder_8: placeholder_17: Buffer(placeholder_13, int32, [33], []), placeholder_5: placeholder_18: Buffer(placeholder_10, float32, [128, 256], []), placeholder_9: placeholder_19: Buffer(placeholder_14, float32, [128, 512], [])} {
+  for (i0.outer.i1.outer.fused: int32, 0, 32) &quot;parallel&quot; {
+    allocate(compute_4: Pointer(global float32), float32, [2048]), storage_scope = global {
       for (i.outer.inner: int32, 0, 2) {
-        for (nb_j.inner: int32, 0, 2) {
-          for (i.inner.init: int32, 0, 64) {
-            let cse_var_1: int32 = (((i.outer.inner*2048) + (i.inner.init*32)) + (nb_j.inner*16))
-             {
-              compute_5: Buffer(compute_4, float32, [4096], [])[cse_var_1] = 0f32
-              compute_5[(cse_var_1 + 1)] = 0f32
-              compute_5[(cse_var_1 + 2)] = 0f32
-              compute_5[(cse_var_1 + 3)] = 0f32
-              compute_5[(cse_var_1 + 4)] = 0f32
-              compute_5[(cse_var_1 + 5)] = 0f32
-              compute_5[(cse_var_1 + 6)] = 0f32
-              compute_5[(cse_var_1 + 7)] = 0f32
-              compute_5[(cse_var_1 + 8)] = 0f32
-              compute_5[(cse_var_1 + 9)] = 0f32
-              compute_5[(cse_var_1 + 10)] = 0f32
-              compute_5[(cse_var_1 + 11)] = 0f32
-              compute_5[(cse_var_1 + 12)] = 0f32
-              compute_5[(cse_var_1 + 13)] = 0f32
-              compute_5[(cse_var_1 + 14)] = 0f32
-              compute_5[(cse_var_1 + 15)] = 0f32
-            }
+        for (i.inner.init: int32, 0, 64) {
+          let cse_var_1: int32 = ((i.outer.inner*1024) + (i.inner.init*16))
+           {
+            compute_5: Buffer(compute_4, float32, [2048], [])[cse_var_1] = 0f32
+            compute_5[(cse_var_1 + 1)] = 0f32
+            compute_5[(cse_var_1 + 2)] = 0f32
+            compute_5[(cse_var_1 + 3)] = 0f32
+            compute_5[(cse_var_1 + 4)] = 0f32
+            compute_5[(cse_var_1 + 5)] = 0f32
+            compute_5[(cse_var_1 + 6)] = 0f32
+            compute_5[(cse_var_1 + 7)] = 0f32
+            compute_5[(cse_var_1 + 8)] = 0f32
+            compute_5[(cse_var_1 + 9)] = 0f32
+            compute_5[(cse_var_1 + 10)] = 0f32
+            compute_5[(cse_var_1 + 11)] = 0f32
+            compute_5[(cse_var_1 + 12)] = 0f32
+            compute_5[(cse_var_1 + 13)] = 0f32
+            compute_5[(cse_var_1 + 14)] = 0f32
+            compute_5[(cse_var_1 + 15)] = 0f32
           }
-          for (elem_idx: int32, 0, let cse_var_2: int32 = ((i0.outer.i1.outer.fused*2) + nb_j.inner) in (placeholder_3[(cse_var_2 + 1)] - placeholder_3[cse_var_2])) {
-            for (i.inner: int32, 0, 64) {
-              let cse_var_21: int32 = (elem_idx*16)
-              let cse_var_20: int32 = ((i0.outer.i1.outer.fused*2) + nb_j.inner)
-              let cse_var_19: int32 = ((i.outer.inner*16384) + (i.inner*256))
-              let cse_var_18: int32 = (((i.outer.inner*2048) + (i.inner*32)) + (nb_j.inner*16))
-              let cse_var_17: int32 = (cse_var_18 + 1)
-              let cse_var_16: int32 = (cse_var_18 + 11)
-              let cse_var_15: int32 = (cse_var_18 + 12)
-              let cse_var_14: int32 = (cse_var_18 + 13)
-              let cse_var_13: int32 = (cse_var_18 + 14)
-              let cse_var_12: int32 = (cse_var_18 + 15)
-              let cse_var_11: int32 = (cse_var_18 + 2)
-              let cse_var_10: int32 = (cse_var_18 + 3)
-              let cse_var_9: int32 = (cse_var_18 + 4)
-              let cse_var_8: int32 = (cse_var_18 + 5)
-              let cse_var_7: int32 = (cse_var_18 + 6)
-              let cse_var_6: int32 = (cse_var_18 + 7)
-              let cse_var_5: int32 = (cse_var_18 + 8)
-              let cse_var_4: int32 = (cse_var_18 + 9)
-              let cse_var_3: int32 = (cse_var_18 + 10)
-               {
-                compute_5[cse_var_18] = (compute_5[cse_var_18] + (placeholder_1[((placeholder_3[cse_var_20]*16) + cse_var_21)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_17] = (compute_5[cse_var_17] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 1)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_11] = (compute_5[cse_var_11] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 2)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_10] = (compute_5[cse_var_10] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 3)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_9] = (compute_5[cse_var_9] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 4)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_8] = (compute_5[cse_var_8] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 5)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_7] = (compute_5[cse_var_7] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 6)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_6] = (compute_5[cse_var_6] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 7)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_5] = (compute_5[cse_var_5] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 8)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_4] = (compute_5[cse_var_4] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 9)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_3] = (compute_5[cse_var_3] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 10)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_16] = (compute_5[cse_var_16] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 11)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_15] = (compute_5[cse_var_15] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 12)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_14] = (compute_5[cse_var_14] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 13)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_13] = (compute_5[cse_var_13] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 14)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-                compute_5[cse_var_12] = (compute_5[cse_var_12] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 15)]*max(placeholder[(cse_var_19 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
-              }
+        }
+        for (elem_idx: int32, 0, (placeholder_3[(i0.outer.i1.outer.fused + 1)] - placeholder_3[i0.outer.i1.outer.fused])) {
+          for (i.inner: int32, 0, 64) {
+            let cse_var_19: int32 = (elem_idx*16)
+            let cse_var_18: int32 = ((i.outer.inner*16384) + (i.inner*256))
+            let cse_var_17: int32 = ((i.outer.inner*1024) + (i.inner*16))
+            let cse_var_16: int32 = (cse_var_17 + 1)
+            let cse_var_15: int32 = (cse_var_17 + 11)
+            let cse_var_14: int32 = (cse_var_17 + 12)
+            let cse_var_13: int32 = (cse_var_17 + 13)
+            let cse_var_12: int32 = (cse_var_17 + 14)
+            let cse_var_11: int32 = (cse_var_17 + 15)
+            let cse_var_10: int32 = (cse_var_17 + 2)
+            let cse_var_9: int32 = (cse_var_17 + 3)
+            let cse_var_8: int32 = (cse_var_17 + 4)
+            let cse_var_7: int32 = (cse_var_17 + 5)
+            let cse_var_6: int32 = (cse_var_17 + 6)
+            let cse_var_5: int32 = (cse_var_17 + 7)
+            let cse_var_4: int32 = (cse_var_17 + 8)
+            let cse_var_3: int32 = (cse_var_17 + 9)
+            let cse_var_2: int32 = (cse_var_17 + 10)
+             {
+              compute_5[cse_var_17] = (compute_5[cse_var_17] + (placeholder_1[((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_16] = (compute_5[cse_var_16] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 1)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_10] = (compute_5[cse_var_10] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 2)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_9] = (compute_5[cse_var_9] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 3)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_8] = (compute_5[cse_var_8] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 4)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_7] = (compute_5[cse_var_7] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 5)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_6] = (compute_5[cse_var_6] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 6)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_5] = (compute_5[cse_var_5] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 7)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_4] = (compute_5[cse_var_4] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 8)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_3] = (compute_5[cse_var_3] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 9)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_2] = (compute_5[cse_var_2] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 10)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_15] = (compute_5[cse_var_15] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 11)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_14] = (compute_5[cse_var_14] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 12)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_13] = (compute_5[cse_var_13] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 13)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_12] = (compute_5[cse_var_12] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 14)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
+              compute_5[cse_var_11] = (compute_5[cse_var_11] + (placeholder_1[(((placeholder_3[i0.outer.i1.outer.fused]*16) + cse_var_19) + 15)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[i0.outer.i1.outer.fused] + elem_idx)])], 0f32)))
             }
           }
         }
       }
       for (i0.inner: int32, 0, 128) {
-        for (i1.inner: int32, 0, 32) {
-          let cse_var_22: int32 = (((i0.inner*512) + (i0.outer.i1.outer.fused*32)) + i1.inner)
-          compute[cse_var_22] = max((compute_5[((i0.inner*32) + i1.inner)] + placeholder_4[cse_var_22]), 0f32)
-        }
+        let cse_var_20: int32 = ((i0.inner*512) + (i0.outer.i1.outer.fused*16))
+        compute[ramp(cse_var_20, 1, 16)] = max((compute_5[ramp((i0.inner*16), 1, 16)] + placeholder_4[ramp(cse_var_20, 1, 16)]), broadcast(0f32, 16))
       }
     }
   }
@@ -712,7 +707,7 @@ layout transformation, parallelization, vectorization, unrolling, and operator f
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 1.843 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 1.836 ms
 </pre></div>
 </div>
 <div class="admonition note">
diff --git a/docs/how_to/tune_with_autotvm/sg_execution_times.html b/docs/how_to/tune_with_autotvm/sg_execution_times.html
index 6edde6c29..05ad7ad45 100644
--- a/docs/how_to/tune_with_autotvm/sg_execution_times.html
+++ b/docs/how_to/tune_with_autotvm/sg_execution_times.html
@@ -300,13 +300,13 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-tune-with-autotvm-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:43.212</strong> total execution time for <strong>how_to_tune_with_autotvm</strong> files:</p>
+<p><strong>00:45.368</strong> total execution time for <strong>how_to_tune_with_autotvm</strong> files:</p>
 <ul class="simple">
-<li><p><strong>00:42.348</strong>: <a class="reference internal" href="tune_conv2d_cuda.html#sphx-glr-how-to-tune-with-autotvm-tune-conv2d-cuda-py"><span class="std std-ref">Tuning High Performance Convolution on NVIDIA GPUs</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_conv2d_cuda.py</span></code>)</p></li>
-<li><p><strong>00:00.221</strong>: <a class="reference internal" href="tune_relay_mobile_gpu.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-mobile-gpu-py"><span class="std std-ref">Auto-tuning a Convolutional Network for Mobile GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_mobile_gpu.py</span></code>)</p></li>
-<li><p><strong>00:00.219</strong>: <a class="reference internal" href="tune_relay_arm.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-arm-py"><span class="std std-ref">Auto-tuning a Convolutional Network for ARM CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_arm.py</span></code>)</p></li>
-<li><p><strong>00:00.215</strong>: <a class="reference internal" href="tune_relay_x86.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-x86-py"><span class="std std-ref">Auto-tuning a Convolutional Network for x86 CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_x86.py</span></code>)</p></li>
-<li><p><strong>00:00.209</strong>: <a class="reference internal" href="tune_relay_cuda.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-cuda-py"><span class="std std-ref">Auto-tuning a Convolutional Network for NVIDIA GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_cuda.py</span></code>)</p></li>
+<li><p><strong>00:44.411</strong>: <a class="reference internal" href="tune_conv2d_cuda.html#sphx-glr-how-to-tune-with-autotvm-tune-conv2d-cuda-py"><span class="std std-ref">Tuning High Performance Convolution on NVIDIA GPUs</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_conv2d_cuda.py</span></code>)</p></li>
+<li><p><strong>00:00.253</strong>: <a class="reference internal" href="tune_relay_x86.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-x86-py"><span class="std std-ref">Auto-tuning a Convolutional Network for x86 CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_x86.py</span></code>)</p></li>
+<li><p><strong>00:00.235</strong>: <a class="reference internal" href="tune_relay_mobile_gpu.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-mobile-gpu-py"><span class="std std-ref">Auto-tuning a Convolutional Network for Mobile GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_mobile_gpu.py</span></code>)</p></li>
+<li><p><strong>00:00.235</strong>: <a class="reference internal" href="tune_relay_cuda.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-cuda-py"><span class="std std-ref">Auto-tuning a Convolutional Network for NVIDIA GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_cuda.py</span></code>)</p></li>
+<li><p><strong>00:00.234</strong>: <a class="reference internal" href="tune_relay_arm.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-arm-py"><span class="std std-ref">Auto-tuning a Convolutional Network for ARM CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_arm.py</span></code>)</p></li>
 </ul>
 </div>
 
diff --git a/docs/how_to/tune_with_autotvm/tune_conv2d_cuda.html b/docs/how_to/tune_with_autotvm/tune_conv2d_cuda.html
index 4454441f2..397066f88 100644
--- a/docs/how_to/tune_with_autotvm/tune_conv2d_cuda.html
+++ b/docs/how_to/tune_with_autotvm/tune_conv2d_cuda.html
@@ -1142,8 +1142,8 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 854, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 4, 4, 32]), (&#39;tile_y&#39;, [-1, 1, 1, 7]), (&#39;tile_x&#39;, [-1, 1, 7, 1]), (&#39;tile_rc&#39;, [-1, 1, 128]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 512), (&#39;unroll_explicit&#39;, 0)],None,2885496
-No: 6   GFLOPS: 42.24/42.24     result: MeasureResult(costs=(0.005480043052631579,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.5878784656524658, timestamp=1651674735.2251027)       [(&#39;tile_f&#39;, [-1, 1, 1, 1]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 7, 1]), (&#39;tile_rc&#39;, [-1, 4, 4]), (&#39;tile_ry&#39;, [-1, 3, 1]), (&#39;tile_rx&#39;, [-1, 1, 1]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 0)],None,3754080
-No: 7   GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 6   GFLOPS: 95.22/95.22     result: MeasureResult(costs=(0.0024311252708333333,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.6658709049224854, timestamp=1651701422.3290932)      [(&#39;tile_f&#39;, [-1, 1, 1, 1]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 7, 1]), (&#39;tile_rc&#39;, [-1, 4, 4]), (&#39;tile_ry&#39;, [-1, 3, 1]), (&#39;tile_rx&#39;, [-1, 1, 1]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 0)],None,3754080
+No: 7   GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 571, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 523, in _build_func_common
@@ -1266,7 +1266,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 854, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 1, 16, 32]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 7, 1]), (&#39;tile_rc&#39;, [-1, 256, 1]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 0), (&#39;unroll_explicit&#39;, 1)],None,6225319
-No: 8   GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 8   GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 571, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 523, in _build_func_common
@@ -1389,7 +1389,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 854, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 2, 1, 32]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 1, 1]), (&#39;tile_rc&#39;, [-1, 8, 64]), (&#39;tile_ry&#39;, [-1, 3, 1]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 0), (&#39;unroll_explicit&#39;, 0)],None,943546
-No: 9   GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 9   GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 571, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 523, in _build_func_common
@@ -1512,7 +1512,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 854, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 4, 16, 4]), (&#39;tile_y&#39;, [-1, 1, 1, 7]), (&#39;tile_x&#39;, [-1, 1, 1, 7]), (&#39;tile_rc&#39;, [-1, 16, 32]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 512), (&#39;unroll_explicit&#39;, 0)],None,2868708
-No: 10  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 10  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 142, in build
     res = future.result()
   File &quot;/usr/lib/python3.7/concurrent/futures/_base.py&quot;, line 435, in result
@@ -1530,7 +1530,7 @@ No: 10  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
 TimeoutError
 
         [(&#39;tile_f&#39;, [-1, 32, 2, 4]), (&#39;tile_y&#39;, [-1, 1, 7, 1]), (&#39;tile_x&#39;, [-1, 1, 1, 7]), (&#39;tile_rc&#39;, [-1, 4, 2]), (&#39;tile_ry&#39;, [-1, 1, 1]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 0)],None,4691833
-No: 11  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 11  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 571, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 523, in _build_func_common
@@ -1653,7 +1653,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 854, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 1, 2, 64]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 1, 1]), (&#39;tile_rc&#39;, [-1, 4, 4]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 0), (&#39;unroll_explicit&#39;, 0)],None,1042124
-No: 12  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 12  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 571, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 523, in _build_func_common
@@ -1776,7 +1776,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 854, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 32, 1, 4]), (&#39;tile_y&#39;, [-1, 1, 1, 7]), (&#39;tile_x&#39;, [-1, 1, 7, 1]), (&#39;tile_rc&#39;, [-1, 32, 16]), (&#39;tile_ry&#39;, [-1, 1, 1]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 1)],None,10013405
-No: 13  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 13  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 571, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 523, in _build_func_common
@@ -1899,7 +1899,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 854, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 8, 8, 2]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 7, 1]), (&#39;tile_rc&#39;, [-1, 4, 32]), (&#39;tile_ry&#39;, [-1, 3, 1]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 0), (&#39;unroll_explicit&#39;, 1)],None,6732082
-No: 14  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 14  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 571, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 523, in _build_func_common
@@ -2022,7 +2022,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 854, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 2, 4, 32]), (&#39;tile_y&#39;, [-1, 7, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 1, 1]), (&#39;tile_rc&#39;, [-1, 4, 128]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 1, 1]), (&#39;auto_unroll_max_step&#39;, 512), (&#39;unroll_explicit&#39;, 1)],None,7536735
-No: 15  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 15  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 571, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 523, in _build_func_common
@@ -2145,7 +2145,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 854, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 2, 1, 4]), (&#39;tile_y&#39;, [-1, 1, 1, 7]), (&#39;tile_x&#39;, [-1, 1, 1, 7]), (&#39;tile_rc&#39;, [-1, 128, 4]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 1, 1]), (&#39;auto_unroll_max_step&#39;, 0), (&#39;unroll_explicit&#39;, 0)],None,482121
-No: 16  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 16  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 571, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 523, in _build_func_common
@@ -2268,7 +2268,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 854, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 2, 1, 16]), (&#39;tile_y&#39;, [-1, 1, 7, 1]), (&#39;tile_x&#39;, [-1, 7, 1, 1]), (&#39;tile_rc&#39;, [-1, 32, 8]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 512), (&#39;unroll_explicit&#39;, 0)],None,2824525
-No: 17  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 17  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 571, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 523, in _build_func_common
@@ -2391,7 +2391,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 854, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 64, 1, 1]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 7, 1, 1]), (&#39;tile_rc&#39;, [-1, 8, 8]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 0)],None,4559286
-No: 18  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 18  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 571, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 523, in _build_func_common
@@ -2514,7 +2514,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 854, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 1, 32, 16]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 7, 1, 1]), (&#39;tile_rc&#39;, [-1, 1, 512]), (&#39;tile_ry&#39;, [-1, 3, 1]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 1)],None,9677544
-No: 19  GFLOPS: 0.00/42.24      result: Traceback (most recent call last):
+No: 19  GFLOPS: 0.00/95.22      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 721, in __call__
     yield remote, remote.load_module(os.path.split(build_result.filename)[1])
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 685, in run_through_rpc
@@ -2602,7 +2602,7 @@ tvm._ffi.base.TVMError: Traceback (most recent call last):
   15: _PyEval_EvalFrameDefault
   14: 0x0000000000537c30
   13: _PyObject_FastCallKeywords
-  12: 0x00007f07f3bebfa2
+  12: 0x00007efce0994fa2
   11: _ctypes_callproc
   10: ffi_call
   9: ffi_call_unix64
@@ -2667,7 +2667,7 @@ Traceback (most recent call last):
   21: _PyFunction_FastCallKeywords
   20: _PyEval_EvalFrameDefault
   19: _PyFunction_FastCall      [(&#39;tile_f&#39;, [-1, 8, 2, 16]), (&#39;tile_y&#39;, [-1, 7, 1, 1]), (&#39;tile_x&#39;, [-1, 7, 1, 1]), (&#39;tile_rc&#39;, [-1, 1, 1]), (&#39;tile_ry&#39;, [-1, 1, 1]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 0), (&#39;unroll_explicit&#39;, 1)],None,6390073
-No: 20  GFLOPS: 141.52/141.52   result: MeasureResult(costs=(0.0016358666935483868,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.1214752197265625, timestamp=1651674761.2399213)      [(&#39;tile_f&#39;, [-1, 1, 4, 1]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 7, 1, 1]), (&#39;tile_rc&#39;, [-1, 4, 1]), (&#39;tile_ry&#39;, [-1, 1, 1]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 1)],None,9881539
+No: 20  GFLOPS: 145.02/145.02   result: MeasureResult(costs=(0.00159629946,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.4468486309051514, timestamp=1651701448.3761618)      [(&#39;tile_f&#39;, [-1, 1, 4, 1]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 7, 1, 1]), (&#39;tile_rc&#39;, [-1, 4, 1]), (&#39;tile_ry&#39;, [-1, 1, 1]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 1)],None,9881539
 </pre></div>
 </div>
 <p>Finally we can inspect the best config from log file, check correctness,
@@ -2706,7 +2706,7 @@ and measure running time.</p>
 <p class="sphx-glr-script-out">Out:</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Best config:
 [(&#39;tile_f&#39;, [-1, 1, 4, 1]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 7, 1, 1]), (&#39;tile_rc&#39;, [-1, 4, 1]), (&#39;tile_ry&#39;, [-1, 1, 1]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 1)],None,9881539
-Time cost of this operator: 0.002050
+Time cost of this operator: 0.001988
 </pre></div>
 </div>
 <div class="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-tune-with-autotvm-tune-conv2d-cuda-py">
diff --git a/docs/how_to/tune_with_autotvm/tune_relay_cuda.html b/docs/how_to/tune_with_autotvm/tune_relay_cuda.html
index 5ca115e49..14cb258c3 100644
--- a/docs/how_to/tune_with_autotvm/tune_relay_cuda.html
+++ b/docs/how_to/tune_with_autotvm/tune_relay_cuda.html
@@ -452,7 +452,7 @@ We can also load models from MXNet, ONNX and TensorFlow.</p>
 </pre></div>
 </div>
 <p class="sphx-glr-script-out">Out:</p>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/workspace/python/tvm/target/target.py:288: UserWarning: Try specifying cuda arch by adding &#39;arch=sm_xx&#39; to your target.
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/workspace/python/tvm/target/target.py:347: UserWarning: Try specifying cuda arch by adding &#39;arch=sm_xx&#39; to your target.
   warnings.warn(&quot;Try specifying cuda arch by adding &#39;arch=sm_xx&#39; to your target.&quot;)
 </pre></div>
 </div>
diff --git a/docs/how_to/work_with_microtvm/micro_autotune.html b/docs/how_to/work_with_microtvm/micro_autotune.html
index 36fafd9e8..09c2c6be6 100644
--- a/docs/how_to/work_with_microtvm/micro_autotune.html
+++ b/docs/how_to/work_with_microtvm/micro_autotune.html
@@ -553,10 +553,10 @@ the tuned operator.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>########## Build without Autotuning ##########
 Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs
 ---------                                     ---                                           --------  -------  -----              ------  -------
-tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  316.3     98.758   (1, 2, 10, 10, 3)  2       1
-tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       3.07      0.958    (1, 6, 10, 10)     1       1
-tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.908     0.284    (1, 1, 10, 10, 3)  1       1
-Total_time                                    -                                             320.278   -        -                  -       -
+tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  311.6     98.745   (1, 2, 10, 10, 3)  2       1
+tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       3.058     0.969    (1, 6, 10, 10)     1       1
+tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.902     0.286    (1, 1, 10, 10, 3)  1       1
+Total_time                                    -                                             315.559   -        -                  -       -
 </pre></div>
 </div>
 </div>
@@ -608,10 +608,10 @@ Total_time                                    -
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>########## Build with Autotuning ##########
 Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs
 ---------                                     ---                                           --------  -------  -----              ------  -------
-tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  90.45     97.16    (1, 6, 10, 10, 1)  2       1
-tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.738     1.867    (1, 6, 10, 10)     1       1
-tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.906     0.974    (1, 1, 10, 10, 3)  1       1
-Total_time                                    -                                             93.094    -        -                  -       -
+tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  206.7     98.597   (1, 1, 10, 10, 6)  2       1
+tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.01      0.959    (1, 6, 10, 10)     1       1
+tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.931     0.444    (1, 3, 10, 10, 1)  1       1
+Total_time                                    -                                             209.641   -        -                  -       -
 </pre></div>
 </div>
 <div class="sphx-glr-footer class sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-work-with-microtvm-micro-autotune-py">
diff --git a/docs/how_to/work_with_microtvm/sg_execution_times.html b/docs/how_to/work_with_microtvm/sg_execution_times.html
index 8ce9d8f3a..516491c7a 100644
--- a/docs/how_to/work_with_microtvm/sg_execution_times.html
+++ b/docs/how_to/work_with_microtvm/sg_execution_times.html
@@ -300,13 +300,13 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-work-with-microtvm-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:42.736</strong> total execution time for <strong>how_to_work_with_microtvm</strong> files:</p>
+<p><strong>00:47.764</strong> total execution time for <strong>how_to_work_with_microtvm</strong> files:</p>
 <ul class="simple">
-<li><p><strong>00:38.753</strong>: <a class="reference internal" href="micro_autotune.html#sphx-glr-how-to-work-with-microtvm-micro-autotune-py"><span class="std std-ref">Autotuning with microTVM</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_autotune.py</span></code>)</p></li>
-<li><p><strong>00:03.373</strong>: <a class="reference internal" href="micro_tflite.html#sphx-glr-how-to-work-with-microtvm-micro-tflite-py"><span class="std std-ref">microTVM with TFLite Models</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_tflite.py</span></code>)</p></li>
-<li><p><strong>00:00.232</strong>: <a class="reference internal" href="micro_ethosu.html#sphx-glr-how-to-work-with-microtvm-micro-ethosu-py"><span class="std std-ref">Running TVM on bare metal Arm(R) Cortex(R)-M55 CPU and Ethos(TM)-U55 NPU</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_ethosu.py</span></code>)</p></li>
-<li><p><strong>00:00.192</strong>: <a class="reference internal" href="micro_reference_vm.html#sphx-glr-how-to-work-with-microtvm-micro-reference-vm-py"><span class="std std-ref">microTVM Reference Virtual Machines</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_reference_vm.py</span></code>)</p></li>
-<li><p><strong>00:00.185</strong>: <a class="reference internal" href="micro_tvmc.html#sphx-glr-how-to-work-with-microtvm-micro-tvmc-py"><span class="std std-ref">Executing a Tiny Model with TVMC Micro</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_tvmc.py</span></code>)</p></li>
+<li><p><strong>00:43.313</strong>: <a class="reference internal" href="micro_autotune.html#sphx-glr-how-to-work-with-microtvm-micro-autotune-py"><span class="std std-ref">Autotuning with microTVM</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_autotune.py</span></code>)</p></li>
+<li><p><strong>00:03.779</strong>: <a class="reference internal" href="micro_tflite.html#sphx-glr-how-to-work-with-microtvm-micro-tflite-py"><span class="std std-ref">microTVM with TFLite Models</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_tflite.py</span></code>)</p></li>
+<li><p><strong>00:00.238</strong>: <a class="reference internal" href="micro_tvmc.html#sphx-glr-how-to-work-with-microtvm-micro-tvmc-py"><span class="std std-ref">Executing a Tiny Model with TVMC Micro</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_tvmc.py</span></code>)</p></li>
+<li><p><strong>00:00.217</strong>: <a class="reference internal" href="micro_ethosu.html#sphx-glr-how-to-work-with-microtvm-micro-ethosu-py"><span class="std std-ref">Running TVM on bare metal Arm(R) Cortex(R)-M55 CPU and Ethos(TM)-U55 NPU</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_ethosu.py</span></code>)</p></li>
+<li><p><strong>00:00.217</strong>: <a class="reference internal" href="micro_reference_vm.html#sphx-glr-how-to-work-with-microtvm-micro-reference-vm-py"><span class="std std-ref">microTVM Reference Virtual Machines</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_reference_vm.py</span></code>)</p></li>
 </ul>
 </div>
 
diff --git a/docs/how_to/work_with_relay/sg_execution_times.html b/docs/how_to/work_with_relay/sg_execution_times.html
index 90019f50d..a57a6a053 100644
--- a/docs/how_to/work_with_relay/sg_execution_times.html
+++ b/docs/how_to/work_with_relay/sg_execution_times.html
@@ -300,11 +300,11 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-work-with-relay-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:05.617</strong> total execution time for <strong>how_to_work_with_relay</strong> files:</p>
+<p><strong>00:09.615</strong> total execution time for <strong>how_to_work_with_relay</strong> files:</p>
 <ul class="simple">
-<li><p><strong>00:04.034</strong>: <a class="reference internal" href="using_external_lib.html#sphx-glr-how-to-work-with-relay-using-external-lib-py"><span class="std std-ref">Using External Libraries in Relay</span></a> (<code class="docutils literal notranslate"><span class="pre">using_external_lib.py</span></code>)</p></li>
-<li><p><strong>00:01.366</strong>: <a class="reference internal" href="build_gcn.html#sphx-glr-how-to-work-with-relay-build-gcn-py"><span class="std std-ref">Building a Graph Convolutional Network</span></a> (<code class="docutils literal notranslate"><span class="pre">build_gcn.py</span></code>)</p></li>
-<li><p><strong>00:00.217</strong>: <a class="reference internal" href="using_relay_viz.html#sphx-glr-how-to-work-with-relay-using-relay-viz-py"><span class="std std-ref">Use Relay Visualizer to Visualize Relay</span></a> (<code class="docutils literal notranslate"><span class="pre">using_relay_viz.py</span></code>)</p></li>
+<li><p><strong>00:07.481</strong>: <a class="reference internal" href="using_external_lib.html#sphx-glr-how-to-work-with-relay-using-external-lib-py"><span class="std std-ref">Using External Libraries in Relay</span></a> (<code class="docutils literal notranslate"><span class="pre">using_external_lib.py</span></code>)</p></li>
+<li><p><strong>00:01.898</strong>: <a class="reference internal" href="build_gcn.html#sphx-glr-how-to-work-with-relay-build-gcn-py"><span class="std std-ref">Building a Graph Convolutional Network</span></a> (<code class="docutils literal notranslate"><span class="pre">build_gcn.py</span></code>)</p></li>
+<li><p><strong>00:00.236</strong>: <a class="reference internal" href="using_relay_viz.html#sphx-glr-how-to-work-with-relay-using-relay-viz-py"><span class="std std-ref">Use Relay Visualizer to Visualize Relay</span></a> (<code class="docutils literal notranslate"><span class="pre">using_relay_viz.py</span></code>)</p></li>
 </ul>
 </div>
 
diff --git a/docs/how_to/work_with_schedules/sg_execution_times.html b/docs/how_to/work_with_schedules/sg_execution_times.html
index 08b3faf26..eaccb1ba5 100644
--- a/docs/how_to/work_with_schedules/sg_execution_times.html
+++ b/docs/how_to/work_with_schedules/sg_execution_times.html
@@ -300,16 +300,16 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-work-with-schedules-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:05.148</strong> total execution time for <strong>how_to_work_with_schedules</strong> files:</p>
+<p><strong>00:06.065</strong> total execution time for <strong>how_to_work_with_schedules</strong> files:</p>
 <ul class="simple">
-<li><p><strong>00:01.963</strong>: <a class="reference internal" href="intrin_math.html#sphx-glr-how-to-work-with-schedules-intrin-math-py"><span class="std std-ref">Intrinsics and Math Functions</span></a> (<code class="docutils literal notranslate"><span class="pre">intrin_math.py</span></code>)</p></li>
-<li><p><strong>00:00.835</strong>: <a class="reference internal" href="tensorize.html#sphx-glr-how-to-work-with-schedules-tensorize-py"><span class="std std-ref">Use Tensorize to Leverage Hardware Intrinsics</span></a> (<code class="docutils literal notranslate"><span class="pre">tensorize.py</span></code>)</p></li>
-<li><p><strong>00:00.693</strong>: <a class="reference internal" href="scan.html#sphx-glr-how-to-work-with-schedules-scan-py"><span class="std std-ref">Scan and Recurrent Kernel</span></a> (<code class="docutils literal notranslate"><span class="pre">scan.py</span></code>)</p></li>
-<li><p><strong>00:00.682</strong>: <a class="reference internal" href="reduction.html#sphx-glr-how-to-work-with-schedules-reduction-py"><span class="std std-ref">Reduction</span></a> (<code class="docutils literal notranslate"><span class="pre">reduction.py</span></code>)</p></li>
-<li><p><strong>00:00.291</strong>: <a class="reference internal" href="extern_op.html#sphx-glr-how-to-work-with-schedules-extern-op-py"><span class="std std-ref">External Tensor Functions</span></a> (<code class="docutils literal notranslate"><span class="pre">extern_op.py</span></code>)</p></li>
-<li><p><strong>00:00.242</strong>: <a class="reference internal" href="schedule_primitives.html#sphx-glr-how-to-work-with-schedules-schedule-primitives-py"><span class="std std-ref">Schedule Primitives in TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">schedule_primitives.py</span></code>)</p></li>
-<li><p><strong>00:00.223</strong>: <a class="reference internal" href="tuple_inputs.html#sphx-glr-how-to-work-with-schedules-tuple-inputs-py"><span class="std std-ref">Compute and Reduce with Tuple Inputs</span></a> (<code class="docutils literal notranslate"><span class="pre">tuple_inputs.py</span></code>)</p></li>
-<li><p><strong>00:00.218</strong>: <a class="reference internal" href="tedd.html#sphx-glr-how-to-work-with-schedules-tedd-py"><span class="std std-ref">Use Tensor Expression Debug Display (TEDD) for Visualization</span></a> (<code class="docutils literal notranslate"><span class="pre">tedd.py</span></code>)</p></li>
+<li><p><strong>00:02.204</strong>: <a class="reference internal" href="intrin_math.html#sphx-glr-how-to-work-with-schedules-intrin-math-py"><span class="std std-ref">Intrinsics and Math Functions</span></a> (<code class="docutils literal notranslate"><span class="pre">intrin_math.py</span></code>)</p></li>
+<li><p><strong>00:01.203</strong>: <a class="reference internal" href="tensorize.html#sphx-glr-how-to-work-with-schedules-tensorize-py"><span class="std std-ref">Use Tensorize to Leverage Hardware Intrinsics</span></a> (<code class="docutils literal notranslate"><span class="pre">tensorize.py</span></code>)</p></li>
+<li><p><strong>00:00.778</strong>: <a class="reference internal" href="scan.html#sphx-glr-how-to-work-with-schedules-scan-py"><span class="std std-ref">Scan and Recurrent Kernel</span></a> (<code class="docutils literal notranslate"><span class="pre">scan.py</span></code>)</p></li>
+<li><p><strong>00:00.777</strong>: <a class="reference internal" href="reduction.html#sphx-glr-how-to-work-with-schedules-reduction-py"><span class="std std-ref">Reduction</span></a> (<code class="docutils literal notranslate"><span class="pre">reduction.py</span></code>)</p></li>
+<li><p><strong>00:00.338</strong>: <a class="reference internal" href="extern_op.html#sphx-glr-how-to-work-with-schedules-extern-op-py"><span class="std std-ref">External Tensor Functions</span></a> (<code class="docutils literal notranslate"><span class="pre">extern_op.py</span></code>)</p></li>
+<li><p><strong>00:00.265</strong>: <a class="reference internal" href="schedule_primitives.html#sphx-glr-how-to-work-with-schedules-schedule-primitives-py"><span class="std std-ref">Schedule Primitives in TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">schedule_primitives.py</span></code>)</p></li>
+<li><p><strong>00:00.259</strong>: <a class="reference internal" href="tedd.html#sphx-glr-how-to-work-with-schedules-tedd-py"><span class="std std-ref">Use Tensor Expression Debug Display (TEDD) for Visualization</span></a> (<code class="docutils literal notranslate"><span class="pre">tedd.py</span></code>)</p></li>
+<li><p><strong>00:00.241</strong>: <a class="reference internal" href="tuple_inputs.html#sphx-glr-how-to-work-with-schedules-tuple-inputs-py"><span class="std std-ref">Compute and Reduce with Tuple Inputs</span></a> (<code class="docutils literal notranslate"><span class="pre">tuple_inputs.py</span></code>)</p></li>
 </ul>
 </div>
 
diff --git a/docs/how_to/work_with_schedules/tensorize.html b/docs/how_to/work_with_schedules/tensorize.html
index 89f1fb475..8bfe3f83f 100644
--- a/docs/how_to/work_with_schedules/tensorize.html
+++ b/docs/how_to/work_with_schedules/tensorize.html
@@ -552,7 +552,7 @@ The importing needs to happen before the tensorized GEMV being executed.</p>
              C: Buffer(C_2: Pointer(float32), float32, [524288], [])}
   buffer_map = {A_1: A, B_1: B, C_1: C}
   preflattened_buffer_map = {A_1: A_3: Buffer(A_2, float32, [1024, 64], []), B_1: B_3: Buffer(B_2, float32, [512, 64], []), C_1: C_3: Buffer(C_2, float32, [1024, 512], [])} {
-  attr [IterVar(i: int32, (nullptr), &quot;DataPar&quot;, &quot;&quot;)] &quot;pragma_import_llvm&quot; = &quot;; ModuleID = &#39;/tmp/tmpft4wlm_f/input0.cc&#39;\nsource_filename = \&quot;/tmp/tmpft4wlm_f/input0.cc\&quot;\ntarget datalayout = \&quot;e-m:e-i64:64-f80:128-n8:16:32:64-S128\&quot;\ntarget triple = \&quot;x86_64-pc-linux-gnu\&quot;\n\n; Function Attrs: noinline nounwind optnone uwtable\ndefine dso_local i32 @gemv_update(float*, float*, float*, i32, i32, i32) #0 {\n  %7 = allo [...]
+  attr [IterVar(i: int32, (nullptr), &quot;DataPar&quot;, &quot;&quot;)] &quot;pragma_import_llvm&quot; = &quot;; ModuleID = &#39;/tmp/tmp8uh2wupo/input0.cc&#39;\nsource_filename = \&quot;/tmp/tmp8uh2wupo/input0.cc\&quot;\ntarget datalayout = \&quot;e-m:e-i64:64-f80:128-n8:16:32:64-S128\&quot;\ntarget triple = \&quot;x86_64-pc-linux-gnu\&quot;\n\n; Function Attrs: noinline nounwind optnone uwtable\ndefine dso_local i32 @gemv_update(float*, float*, float*, i32, i32, i32) #0 {\n  %7 = allo [...]
   for (i, 0, 1024) {
     for (j.outer: int32, 0, 32) {
       @tir.call_extern(&quot;gemv_update&quot;, @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), C_2, ((i*512) + (j.outer*16)), 16, 2, dtype=handle), @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), A_2, (i*64), 64, 1, dtype=handle), @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), B_2, (j.outer*1024), 1024, 1, dtype=handle), 16, 64, 64, dtype=int32)
diff --git a/docs/objects.inv b/docs/objects.inv
index 6b67cf246..f3493d6e2 100644
Binary files a/docs/objects.inv and b/docs/objects.inv differ
diff --git a/docs/reference/api/doxygen/annotated.html b/docs/reference/api/doxygen/annotated.html
index 6285a2d9c..0293d3cf7 100644
--- a/docs/reference/api/doxygen/annotated.html
+++ b/docs/reference/api/doxygen/annotated.html
@@ -922,7 +922,7 @@ $(function() {
 <tr id="row_1_32_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1BaseValueHash.html" target="_self">BaseValueHash</a></td><td class="desc">Hash definition of base value classes </td></tr>
 <tr id="row_1_33_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Bool.html" target="_self">Bool</a></td><td class="desc">Boolean constant </td></tr>
 <tr id="row_1_34_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1CompilationConfig.html" target="_self">CompilationConfig</a></td><td class="desc">Managed reference class to <code><a class="el" href="classtvm_1_1CompilationConfig.html" title="Managed reference class to CompilationConfig. ">CompilationConfig</a></code> </td></tr>
-<tr id="row_1_35_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1CompilationConfigNode.html" target="_self">CompilationConfigNode</a></td><td class="desc">Gathers the <code>Targets</code> and distinguished <code>VirtualDevices</code> in canonical form needed to compile a Relay module. Centralizes any setup and validation logic needed to  [...]
+<tr id="row_1_35_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1CompilationConfigNode.html" target="_self">CompilationConfigNode</a></td><td class="desc">Gathers the <code>Targets</code> and distinguished <code>VirtualDevices</code> in canonical form needed to compile a Relay module for execution over possibly heterogeneous devices. Cen [...]
 <tr id="row_1_36_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1CompileError.html" target="_self">CompileError</a></td><td class="desc">Custom Error class to be thrown during compilation </td></tr>
 <tr id="row_1_37_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Constructor.html" target="_self">Constructor</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1ConstructorNode.html" title="ADT constructor. Constructors compare by pointer equality. ">ConstructorNode</a> </td></tr>
 <tr id="row_1_38_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1ConstructorNode.html" target="_self">ConstructorNode</a></td><td class="desc">ADT constructor. Constructors compare by pointer equality </td></tr>
diff --git a/docs/reference/api/doxygen/classes.html b/docs/reference/api/doxygen/classes.html
index e5680d65f..de77a9a8a 100644
--- a/docs/reference/api/doxygen/classes.html
+++ b/docs/reference/api/doxygen/classes.html
@@ -67,8 +67,8 @@ $(function() {
 <tr><td rowspan="2" valign="bottom"><a name="letter_a"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;a&#160;&#160;</div></td></tr></table>
 </td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1Conv3DWinogradAttrs.html">Conv3DWinogradAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1IterAdapter.html">IterAdapter</a> (<a class="el" href="namespacetvm_1_1runtime.html">tvm::runtime</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html">PrefetchNode</a> (<a class="el" [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1ConvGemmWeightTransformAttrs.html">ConvGemmWeightTransformAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1MapNode_1_1iterator.html">MapNode::iterator</a> (<a class="el" href="namespacetvm_1_1runtime.html">tvm::runtime</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1Preload [...]
-<tr><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1AccessAnalyzer.html">AccessAnalyzer</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1ConvWinogradWeightTransformAttrs.html">ConvWinogradWeightTransformAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1run [...]
-<tr><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1AccessAnalyzerNode.html">AccessAnalyzerNode</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1CorrelationAttrs.html">CorrelationAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1Iterator [...]
+<tr><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1AccessAnalyzer.html">AccessAnalyzer</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1ConvWinogradWeightTransformAttrs.html">ConvWinogradWeightTransformAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1run [...]
+<tr><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1AccessAnalyzerNode.html">AccessAnalyzerNode</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1CorrelationAttrs.html">CorrelationAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1Iterator [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1AdaptivePool1DAttrs.html">AdaptivePool1DAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1meta__schedule_1_1CostModel.html">CostModel</a> (<a class="el" href="namespacetvm_1_1meta__schedule.html">tvm::meta_schedule</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1support_1_1Span_1_1iterator__base.html">Sp [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1AdaptivePool2DAttrs.html">AdaptivePool2DAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1CostModel.html">CostModel</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1IteratorNode.html">I [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1AdaptivePool3DAttrs.html">AdaptivePool3DAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1meta__schedule_1_1CostModelNode.html">CostModelNode</a> (<a class="el" href="namespacetvm_1_1meta__schedule.html">tvm::meta_schedule</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1auto__scheduler_1_1AttachMapNode_ [...]
@@ -133,20 +133,20 @@ $(function() {
 <tr><td valign="top"><a class="el" href="classtvm_1_1detail_1_1AttrNonDefaultVisitor.html">AttrNonDefaultVisitor</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1EinsumAttrs.html">EinsumAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1MatchBufferRegionNode.html">MatchBufferRegionNode< [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1detail_1_1AttrNopEntry.html">AttrNopEntry</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1EnvFunc.html">EnvFunc</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1MatchNode.html">MatchNode</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160 [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1detail_1_1AttrNormalVisitor.html">AttrNormalVisitor</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1EnvFuncNode.html">EnvFuncNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1MatmulAttrs.html">MatmulAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html [...]
-<tr><td valign="top"><a class="el" href="classtvm_1_1relay_1_1AttrPattern.html">AttrPattern</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1EQ.html">EQ</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1MatrixSetDiagAttrs.html">MatrixSetDiagAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html [...]
-<tr><td valign="top"><a class="el" href="classtvm_1_1relay_1_1AttrPatternNode.html">AttrPatternNode</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1EQNode.html">EQNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1Max.html">Max</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#16 [...]
+<tr><td valign="top"><a class="el" href="classtvm_1_1relay_1_1AttrPattern.html">AttrPattern</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1EQ.html">EQ</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1MatrixSetDiagAttrs.html">MatrixSetDiagAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html [...]
+<tr><td valign="top"><a class="el" href="classtvm_1_1relay_1_1AttrPatternNode.html">AttrPatternNode</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1EQNode.html">EQNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1Max.html">Max</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#16 [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1AttrRegistry.html">AttrRegistry</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1ErrorBuilder.html">ErrorBuilder</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1MaxNode.html">MaxNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1AttrRegistryMap.html">AttrRegistryMap</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1ErrorReporter.html">ErrorReporter</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1MaxPool1DAttrs.html">MaxPool1DAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160 [...]
-<tr><td valign="top"><a class="el" href="classtvm_1_1AttrRegistryMapContainerMap.html">AttrRegistryMapContainerMap</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1Evaluate.html">Evaluate</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1MaxPool2DAttrs.html">MaxPool2DAttrs</a> (<a class="el" href="namespacetvm_1_ [...]
-<tr><td valign="top"><a class="el" href="classtvm_1_1Attrs.html">Attrs</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html">EvaluateNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1MaxPool3DAttrs.html">MaxPool3DAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&# [...]
+<tr><td valign="top"><a class="el" href="classtvm_1_1AttrRegistryMapContainerMap.html">AttrRegistryMapContainerMap</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1Evaluate.html">Evaluate</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1MaxPool2DAttrs.html">MaxPool2DAttrs</a> (<a class="el" href="namespacetvm_1_ [...]
+<tr><td valign="top"><a class="el" href="classtvm_1_1Attrs.html">Attrs</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html">EvaluateNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1MaxPool3DAttrs.html">MaxPool3DAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&# [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1AttrsNode.html">AttrsNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1vm_1_1Executable.html">Executable</a> (<a class="el" href="namespacetvm_1_1runtime_1_1vm.html">tvm::runtime::vm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1meta__schedule_1_1MeasureCallback.html">MeasureCallback</a> (<a class="el" href="namespace [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1detail_1_1AttrsSEqualVisitor.html">AttrsSEqualVisitor</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1Executor.html">Executor</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureCallback.html">MeasureCallback</a> (<a class [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1detail_1_1AttrsSHashVisitor.html">AttrsSHashVisitor</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1ExecutorNode.html">ExecutorNode</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1meta__schedule_1_1MeasureCallbackNode.html">MeasureCallbackNode< [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1AttrStmt.html">AttrStmt</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1ExecutorRegEntry.html">ExecutorRegEntry</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureCallbackNode.html">MeasureCallbackNode</a> (<a class="el" [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1AttrStmtNode.html">AttrStmtNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1ExpandDimsAttrs.html">ExpandDimsAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1meta__schedule_1_1MeasureCandidate.html">MeasureCandidate</a> (<a class="el" [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1detail_1_1AttrTriggerNonDefaultEntry.html">AttrTriggerNonDefaultEntry</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1tir_1_1ExprDeepEqual.html">ExprDeepEqual</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1meta__schedule_1_1MeasureCandidateNode.html">Mea [...]
-<tr><td valign="top"><a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1ExprFunctor.html">ExprFunctor</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureInput.html">MeasureInput</a> (<a class="el" href="namespacetvm_1_1auto__schedule [...]
-<tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1AutoSchedulerLayoutTransformAttrs.html">AutoSchedulerLayoutTransformAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1ExprFunctor.html">ExprFunctor</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureInputNode.html"> [...]
+<tr><td valign="top"><a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1ExprFunctor.html">ExprFunctor</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureInput.html">MeasureInput</a> (<a class="el" href="namespacetvm_1_1auto__schedule [...]
+<tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1AutoSchedulerLayoutTransformAttrs.html">AutoSchedulerLayoutTransformAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1ExprFunctor.html">ExprFunctor</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureInputNode.html"> [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1AvgPool1DAttrs.html">AvgPool1DAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1ExprFunctor_3_01R_07const_01Expr_01_6n_00_01Args_8_8_8_08_4.html">ExprFunctor&lt; R(const Expr &amp;n, Args...)&gt;</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href=" [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1AvgPool2DAttrs.html">AvgPool2DAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1ExprFunctor_3_01R_07const_01PrimExpr_01_6n_00_01Args_8_8_8_08_4.html">ExprFunctor&lt; R(const PrimExpr &amp;n, Args...)&gt;</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1AvgPool3DAttrs.html">AvgPool3DAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1ExprMutator.html">ExprMutator</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1MemoryInfo.html">MemoryInfo</a> (<a class="el" href="namespacetvm.html">tv [...]
@@ -199,9 +199,9 @@ $(function() {
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BufferLoadNode.html">BufferLoadNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1te_1_1FuseNode.html">FuseNode</a> (<a class="el" href="namespacetvm_1_1te.html">tvm::te</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1runtime_1_1NullOptType.html">NullOptType</a> (<a class="el" href="namespacetvm_1_1runtime.html" [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BufferNode.html">BufferNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1FuseStep.html">FuseStep</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_scheduler</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_o"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><d [...]
 </td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1ScatterNDAttrs.html">ScatterNDAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1TypeCallNode.html">TypeCallNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BufferRealize.html">BufferRealize</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1FuseStepNode.html">FuseStepNode</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1te_1_1Schedule.html">Schedule</a> (<a class="el" hre [...]
+<tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BufferRealize.html">BufferRealize</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1FuseStepNode.html">FuseStepNode</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1Schedule.html">Schedule</a> (<a class="el" hr [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html">BufferRealizeNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_g"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;g&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1ObjAllocatorBase.html">ObjAllocatorBase</a> (<a class="el" href="namespacetvm_1_1runtime.html">tvm::runtime</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1Schedule.html">Schedule</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1TypeConstraintNode.html">TypeConstraintNode</a> (<a class="el" href="namespa [...]
+</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1ObjAllocatorBase.html">ObjAllocatorBase</a> (<a class="el" href="namespacetvm_1_1runtime.html">tvm::runtime</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1te_1_1Schedule.html">Schedule</a> (<a class="el" href="namespacetvm_1_1te.html">tvm::te</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1TypeConstraintNode.html">TypeConstraintNode</a> (<a class="el" href="namespacet [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BufferRegion.html">BufferRegion</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1Object.html">Object</a> (<a class="el" href="namespacetvm_1_1runtime.html">tvm::runtime</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1ScheduleNode.html">ScheduleNode</a> (<a class="el" href="namespacetvm_1_1tir.html" [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BufferRegionNode.html">BufferRegionNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1GatherAttrs.html">GatherAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1runtime_1_1ObjectEqual.html">ObjectEqual</a> (<a class="el" href="namespace [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BufferStore.html">BufferStore</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1GatherNDAttrs.html">GatherNDAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1runtime_1_1ObjectHash.html">ObjectHash</a> (<a class="el" href="namespacetvm_1_1r [...]
diff --git a/docs/reference/api/doxygen/classtvm_1_1CompilationConfig-members.html b/docs/reference/api/doxygen/classtvm_1_1CompilationConfig-members.html
index 7f0339072..85624ddb6 100644
--- a/docs/reference/api/doxygen/classtvm_1_1CompilationConfig-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1CompilationConfig-members.html
@@ -71,7 +71,7 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a3e9b0901b6e01257b060a45e159cc37e">_type_is_nullable</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a2d76fa1fb628ff276a284e61123589c5">as</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1CompilationConfig.html#a90f982ae2b0992cdd9241e481c3f4c42">CompilationConfig</a>(const transform::PassContext &amp;pass_ctx, TargetMap legacy_target_map_arg, Target optional_host_target_arg)</td><td class="entry"><a class="el" href="classtvm_1_1CompilationConfig.html">tvm::CompilationConfig</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1CompilationConfig.html#a94ca0dbfadfbd8959fb81a2ec415e4c6">CompilationConfig</a>(const transform::PassContext &amp;pass_ctx, const Array&lt; Target &gt; &amp;raw_targets)</td><td class="entry"><a class="el" href="classtvm_1_1CompilationConfig.html">tvm::CompilationConfig</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aa5c355fbb7d2f7402ee360dba8a52cdd">ContainerType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#ac261cdb80487fb29ac42b28678f8cbef">data_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a17d8d5ad92691f9e18e3e0ae8ef69e4f">defined</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1CompilationConfig.html b/docs/reference/api/doxygen/classtvm_1_1CompilationConfig.html
index d4c0149e5..7df558bd4 100644
--- a/docs/reference/api/doxygen/classtvm_1_1CompilationConfig.html
+++ b/docs/reference/api/doxygen/classtvm_1_1CompilationConfig.html
@@ -89,9 +89,9 @@ Collaboration diagram for tvm::CompilationConfig:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a90f982ae2b0992cdd9241e481c3f4c42"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfig.html#a90f982ae2b0992cdd9241e481c3f4c42">CompilationConfig</a> (const <a class="el" href="classtvm_1_1transform_1_1PassContext.html">transform::PassContext</a> &amp;pass_ctx, <a class="el" href="namespacetvm.html#ab8a1f05408d27b16d67fe0c558fd6d9f">TargetMap</a> legacy_target_map_arg, < [...]
-<tr class="memdesc:a90f982ae2b0992cdd9241e481c3f4c42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs the compilation config given the available <code>Targets</code> in the <code>legacy_target_map_arg</code> and an optional <code>optional_host_target_arg</code>. May use 'relay.fallback_device_type' and the availability of the LLVM compilation module to decide on appropriate default devices.  <a href="#a90f982ae2b0992cdd9241e481c3f4c42">More...</a><br /></td></tr>
-<tr class="separator:a90f982ae2b0992cdd9241e481c3f4c42"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a94ca0dbfadfbd8959fb81a2ec415e4c6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfig.html#a94ca0dbfadfbd8959fb81a2ec415e4c6">CompilationConfig</a> (const <a class="el" href="classtvm_1_1transform_1_1PassContext.html">transform::PassContext</a> &amp;pass_ctx, const <a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1Targ [...]
+<tr class="memdesc:a94ca0dbfadfbd8959fb81a2ec415e4c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs the compilation config given the settings in <code>pass_ctx</code> and supplied <code>raw_targets</code>. See <code>CompilationConfigNode::Init</code> for details.  <a href="#a94ca0dbfadfbd8959fb81a2ec415e4c6">More...</a><br /></td></tr>
+<tr class="separator:a94ca0dbfadfbd8959fb81a2ec415e4c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a8672f1df5f2d5127d72ac625432a7bfc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfig.html#a8672f1df5f2d5127d72ac625432a7bfc">TVM_DEFINE_OBJECT_REF_METHODS</a> (<a class="el" href="classtvm_1_1CompilationConfig.html">CompilationConfig</a>, <a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">ObjectRef</a>, <a class="el" href="classtvm_1_1CompilationConfigNode.htm [...]
 <tr class="separator:a8672f1df5f2d5127d72ac625432a7bfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classtvm_1_1runtime_1_1ObjectRef"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1runtime_1_1ObjectRef')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td></tr>
@@ -161,8 +161,8 @@ Additional Inherited Members</h2></td></tr>
 <div class="textblock"><p>Managed reference class to <code><a class="el" href="classtvm_1_1CompilationConfig.html" title="Managed reference class to CompilationConfig. ">CompilationConfig</a></code>. </p>
 <dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1CompilationConfig.html" title="Managed reference class to CompilationConfig. ">CompilationConfig</a> </dd></dl>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a90f982ae2b0992cdd9241e481c3f4c42"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a90f982ae2b0992cdd9241e481c3f4c42">&#9670;&nbsp;</a></span>CompilationConfig()</h2>
+<a id="a94ca0dbfadfbd8959fb81a2ec415e4c6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a94ca0dbfadfbd8959fb81a2ec415e4c6">&#9670;&nbsp;</a></span>CompilationConfig()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -176,14 +176,8 @@ Additional Inherited Members</h2></td></tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype"><a class="el" href="namespacetvm.html#ab8a1f05408d27b16d67fe0c558fd6d9f">TargetMap</a>&#160;</td>
-          <td class="paramname"><em>legacy_target_map_arg</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1Target.html">Target</a>&#160;</td>
-          <td class="paramname"><em>optional_host_target_arg</em>&#160;</td>
+          <td class="paramtype">const <a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1Target.html">Target</a> &gt; &amp;&#160;</td>
+          <td class="paramname"><em>raw_targets</em>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -193,7 +187,7 @@ Additional Inherited Members</h2></td></tr>
       </table>
 </div><div class="memdoc">
 
-<p>Constructs the compilation config given the available <code>Targets</code> in the <code>legacy_target_map_arg</code> and an optional <code>optional_host_target_arg</code>. May use 'relay.fallback_device_type' and the availability of the LLVM compilation module to decide on appropriate default devices. </p>
+<p>Constructs the compilation config given the settings in <code>pass_ctx</code> and supplied <code>raw_targets</code>. See <code>CompilationConfigNode::Init</code> for details. </p>
 
 </div>
 </div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode-members.html b/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode-members.html
index 81d069b81..1b88c2ff8 100644
--- a/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode-members.html
@@ -84,14 +84,14 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html#abe4569cf32c57b710be99b50e7118876">default_primitive_virtual_device</a></td><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html">tvm::CompilationConfigNode</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#af4407d2b59132e803ff791482dbe0145">deleter_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a9e84841ca982bff376a978ade0132631">FDeleter</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a726972ff315c446192df94027ddea032">GetOrAllocRuntimeTypeIndex</a>(const std::string &amp;key, uint32_t static_tindex, uint32_t parent_tindex, uint32_t type_child_slots, bool type_child_slots_can_overflow)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4d951e51832081b85875669eac90e940">GetTypeKey</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a5693cbadcc1168b96db7b1cc5c200b86">GetTypeKeyHash</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html#aad59e791b8292600a3d86ae182a85269">host_target</a></td><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html">tvm::CompilationConfigNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html#a2b5e8ebdb467811b76acae96e2cd3d3a">host_virtual_device</a></td><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html">tvm::CompilationConfigNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ac9e5eed7719e322117bde996a171e33a">IncRef</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a90e90b3f4ba8a590baff78c75807bbc7">IsInstance</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html#aea9de8943ac60347359e749067f6bae8">legacy_target_map</a></td><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html">tvm::CompilationConfigNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html#a93c439b9682879b81a4888673b786429">FindPrimitiveTargetOrFail</a>(DLDeviceType device_type) const</td><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html">tvm::CompilationConfigNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a726972ff315c446192df94027ddea032">GetOrAllocRuntimeTypeIndex</a>(const std::string &amp;key, uint32_t static_tindex, uint32_t parent_tindex, uint32_t type_child_slots, bool type_child_slots_can_overflow)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span [...]
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4d951e51832081b85875669eac90e940">GetTypeKey</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a5693cbadcc1168b96db7b1cc5c200b86">GetTypeKeyHash</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html#aad59e791b8292600a3d86ae182a85269">host_target</a></td><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html">tvm::CompilationConfigNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html#a2b5e8ebdb467811b76acae96e2cd3d3a">host_virtual_device</a></td><td class="entry"><a class="el" href="classtvm_1_1CompilationConfigNode.html">tvm::CompilationConfigNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ac9e5eed7719e322117bde996a171e33a">IncRef</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a90e90b3f4ba8a590baff78c75807bbc7">IsInstance</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a133436a9ec5c4a768b94102bf95a660b">Object</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ab7968feb6ad38ecaffc320e13819d826">Object</a>(const Object &amp;other)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#aa1612f69ea5b4225d4cda759cd517323">Object</a>(Object &amp;&amp;other)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode.html b/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode.html
index 9de7340e2..38f9b2c8f 100644
--- a/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode.html
@@ -73,7 +73,7 @@ $(function() {
 </div><!--header-->
 <div class="contents">
 
-<p>Gathers the <code>Targets</code> and distinguished <code>VirtualDevices</code> in canonical form needed to compile a Relay module. Centralizes any setup and validation logic needed to transition from configuration options conveyed implicitly (eg in <code>PassContexts</code>) or explicitly (eg a a list of <code>Targets</code>) to the configuration.  
+<p>Gathers the <code>Targets</code> and distinguished <code>VirtualDevices</code> in canonical form needed to compile a Relay module for execution over possibly heterogeneous devices. Centralizes the validation and canonicalization logic needed to transition from targets supplied by the Python APIs to a single internal representation. Also holds a cache of canonical <code>VirtualDevices</code> so that structural equal virtual devices have pointer equal canonical virtual devices.  
  <a href="classtvm_1_1CompilationConfigNode.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="compilation__config_8h_source.html">compilation_config.h</a>&gt;</code></p>
@@ -86,7 +86,7 @@ Inheritance diagram for tvm::CompilationConfigNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::CompilationConfigNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1CompilationConfigNode__coll__graph.svg" width="1176" height="1360"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1CompilationConfigNode__coll__graph.svg" width="999" height="1375"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </div>
 </div>
 <table class="memberdecls">
@@ -94,6 +94,9 @@ Collaboration diagram for tvm::CompilationConfigNode:</div>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a013ec90098f6cc435024dc75dd4e76ea"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfigNode.html#a013ec90098f6cc435024dc75dd4e76ea">VisitAttrs</a> (<a class="el" href="classtvm_1_1AttrVisitor.html">AttrVisitor</a> *v)</td></tr>
 <tr class="separator:a013ec90098f6cc435024dc75dd4e76ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a93c439b9682879b81a4888673b786429"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1Target.html">Target</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfigNode.html#a93c439b9682879b81a4888673b786429">FindPrimitiveTargetOrFail</a> (DLDeviceType device_type) const</td></tr>
+<tr class="memdesc:a93c439b9682879b81a4888673b786429"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the unique <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> to use for <code>device_type</code>. Fail if no such target exists.  <a href="#a93c439b9682879b81a4888673b786429">More...</a><br /></td></tr>
+<tr class="separator:a93c439b9682879b81a4888673b786429"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a91de372f958bbe17e7c170f6abccc2a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1VirtualDevice.html">VirtualDevice</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfigNode.html#a91de372f958bbe17e7c170f6abccc2a4">CanonicalVirtualDevice</a> (const <a class="el" href="classtvm_1_1VirtualDevice.html">VirtualDevice</a> &amp;virtual_device) const</td></tr>
 <tr class="memdesc:a91de372f958bbe17e7c170f6abccc2a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a <code><a class="el" href="classtvm_1_1VirtualDevice.html" title="Managed reference class to VirtualDeviceNode. ">VirtualDevice</a></code> agreeing with <code>virtual_device</code> on all its constrained fields, however:  <a href="#a91de372f958bbe17e7c170f6abccc2a4">More...</a><br /></td></tr>
 <tr class="separator:a91de372f958bbe17e7c170f6abccc2a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -122,17 +125,14 @@ Public Member Functions</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
-<tr class="memitem:aea9de8943ac60347359e749067f6bae8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetvm.html#ab8a1f05408d27b16d67fe0c558fd6d9f">TargetMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfigNode.html#aea9de8943ac60347359e749067f6bae8">legacy_target_map</a></td></tr>
-<tr class="memdesc:aea9de8943ac60347359e749067f6bae8"><td class="mdescLeft">&#160;</td><td class="mdescRight">The legacy targets map, mapping device type to the corresponding <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> to use when compiling primitive functions. Does not include an entry for the host target, however each <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode.  [...]
-<tr class="separator:aea9de8943ac60347359e749067f6bae8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aad59e791b8292600a3d86ae182a85269"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1Target.html">Target</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfigNode.html#aad59e791b8292600a3d86ae182a85269">host_target</a></td></tr>
-<tr class="memdesc:aad59e791b8292600a3d86ae182a85269"><td class="mdescLeft">&#160;</td><td class="mdescRight">The host target. Used for 'scalar' data and code (such as shapes and shape functions) and residual Relay expressions and data (such as conditionals and ADTs).  <a href="#aad59e791b8292600a3d86ae182a85269">More...</a><br /></td></tr>
+<tr class="memdesc:aad59e791b8292600a3d86ae182a85269"><td class="mdescLeft">&#160;</td><td class="mdescRight">The host target. Used for 'scalar' data and code (such as shapes and shape functions) and residual Relay expressions and data (such as conditionals and ADTs). Each <code>primitive_target</code> below will have this exact target object as its 'host'.  <a href="#aad59e791b8292600a3d86ae182a85269">More...</a><br /></td></tr>
 <tr class="separator:aad59e791b8292600a3d86ae182a85269"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aaf237580f1684eaf97e1852c6b69ecbd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1Target.html">Target</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfigNode.html#aaf237580f1684eaf97e1852c6b69ecbd">primitive_targets</a></td></tr>
-<tr class="memdesc:aaf237580f1684eaf97e1852c6b69ecbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vector of all available <code>Targets</code> for compiling primitive operators. May contain a <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> for the same device type as for the <code>host_target</code>, however the <code>host_target</code> should be used for all host computations and data. Each <code><a class=" [...]
+<tr class="memdesc:aaf237580f1684eaf97e1852c6b69ecbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vector of all available <code>Targets</code> for partitioning or compiling primitive tensor operators (kernels). May contain a <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> for the same device type as for the <code>host_target</code>, however the <code>host_target</code> should be used for all host computation [...]
 <tr class="separator:aaf237580f1684eaf97e1852c6b69ecbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:abe4569cf32c57b710be99b50e7118876"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1VirtualDevice.html">VirtualDevice</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfigNode.html#abe4569cf32c57b710be99b50e7118876">default_primitive_virtual_device</a> = <a class="el" href="classtvm_1_1VirtualDevice.html#a8238a76dcecef304fa173ceaf706c7b1">VirtualDevice::FullyUnconstrained</a>()</td></tr>
-<tr class="memdesc:abe4569cf32c57b710be99b50e7118876"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classtvm_1_1VirtualDevice.html" title="Managed reference class to VirtualDeviceNode. ">VirtualDevice</a></code> for primitive operators which are not otherwise constrained to a particular device.  <a href="#abe4569cf32c57b710be99b50e7118876">More...</a><br /></td></tr>
+<tr class="memdesc:abe4569cf32c57b710be99b50e7118876"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classtvm_1_1VirtualDevice.html" title="Managed reference class to VirtualDeviceNode. ">VirtualDevice</a></code> for primitive operators which are not otherwise constrained to a particular device. Used by the PlanDevices pass to determine a virtual device for every sub-expression.  <a href="#abe4569cf32c57b710be99b50e7118876">More...</a><br /></td></tr>
 <tr class="separator:abe4569cf32c57b710be99b50e7118876"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2b5e8ebdb467811b76acae96e2cd3d3a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1VirtualDevice.html">VirtualDevice</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfigNode.html#a2b5e8ebdb467811b76acae96e2cd3d3a">host_virtual_device</a> = <a class="el" href="classtvm_1_1VirtualDevice.html#a8238a76dcecef304fa173ceaf706c7b1">VirtualDevice::FullyUnconstrained</a>()</td></tr>
 <tr class="memdesc:a2b5e8ebdb467811b76acae96e2cd3d3a"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1VirtualDevice.html" title="Managed reference class to VirtualDeviceNode. ">VirtualDevice</a> for the host.  <a href="#a2b5e8ebdb467811b76acae96e2cd3d3a">More...</a><br /></td></tr>
@@ -213,8 +213,9 @@ Additional Inherited Members</h2></td></tr>
 <tr class="separator:af4407d2b59132e803ff791482dbe0145 inherit pro_attribs_classtvm_1_1runtime_1_1Object"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Gathers the <code>Targets</code> and distinguished <code>VirtualDevices</code> in canonical form needed to compile a Relay module. Centralizes any setup and validation logic needed to transition from configuration options conveyed implicitly (eg in <code>PassContexts</code>) or explicitly (eg a a list of <code>Targets</code>) to the configuration. </p>
-<p>CAUTION: This is subject to change as we rework compilation options in general. See <a href="https://github.com/apache/tvm-rfcs/blob/main/rfcs/0028-command-line-registry-composition.md">https://github.com/apache/tvm-rfcs/blob/main/rfcs/0028-command-line-registry-composition.md</a>. So far this class is only focussed on carrying just the configuration needed by PlanDevices, and removing target-munging code duplication and inconsistencies between the three major build flows for the VM ( [...]
+<div class="textblock"><p>Gathers the <code>Targets</code> and distinguished <code>VirtualDevices</code> in canonical form needed to compile a Relay module for execution over possibly heterogeneous devices. Centralizes the validation and canonicalization logic needed to transition from targets supplied by the Python APIs to a single internal representation. Also holds a cache of canonical <code>VirtualDevices</code> so that structural equal virtual devices have pointer equal canonical vi [...]
+<p>The construction of <code><a class="el" href="classtvm_1_1CompilationConfig.html" title="Managed reference class to CompilationConfig. ">CompilationConfig</a></code> is idempotent, in that given the same <code>PassContext</code> <code>ctx</code> and an arbitrary <code>Array&lt;Target&gt;</code> <code>raw_targets:</code> </p>
+<div class="fragment"><div class="line"><a class="code" href="classtvm_1_1CompilationConfigNode.html#a770bdaa15e07052d9ee3434c7131ff27">CompilationConfig</a>(ctxt, raw_targets)</div><div class="line">   is structurally <a class="code" href="namespacetvm.html#a1c4f14382b85bcfa57d9a3460db2354a">equal</a> to</div><div class="line"><a class="code" href="classtvm_1_1CompilationConfigNode.html#a770bdaa15e07052d9ee3434c7131ff27">CompilationConfig</a>(ctxt, <a class="code" href="classtvm_1_1Comp [...]
 </div><h2 class="groupheader">Member Function Documentation</h2>
 <a id="a91de372f958bbe17e7c170f6abccc2a4"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#a91de372f958bbe17e7c170f6abccc2a4">&#9670;&nbsp;</a></span>CanonicalVirtualDevice()</h2>
@@ -234,10 +235,31 @@ Additional Inherited Members</h2></td></tr>
 
 <p>Returns a <code><a class="el" href="classtvm_1_1VirtualDevice.html" title="Managed reference class to VirtualDeviceNode. ">VirtualDevice</a></code> agreeing with <code>virtual_device</code> on all its constrained fields, however: </p>
 <ul>
-<li>If the target is null then it is filled in from the known available primitive targets by matching on device type. Fails if no such target is known.</li>
+<li>If the target is null then it is filled in using <code>FindPrimitiveTargetOrFail</code> to match the device type.</li>
 <li>The returned object is unique for the field values w.r.t. all other <code>VirtualDevices</code> returned by this method.</li>
 </ul>
-<p>We call the result the 'canonical' <code><a class="el" href="classtvm_1_1VirtualDevice.html" title="Managed reference class to VirtualDeviceNode. ">VirtualDevice</a></code>. Two canonical <code>VirtualDevices</code> are structurally equal if and only if they are pointer equal. </p>
+<p>We call the result the 'canonical' <code><a class="el" href="classtvm_1_1VirtualDevice.html" title="Managed reference class to VirtualDeviceNode. ">VirtualDevice</a></code>. Two canonical <code>VirtualDevices</code> are structurally equal if and only if they are pointer equal. In this way we can build maps from virtual devices using just pointer equality. </p>
+
+</div>
+</div>
+<a id="a93c439b9682879b81a4888673b786429"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a93c439b9682879b81a4888673b786429">&#9670;&nbsp;</a></span>FindPrimitiveTargetOrFail()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classtvm_1_1Target.html">Target</a> tvm::CompilationConfigNode::FindPrimitiveTargetOrFail </td>
+          <td>(</td>
+          <td class="paramtype">DLDeviceType&#160;</td>
+          <td class="paramname"><em>device_type</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Return the unique <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> to use for <code>device_type</code>. Fail if no such target exists. </p>
+<p>This will be the first primitive target with matching device type. </p>
 
 </div>
 </div>
@@ -317,7 +339,7 @@ Additional Inherited Members</h2></td></tr>
       </table>
 </div><div class="memdoc">
 
-<p><code><a class="el" href="classtvm_1_1VirtualDevice.html" title="Managed reference class to VirtualDeviceNode. ">VirtualDevice</a></code> for primitive operators which are not otherwise constrained to a particular device. </p>
+<p><code><a class="el" href="classtvm_1_1VirtualDevice.html" title="Managed reference class to VirtualDeviceNode. ">VirtualDevice</a></code> for primitive operators which are not otherwise constrained to a particular device. Used by the PlanDevices pass to determine a virtual device for every sub-expression. </p>
 
 </div>
 </div>
@@ -333,7 +355,7 @@ Additional Inherited Members</h2></td></tr>
       </table>
 </div><div class="memdoc">
 
-<p>The host target. Used for 'scalar' data and code (such as shapes and shape functions) and residual Relay expressions and data (such as conditionals and ADTs). </p>
+<p>The host target. Used for 'scalar' data and code (such as shapes and shape functions) and residual Relay expressions and data (such as conditionals and ADTs). Each <code>primitive_target</code> below will have this exact target object as its 'host'. </p>
 <p>Note that it is possible for a <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> used for primitive operations to be structurally equal to the host <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> (up to the <code>host</code> field.) However the <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a [...]
 
 </div>
@@ -352,25 +374,6 @@ Additional Inherited Members</h2></td></tr>
 
 <p><a class="el" href="classtvm_1_1VirtualDevice.html" title="Managed reference class to VirtualDeviceNode. ">VirtualDevice</a> for the host. </p>
 
-</div>
-</div>
-<a id="aea9de8943ac60347359e749067f6bae8"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aea9de8943ac60347359e749067f6bae8">&#9670;&nbsp;</a></span>legacy_target_map</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="namespacetvm.html#ab8a1f05408d27b16d67fe0c558fd6d9f">TargetMap</a> tvm::CompilationConfigNode::legacy_target_map</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The legacy targets map, mapping device type to the corresponding <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> to use when compiling primitive functions. Does not include an entry for the host target, however each <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> in this map will have it's <code>host</code> field set to the <code>host_target</code>. </p>
-<p>Currently we require at most one <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> per <code>DLDeviceType</code>, though we want to get rid of that limitation.</p>
-<p>CAUTION: Since keys are <code>Integers</code> they are compared by object equality not integer value.</p>
-<p>TODO(mbs): Remove once codegen updated for new target conventions. </p>
-
 </div>
 </div>
 <a id="ac29775462c7f70a3711221871fbd3453"></a>
@@ -386,8 +389,8 @@ Additional Inherited Members</h2></td></tr>
 </div><div class="memdoc">
 
 <p>If defined then compile and/or run in 'homogenous execution mode'. In this mode all primitives are compiled for this target only. </p>
-<p>This is to support legacy passes which have not been adapted to hetrogeneous execution and rely on an implicit global <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> to be in scope.</p>
-<p>TODO(mbs): Remove once all passes are 'hetrogeneous aware'. </p>
+<p>This is to support legacy passes which have not been adapted to heterogeneous execution and rely on an implicit global <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> to be in scope.</p>
+<p>TODO(mbs): Remove once all passes are 'heterogeneous aware'. </p>
 
 </div>
 </div>
@@ -403,8 +406,14 @@ Additional Inherited Members</h2></td></tr>
       </table>
 </div><div class="memdoc">
 
-<p>Vector of all available <code>Targets</code> for compiling primitive operators. May contain a <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> for the same device type as for the <code>host_target</code>, however the <code>host_target</code> should be used for all host computations and data. Each <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> will h [...]
-
+<p>Vector of all available <code>Targets</code> for partitioning or compiling primitive tensor operators (kernels). May contain a <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> for the same device type as for the <code>host_target</code>, however the <code>host_target</code> should be used for all host computations and data. Each <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to Targe [...]
+<p>It is possible to have multiple primitive targets for the same device type. However given primitive targets left and right where:</p><ul>
+<li>left appears before right in the array</li>
+<li>left-&gt;kind-&gt;device_type == right-&gt;kind-&gt;device_type then:</li>
+<li>right.IsExternalCodegenFor(left) must be true In this way the FindPrimitiveTargetOrFail method will find the 'most general' target for the requested device type.</li>
+</ul>
+<p>In the homogeneous case primitive_targets will have just one entry, which will be pointer equal to optional_homogeneous_target.</p>
+<p>In the homogenous case where the 'host' is the same device as used for compiling kernels it is <em>not</em> the case that optional_homogenous_target == host_target. This is because all primitive always have their host field set to the host_target. Ie, it is valid to have: </p><div class="fragment"><div class="line"><a class="code" href="classtvm_1_1CompilationConfigNode.html#aad59e791b8292600a3d86ae182a85269">host_target</a>=Target(<span class="stringliteral">&quot;llvm&quot;</span>)< [...]
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
diff --git a/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode__coll__graph.svg
index 0b2a6df48..2767b3374 100644
--- a/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode__coll__graph.svg
@@ -4,88 +4,90 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::CompilationConfigNode Pages: 1 -->
-<svg width="882pt" height="1020pt"
- viewBox="0.00 0.00 881.50 1020.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1016)">
+<svg width="749pt" height="1031pt"
+ viewBox="0.00 0.00 748.50 1031.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1027)">
 <title>tvm::CompilationConfigNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1016 877.5,-1016 877.5,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1027 744.5,-1027 744.5,4 -4,4"/>
 <!-- Node2 -->
 <g id="node1" class="node">
 <title>Node2</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="380.5,-.5 380.5,-68.5 538.5,-68.5 538.5,-.5 380.5,-.5"/>
-<text text-anchor="middle" x="459.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::CompilationConfigNode</text>
-<polyline fill="none" stroke="#000000" points="380.5,-49.5 538.5,-49.5 "/>
-<text text-anchor="start" x="388.5" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="380.5,-30.5 538.5,-30.5 "/>
-<text text-anchor="start" x="388.5" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="388.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ CanonicalVirtualDevice()</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="327.5,-.5 327.5,-79.5 485.5,-79.5 485.5,-.5 327.5,-.5"/>
+<text text-anchor="middle" x="406.5" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::CompilationConfigNode</text>
+<polyline fill="none" stroke="#000000" points="327.5,-60.5 485.5,-60.5 "/>
+<text text-anchor="start" x="335.5" y="-48.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="327.5,-41.5 485.5,-41.5 "/>
+<text text-anchor="start" x="335.5" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="335.5" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ FindPrimitiveTargetOrFail()</text>
+<text text-anchor="start" x="335.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ CanonicalVirtualDevice()</text>
 </g>
 <!-- Node3 -->
 <g id="node2" class="node">
 <title>Node3</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-138.5 0,-525.5 183,-525.5 183,-138.5 0,-138.5"/>
-<text text-anchor="middle" x="91.5" y="-513.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="0,-506.5 183,-506.5 "/>
-<text text-anchor="start" x="8" y="-494.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="8" y="-483.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="8" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="8" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-428.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="8" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="8" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-384.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="8" y="-373.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="8" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="8" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<polyline fill="none" stroke="#000000" points="0,-344.5 183,-344.5 "/>
-<text text-anchor="start" x="8" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="8" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<polygon fill="#ffffff" stroke="#000000" points="0,-149.5 0,-536.5 183,-536.5 183,-149.5 0,-149.5"/>
+<text text-anchor="middle" x="91.5" y="-524.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="0,-517.5 183,-517.5 "/>
+<text text-anchor="start" x="8" y="-505.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="8" y="-494.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="8" y="-483.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="8" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="8" y="-428.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-384.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="8" y="-373.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="8" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<polyline fill="none" stroke="#000000" points="0,-355.5 183,-355.5 "/>
+<text text-anchor="start" x="8" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="8" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="8" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="8" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="8" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="8" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
 <text text-anchor="start" x="8" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="8" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="8" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="8" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="8" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="8" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="8" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge1" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M190.0095,-209.4856C212.3607,-184.6502 236.8216,-159.5626 261.5,-138 292.411,-110.9917 302.4217,-106.578 338.5,-87 351.7836,-79.7916 366.2604,-72.8105 380.4322,-66.4186"/>
-<polygon fill="none" stroke="#191970" points="187.1894,-207.3891 183.1428,-217.1808 192.4123,-212.0498 187.1894,-207.3891"/>
+<path fill="none" stroke="#191970" d="M189.767,-223.8711C212.7134,-198.2622 237.7154,-172.0028 262.5,-149 289.2736,-124.1512 321.5009,-99.3452 348.6735,-79.6891"/>
+<polygon fill="none" stroke="#191970" points="187.0705,-221.6362 183.034,-231.432 192.2982,-226.2915 187.0705,-221.6362"/>
 </g>
 <!-- Node3&#45;&gt;Node3 -->
 <g id="edge2" class="edge">
 <title>Node3&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M183.3625,-365.9248C194.0482,-359.6637 201,-348.3555 201,-332 201,-321.0112 197.8618,-312.3007 192.5615,-305.8687"/>
-<polygon fill="none" stroke="#404040" points="192.5184,-305.8322 185.3548,-305.0056 183.3625,-298.0752 190.5261,-298.9017 192.5184,-305.8322"/>
-<text text-anchor="middle" x="227" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M183.3625,-376.9248C194.0482,-370.6637 201,-359.3555 201,-343 201,-332.0112 197.8618,-323.3007 192.5615,-316.8687"/>
+<polygon fill="none" stroke="#404040" points="192.5184,-316.8322 185.3548,-316.0056 183.3625,-309.0752 190.5261,-309.9017 192.5184,-316.8322"/>
+<text text-anchor="middle" x="227" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
 </g>
 <!-- Node4 -->
 <g id="node3" class="node">
 <title>Node4</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::Target \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="271,-243 271,-421 384,-421 384,-243 271,-243"/>
-<text text-anchor="start" x="279" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="327.5" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Target &gt;</text>
-<polyline fill="none" stroke="#000000" points="271,-391 384,-391 "/>
-<text text-anchor="middle" x="327.5" y="-379" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="271,-372 384,-372 "/>
+<polygon fill="#ffffff" stroke="#000000" points="271,-254 271,-432 384,-432 384,-254 271,-254"/>
+<text text-anchor="start" x="279" y="-420" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="327.5" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Target &gt;</text>
+<polyline fill="none" stroke="#000000" points="271,-402 384,-402 "/>
+<text text-anchor="middle" x="327.5" y="-390" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="271,-383 384,-383 "/>
+<text text-anchor="start" x="279" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
 <text text-anchor="start" x="279" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
 <text text-anchor="start" x="279" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
 <text text-anchor="start" x="279" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
@@ -93,198 +95,162 @@
 <text text-anchor="start" x="279" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
 <text text-anchor="start" x="279" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
 <text text-anchor="start" x="279" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="279" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
 <text text-anchor="start" x="279" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="279" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="279" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
+<text text-anchor="start" x="279" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node2 -->
 <g id="edge3" class="edge">
 <title>Node4&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M319.957,-242.9929C320.1394,-193.0587 328.1694,-131.9599 359.5,-87 362.8282,-82.224 366.7292,-77.8498 371.0256,-73.8482"/>
-<polygon fill="none" stroke="#404040" points="371.0925,-73.793 373.1695,-66.8874 380.3427,-66.1487 378.2656,-73.0542 371.0925,-73.793"/>
-<text text-anchor="middle" x="407.5" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +primitive_targets</text>
+<path fill="none" stroke="#404040" d="M326.2304,-253.891C328.5041,-205.9392 336.1952,-146.7959 357.5,-98 358.6571,-95.3498 359.9757,-92.7279 361.4197,-90.1489"/>
+<polygon fill="none" stroke="#404040" points="361.5404,-89.9586 361.377,-82.7493 367.9689,-79.8257 368.1322,-87.035 361.5404,-89.9586"/>
+<text text-anchor="middle" x="405.5" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +primitive_targets</text>
 </g>
 <!-- Node5 -->
 <g id="node4" class="node">
 <title>Node5</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
-<polygon fill="#ffffff" stroke="#000000" points="471.5,-563.5 471.5,-785.5 605.5,-785.5 605.5,-563.5 471.5,-563.5"/>
-<text text-anchor="middle" x="538.5" y="-773.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="#000000" points="471.5,-766.5 605.5,-766.5 "/>
-<text text-anchor="start" x="479.5" y="-754.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="471.5,-747.5 605.5,-747.5 "/>
-<text text-anchor="start" x="479.5" y="-735.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="479.5" y="-724.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="479.5" y="-713.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
-<text text-anchor="start" x="479.5" y="-702.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
-<text text-anchor="start" x="479.5" y="-691.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
-<text text-anchor="start" x="479.5" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
-<text text-anchor="start" x="479.5" y="-669.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
-<text text-anchor="start" x="479.5" y="-658.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="479.5" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="479.5" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="479.5" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
-<text text-anchor="start" x="479.5" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
-<text text-anchor="start" x="479.5" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
-<text text-anchor="start" x="479.5" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
-<text text-anchor="start" x="479.5" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="479.5" y="-570.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+<polygon fill="#ffffff" stroke="#000000" points="418.5,-574.5 418.5,-796.5 552.5,-796.5 552.5,-574.5 418.5,-574.5"/>
+<text text-anchor="middle" x="485.5" y="-784.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="418.5,-777.5 552.5,-777.5 "/>
+<text text-anchor="start" x="426.5" y="-765.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="418.5,-758.5 552.5,-758.5 "/>
+<text text-anchor="start" x="426.5" y="-746.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="426.5" y="-735.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="426.5" y="-724.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="426.5" y="-713.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="426.5" y="-702.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="426.5" y="-691.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="426.5" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="426.5" y="-669.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="426.5" y="-658.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="426.5" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="426.5" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="426.5" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="426.5" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="426.5" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="426.5" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="426.5" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M464.0246,-610.9006C438.9061,-586.4183 412.4634,-556.8816 393.5,-526 373.8596,-494.0159 359.1982,-455.4459 348.7475,-421.1502"/>
-<polygon fill="none" stroke="#191970" points="461.7791,-613.5968 471.4159,-617.9993 466.6279,-608.5481 461.7791,-613.5968"/>
+<path fill="none" stroke="#191970" d="M413.3289,-575.0489C406.2184,-562.4377 399.4463,-549.5887 393.5,-537 377.7733,-503.706 363.9751,-465.6228 353.1165,-432.0651"/>
+<polygon fill="none" stroke="#191970" points="410.2952,-576.7945 418.2996,-583.7356 416.3708,-573.3178 410.2952,-576.7945"/>
 </g>
 <!-- Node7 -->
 <g id="node6" class="node">
 <title>Node7</title>
-<g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="{tvm::runtime::Map\&lt;\l Integer, Target \&gt;\n||+ Map()\l+ Map()\l+ Map()\l+ Map()\l+ Map()\l+ Map()\l+ Map()\l+ operator=()\l+ operator=()\l+ at()\land 12 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="402,-243 402,-421 517,-421 517,-243 402,-243"/>
-<text text-anchor="start" x="410" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="middle" x="459.5" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> Integer, Target &gt;</text>
-<polyline fill="none" stroke="#000000" points="402,-391 517,-391 "/>
-<text text-anchor="middle" x="459.5" y="-379" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="402,-372 517,-372 "/>
-<text text-anchor="start" x="410" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Map()</text>
-<text text-anchor="start" x="410" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Map()</text>
-<text text-anchor="start" x="410" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Map()</text>
-<text text-anchor="start" x="410" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Map()</text>
-<text text-anchor="start" x="410" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Map()</text>
-<text text-anchor="start" x="410" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Map()</text>
-<text text-anchor="start" x="410" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Map()</text>
-<text text-anchor="start" x="410" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="410" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="410" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ at()</text>
-<text text-anchor="start" x="410" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 12 more...</text>
+<g id="a_node6"><a xlink:href="classtvm_1_1VirtualDevice.html" target="_top" xlink:title="Managed reference class to VirtualDeviceNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="402.5,-237.5 402.5,-448.5 568.5,-448.5 568.5,-237.5 402.5,-237.5"/>
+<text text-anchor="middle" x="485.5" y="-436.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::VirtualDevice</text>
+<polyline fill="none" stroke="#000000" points="402.5,-429.5 568.5,-429.5 "/>
+<text text-anchor="middle" x="485.5" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="402.5,-410.5 568.5,-410.5 "/>
+<text text-anchor="start" x="410.5" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VirtualDevice()</text>
+<text text-anchor="start" x="410.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="410.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="410.5" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ FullyUnconstrained()</text>
+<text text-anchor="start" x="410.5" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForDeviceType()</text>
+<text text-anchor="start" x="410.5" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForDeviceType()</text>
+<text text-anchor="start" x="410.5" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForDeviceType()</text>
+<text text-anchor="start" x="410.5" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForDevice()</text>
+<text text-anchor="start" x="410.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForDeviceAndTarget()</text>
+<text text-anchor="start" x="410.5" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForTarget()</text>
+<text text-anchor="start" x="410.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForMemoryScope()</text>
+<text text-anchor="start" x="410.5" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForDeviceTargetAndMemory</text>
+<text text-anchor="start" x="410.5" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Scope()</text>
+<text text-anchor="start" x="410.5" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Join()</text>
+<text text-anchor="start" x="410.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Default()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node7 -->
 <g id="edge7" class="edge">
 <title>Node5&#45;&gt;Node7</title>
-<path fill="none" stroke="#191970" d="M510.5915,-553.5043C500.5446,-509.9464 489.3999,-461.6293 480.0897,-421.2656"/>
-<polygon fill="none" stroke="#191970" points="507.1929,-554.3426 512.851,-563.3001 514.0138,-552.7692 507.1929,-554.3426"/>
+<path fill="none" stroke="#191970" d="M485.5,-564.277C485.5,-526.55 485.5,-485.2721 485.5,-448.6938"/>
+<polygon fill="none" stroke="#191970" points="482.0001,-564.3 485.5,-574.3001 489.0001,-564.3001 482.0001,-564.3"/>
 </g>
 <!-- Node8 -->
 <g id="node7" class="node">
 <title>Node8</title>
-<g id="a_node7"><a xlink:href="classtvm_1_1VirtualDevice.html" target="_top" xlink:title="Managed reference class to VirtualDeviceNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="535.5,-226.5 535.5,-437.5 701.5,-437.5 701.5,-226.5 535.5,-226.5"/>
-<text text-anchor="middle" x="618.5" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::VirtualDevice</text>
-<polyline fill="none" stroke="#000000" points="535.5,-418.5 701.5,-418.5 "/>
-<text text-anchor="middle" x="618.5" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="535.5,-399.5 701.5,-399.5 "/>
-<text text-anchor="start" x="543.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VirtualDevice()</text>
-<text text-anchor="start" x="543.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="543.5" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="543.5" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ FullyUnconstrained()</text>
-<text text-anchor="start" x="543.5" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForDeviceType()</text>
-<text text-anchor="start" x="543.5" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForDeviceType()</text>
-<text text-anchor="start" x="543.5" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForDeviceType()</text>
-<text text-anchor="start" x="543.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForDevice()</text>
-<text text-anchor="start" x="543.5" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForDeviceAndTarget()</text>
-<text text-anchor="start" x="543.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForTarget()</text>
-<text text-anchor="start" x="543.5" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForMemoryScope()</text>
-<text text-anchor="start" x="543.5" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ForDeviceTargetAndMemory</text>
-<text text-anchor="start" x="543.5" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Scope()</text>
-<text text-anchor="start" x="543.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Join()</text>
-<text text-anchor="start" x="543.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Default()</text>
+<g id="a_node7"><a xlink:href="classtvm_1_1Target.html" target="_top" xlink:title="Managed reference class to TargetNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="586.5,-265 586.5,-421 740.5,-421 740.5,-265 586.5,-265"/>
+<text text-anchor="middle" x="663.5" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
+<polyline fill="none" stroke="#000000" points="586.5,-402 740.5,-402 "/>
+<text text-anchor="middle" x="663.5" y="-390" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="586.5,-383 740.5,-383 "/>
+<text text-anchor="start" x="594.5" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
+<text text-anchor="start" x="594.5" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
+<text text-anchor="start" x="594.5" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
+<text text-anchor="start" x="594.5" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
+<text text-anchor="start" x="594.5" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="594.5" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
+<text text-anchor="start" x="594.5" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegen()</text>
+<text text-anchor="start" x="594.5" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegenFor()</text>
+<text text-anchor="start" x="594.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
+<text text-anchor="start" x="594.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node8 -->
 <g id="edge9" class="edge">
 <title>Node5&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M566.8149,-553.277C575.627,-515.55 585.2686,-474.2721 593.8124,-437.6938"/>
-<polygon fill="none" stroke="#191970" points="563.3401,-552.7661 564.4737,-563.3001 570.1566,-554.3583 563.3401,-552.7661"/>
-</g>
-<!-- Node9 -->
-<g id="node8" class="node">
-<title>Node9</title>
-<g id="a_node8"><a xlink:href="classtvm_1_1Target.html" target="_top" xlink:title="Managed reference class to TargetNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="719.5,-265 719.5,-399 873.5,-399 873.5,-265 719.5,-265"/>
-<text text-anchor="middle" x="796.5" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
-<polyline fill="none" stroke="#000000" points="719.5,-380 873.5,-380 "/>
-<text text-anchor="middle" x="796.5" y="-368" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="719.5,-361 873.5,-361 "/>
-<text text-anchor="start" x="727.5" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="727.5" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="727.5" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="727.5" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="727.5" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="727.5" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
-<text text-anchor="start" x="727.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
-<text text-anchor="start" x="727.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
-</a>
-</g>
-</g>
-<!-- Node5&#45;&gt;Node9 -->
-<g id="edge11" class="edge">
-<title>Node5&#45;&gt;Node9</title>
-<path fill="none" stroke="#191970" d="M613.9595,-621.3638C646.7755,-595.4415 683.7515,-562.0818 710.5,-526 738.9128,-487.6732 760.5867,-438.479 775.0689,-399.2197"/>
-<polygon fill="none" stroke="#191970" points="611.4496,-618.8825 605.7148,-627.7911 615.7534,-624.4032 611.4496,-618.8825"/>
+<path fill="none" stroke="#191970" d="M557.9204,-572.1356C564.759,-560.3956 571.4047,-548.5396 577.5,-537 597.2022,-499.7001 616.4842,-456.9572 631.7805,-421.1018"/>
+<polygon fill="none" stroke="#191970" points="554.7107,-570.6891 552.6591,-581.0834 560.7449,-574.2372 554.7107,-570.6891"/>
 </g>
 <!-- Node6 -->
 <g id="node5" class="node">
 <title>Node6</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="468.5,-833.5 468.5,-1011.5 608.5,-1011.5 608.5,-833.5 468.5,-833.5"/>
-<text text-anchor="start" x="476.5" y="-999.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="538.5" y="-988.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="#000000" points="468.5,-981.5 608.5,-981.5 "/>
-<text text-anchor="middle" x="538.5" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="468.5,-962.5 608.5,-962.5 "/>
-<text text-anchor="start" x="476.5" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="476.5" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="476.5" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="476.5" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="476.5" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="476.5" y="-895.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="476.5" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="476.5" y="-873.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
-<text text-anchor="start" x="476.5" y="-862.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="476.5" y="-851.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="476.5" y="-840.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
+<polygon fill="#ffffff" stroke="#000000" points="415.5,-844.5 415.5,-1022.5 555.5,-1022.5 555.5,-844.5 415.5,-844.5"/>
+<text text-anchor="start" x="423.5" y="-1010.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="485.5" y="-999.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="#000000" points="415.5,-992.5 555.5,-992.5 "/>
+<text text-anchor="middle" x="485.5" y="-980.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="415.5,-973.5 555.5,-973.5 "/>
+<text text-anchor="start" x="423.5" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="423.5" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="423.5" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="423.5" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="423.5" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="423.5" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="423.5" y="-895.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="423.5" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
+<text text-anchor="start" x="423.5" y="-873.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="423.5" y="-862.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="423.5" y="-851.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge5" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M538.5,-833.3167C538.5,-821.8765 538.5,-810.0062 538.5,-798.1402"/>
-<polygon fill="none" stroke="#404040" points="538.5001,-797.7944 534.5,-791.7944 538.5,-785.7944 542.5,-791.7943 538.5001,-797.7944"/>
-<text text-anchor="middle" x="558" y="-807" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
+<path fill="none" stroke="#404040" d="M485.5,-844.3167C485.5,-832.8765 485.5,-821.0062 485.5,-809.1402"/>
+<polygon fill="none" stroke="#404040" points="485.5001,-808.7944 481.5,-802.7944 485.5,-796.7944 489.5,-802.7943 485.5001,-808.7944"/>
+<text text-anchor="middle" x="505" y="-818" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
 </g>
 <!-- Node7&#45;&gt;Node2 -->
 <g id="edge6" class="edge">
 <title>Node7&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M459.5,-242.7402C459.5,-189.4647 459.5,-123.9998 459.5,-80.8579"/>
-<polygon fill="none" stroke="#404040" points="459.5001,-80.7677 455.5,-74.7677 459.5,-68.7677 463.5,-74.7677 459.5001,-80.7677"/>
-<text text-anchor="middle" x="512.5" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +legacy_target_map</text>
+<path fill="none" stroke="#404040" d="M484.3326,-237.4429C480.6755,-192.9256 472.1537,-141.4586 453.5,-98 452.357,-95.3371 451.0551,-92.6968 449.6308,-90.0957"/>
+<polygon fill="none" stroke="#404040" points="449.4914,-89.8701 442.9335,-86.871 443.1797,-79.6641 449.7375,-82.6632 449.4914,-89.8701"/>
+<text text-anchor="start" x="464.5" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +default_primitive</text>
+<text text-anchor="middle" x="516.5" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_virtual_device</text>
+<text text-anchor="middle" x="516.5" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+host_virtual_device</text>
 </g>
 <!-- Node8&#45;&gt;Node2 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M618.1337,-226.4198C613.0849,-179.5694 600.0748,-126.2779 569.5,-87 563.6965,-79.5446 556.5714,-73.0927 548.7621,-67.5213"/>
-<polygon fill="none" stroke="#404040" points="548.6321,-67.4373 541.4218,-67.5413 538.5526,-60.9256 545.7629,-60.8216 548.6321,-67.4373"/>
-<text text-anchor="start" x="586.5" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +default_primitive</text>
-<text text-anchor="middle" x="638.5" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_virtual_device</text>
-<text text-anchor="middle" x="638.5" y="-90" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+host_virtual_device</text>
-</g>
-<!-- Node9&#45;&gt;Node2 -->
-<g id="edge10" class="edge">
-<title>Node9&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M785.9971,-264.7292C773.7089,-208.9196 747.7986,-131.715 694.5,-87 672.5612,-68.5944 606.7976,-54.8526 550.4007,-46.0543"/>
-<polygon fill="none" stroke="#404040" points="550.3916,-46.053 543.8593,-49.1071 538.5276,-44.2519 545.0599,-41.1978 550.3916,-46.053"/>
-<text text-anchor="start" x="723.5" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +optional_homogeneous</text>
-<text text-anchor="middle" x="786.5" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_target</text>
-<text text-anchor="middle" x="786.5" y="-90" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+host_target</text>
+<path fill="none" stroke="#404040" d="M652.2544,-264.7863C640.7353,-211.3341 617.7727,-142.3985 572.5,-98 551.9982,-77.8941 524.1514,-64.7329 497.1251,-56.1275"/>
+<polygon fill="none" stroke="#404040" points="497.1203,-56.1262 490.2301,-58.2534 485.6164,-52.7114 492.5066,-50.5842 497.1203,-56.1262"/>
+<text text-anchor="start" x="598.5" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +optional_homogeneous</text>
+<text text-anchor="middle" x="661.5" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_target</text>
+<text text-anchor="middle" x="661.5" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+host_target</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode__inherit__graph.svg
index a4740fc75..69c242f3d 100644
--- a/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1CompilationConfigNode__inherit__graph.svg
@@ -15,17 +15,17 @@
 <polygon fill="#bfbfbf" stroke="#000000" points="12.5,-.5 12.5,-156.5 170.5,-156.5 170.5,-.5 12.5,-.5"/>
 <text text-anchor="middle" x="91.5" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::CompilationConfigNode</text>
 <polyline fill="none" stroke="#000000" points="12.5,-137.5 170.5,-137.5 "/>
-<text text-anchor="start" x="20.5" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ legacy_target_map</text>
-<text text-anchor="start" x="20.5" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ host_target</text>
-<text text-anchor="start" x="20.5" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ primitive_targets</text>
-<text text-anchor="start" x="20.5" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ default_primitive_virtual</text>
-<text text-anchor="start" x="20.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_device</text>
-<text text-anchor="start" x="20.5" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ host_virtual_device</text>
-<text text-anchor="start" x="20.5" y="-59.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ optional_homogeneous</text>
-<text text-anchor="start" x="20.5" y="-48.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_target</text>
-<text text-anchor="start" x="20.5" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="12.5,-30.5 170.5,-30.5 "/>
-<text text-anchor="start" x="20.5" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="20.5" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ host_target</text>
+<text text-anchor="start" x="20.5" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ primitive_targets</text>
+<text text-anchor="start" x="20.5" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ default_primitive_virtual</text>
+<text text-anchor="start" x="20.5" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_device</text>
+<text text-anchor="start" x="20.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ host_virtual_device</text>
+<text text-anchor="start" x="20.5" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ optional_homogeneous</text>
+<text text-anchor="start" x="20.5" y="-59.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_target</text>
+<text text-anchor="start" x="20.5" y="-48.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="12.5,-41.5 170.5,-41.5 "/>
+<text text-anchor="start" x="20.5" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="20.5" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ FindPrimitiveTargetOrFail()</text>
 <text text-anchor="start" x="20.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ CanonicalVirtualDevice()</text>
 </g>
 <!-- Node1 -->
diff --git a/docs/reference/api/doxygen/classtvm_1_1Target-members.html b/docs/reference/api/doxygen/classtvm_1_1Target-members.html
index 54bf31654..97b8e876e 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Target-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1Target-members.html
@@ -80,6 +80,8 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aadbc0886ffa80162ff31eefd0431ba09">get</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#ae423057ecf93c18714d17f53cd1d318f">get_mutable</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aed593996e4076632450de8fde776707c">GetDataPtr</a>(const ObjectRef &amp;ref)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1Target.html#a4e4aca0d3516a0998b55d043e12cd832">IsExternalCodegen</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1Target.html">tvm::Target</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Target.html#acc8e9cae4385eb160ca79b1ddf8a7510">IsExternalCodegenFor</a>(const Target &amp;that) const</td><td class="entry"><a class="el" href="classtvm_1_1Target.html">tvm::Target</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aa07c1f6d66a438ea950637d13ed09471">ObjectRef</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a6a7dd7404edf1c26f8dbd9bd92d03a02">ObjectRef</a>(ObjectPtr&lt; Object &gt; data)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aa1bd13a7185cb4b2b6bdde49416e8aa4">operator!=</a>(const ObjectRef &amp;other) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Target.html b/docs/reference/api/doxygen/classtvm_1_1Target.html
index 87ffd2ac8..8ffa29e63 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Target.html
+++ b/docs/reference/api/doxygen/classtvm_1_1Target.html
@@ -79,13 +79,13 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::Target:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Target__inherit__graph.svg" width="216" height="551"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Target__inherit__graph.svg" width="216" height="580"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::Target:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Target__coll__graph.svg" width="216" height="839"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Target__coll__graph.svg" width="216" height="868"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </div>
 </div>
 <table class="memberdecls">
@@ -105,6 +105,12 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a1abb29217d8e394f0b88e28178c70bb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac176a69f4e4649c73d5ffdb5a0d31312"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Target.html#ac176a69f4e4649c73d5ffdb5a0d31312">TVM_DEFINE_OBJECT_REF_METHODS</a> (<a class="el" href="classtvm_1_1Target.html">Target</a>, <a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">ObjectRef</a>, <a class="el" href="classtvm_1_1TargetNode.html">TargetNode</a>)</td></tr>
 <tr class="separator:ac176a69f4e4649c73d5ffdb5a0d31312"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e4aca0d3516a0998b55d043e12cd832"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Target.html#a4e4aca0d3516a0998b55d043e12cd832">IsExternalCodegen</a> () const</td></tr>
+<tr class="memdesc:a4e4aca0d3516a0998b55d043e12cd832"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if <code>this</code> target represents an external codegen. If so, <code>this-&gt;kind-&gt;name</code> can be used as the "Compiler" attribute on partitioned functions, and can be used to retrieve a partitioning pattern table using <code>get_pattern_table</code>.  <a href="#a4e4aca0d3516a0998b55d043e12cd832">More...</a><br /></td></tr>
+<tr class="separator:a4e4aca0d3516a0998b55d043e12cd832"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acc8e9cae4385eb160ca79b1ddf8a7510"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Target.html#acc8e9cae4385eb160ca79b1ddf8a7510">IsExternalCodegenFor</a> (const <a class="el" href="classtvm_1_1Target.html">Target</a> &amp;that) const</td></tr>
+<tr class="memdesc:acc8e9cae4385eb160ca79b1ddf8a7510"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if <code>this</code> target represents an external codegen which is compatible with <code>that</code> target. In particular:  <a href="#acc8e9cae4385eb160ca79b1ddf8a7510">More...</a><br /></td></tr>
+<tr class="separator:acc8e9cae4385eb160ca79b1ddf8a7510"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classtvm_1_1runtime_1_1ObjectRef"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1runtime_1_1ObjectRef')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td></tr>
 <tr class="memitem:aa07c1f6d66a438ea950637d13ed09471 inherit pub_methods_classtvm_1_1runtime_1_1ObjectRef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aa07c1f6d66a438ea950637d13ed09471">ObjectRef</a> ()=default</td></tr>
 <tr class="memdesc:aa07c1f6d66a438ea950637d13ed09471 inherit pub_methods_classtvm_1_1runtime_1_1ObjectRef"><td class="mdescLeft">&#160;</td><td class="mdescRight">default constructor  <a href="classtvm_1_1runtime_1_1ObjectRef.html#aa07c1f6d66a438ea950637d13ed09471">More...</a><br /></td></tr>
@@ -364,6 +370,52 @@ Additional Inherited Members</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>The target that is the current context. The target may not be defined if allow_not_defined is true. </dd></dl>
 
+</div>
+</div>
+<a id="a4e4aca0d3516a0998b55d043e12cd832"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4e4aca0d3516a0998b55d043e12cd832">&#9670;&nbsp;</a></span>IsExternalCodegen()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool tvm::Target::IsExternalCodegen </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Returns true if <code>this</code> target represents an external codegen. If so, <code>this-&gt;kind-&gt;name</code> can be used as the "Compiler" attribute on partitioned functions, and can be used to retrieve a partitioning pattern table using <code>get_pattern_table</code>. </p>
+
+</div>
+</div>
+<a id="acc8e9cae4385eb160ca79b1ddf8a7510"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acc8e9cae4385eb160ca79b1ddf8a7510">&#9670;&nbsp;</a></span>IsExternalCodegenFor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool tvm::Target::IsExternalCodegenFor </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classtvm_1_1Target.html">Target</a> &amp;&#160;</td>
+          <td class="paramname"><em>that</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Returns true if <code>this</code> target represents an external codegen which is compatible with <code>that</code> target. In particular: </p>
+<ul>
+<li><code>this</code> has a true <a class="el" href="namespacetvm_1_1attr.html#a17f834882ba3cd00890329433e8e81dd" title="A TargetKind attribute of type Bool. If true, then the target kind name also corresponds to an extern...">tvm::attr::kIsExternalCodegen</a> attribute</li>
+<li><code>that</code> does not have a true <a class="el" href="namespacetvm_1_1attr.html#a17f834882ba3cd00890329433e8e81dd" title="A TargetKind attribute of type Bool. If true, then the target kind name also corresponds to an extern...">tvm::attr::kIsExternalCodegen</a> attribute</li>
+<li><code>this</code> and <code>that</code> have the same kind-&gt;device_type</li>
+</ul>
+<p>After partitioning, the external codegen compilation path may use <code>that</code> to guide it's compilation to a <code><a class="el" href="classtvm_1_1runtime_1_1Module.html" title="Module container of TVM. ">runtime::Module</a></code>. Given <code>this</code>, an appropriate <code>that</code> can be found using <code>CompilationConfig::FindPrimitiveTargetOrFail</code>(this-&gt;kind-&gt;device_type).</p>
+<p>The <code>CollagePartition</code> pass uses this method to guide it's search over candidate partitions using external codegen. </p>
+
 </div>
 </div>
 <a id="ac176a69f4e4649c73d5ffdb5a0d31312"></a>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Target__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1Target__coll__graph.svg
index 4cecfe84a..b5c5effa5 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Target__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1Target__coll__graph.svg
@@ -4,25 +4,27 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::Target Pages: 1 -->
-<svg width="162pt" height="629pt"
- viewBox="0.00 0.00 162.00 629.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 625)">
+<svg width="162pt" height="651pt"
+ viewBox="0.00 0.00 162.00 651.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 647)">
 <title>tvm::Target</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-625 158,-625 158,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-647 158,-647 158,4 -4,4"/>
 <!-- Node2 -->
 <g id="node1" class="node">
 <title>Node2</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="0,-.5 0,-134.5 154,-134.5 154,-.5 0,-.5"/>
-<text text-anchor="middle" x="77" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
-<polyline fill="none" stroke="#000000" points="0,-115.5 154,-115.5 "/>
-<text text-anchor="middle" x="77" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="0,-96.5 154,-96.5 "/>
+<polygon fill="#bfbfbf" stroke="#000000" points="0,-.5 0,-156.5 154,-156.5 154,-.5 0,-.5"/>
+<text text-anchor="middle" x="77" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
+<polyline fill="none" stroke="#000000" points="0,-137.5 154,-137.5 "/>
+<text text-anchor="middle" x="77" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="0,-118.5 154,-118.5 "/>
+<text text-anchor="start" x="8" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
+<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
+<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
+<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegen()</text>
+<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegenFor()</text>
 <text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
 <text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
 </g>
@@ -30,66 +32,66 @@
 <g id="node2" class="node">
 <title>Node3</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
-<polygon fill="#ffffff" stroke="#000000" points="10,-172.5 10,-394.5 144,-394.5 144,-172.5 10,-172.5"/>
-<text text-anchor="middle" x="77" y="-382.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="#000000" points="10,-375.5 144,-375.5 "/>
-<text text-anchor="start" x="18" y="-363.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="10,-356.5 144,-356.5 "/>
-<text text-anchor="start" x="18" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="18" y="-333.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="18" y="-322.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
-<text text-anchor="start" x="18" y="-311.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
-<text text-anchor="start" x="18" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
-<text text-anchor="start" x="18" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
-<text text-anchor="start" x="18" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
-<text text-anchor="start" x="18" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="18" y="-256.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="18" y="-245.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="18" y="-234.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
-<text text-anchor="start" x="18" y="-223.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
-<text text-anchor="start" x="18" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
-<text text-anchor="start" x="18" y="-201.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
-<text text-anchor="start" x="18" y="-190.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="18" y="-179.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+<polygon fill="#ffffff" stroke="#000000" points="10,-194.5 10,-416.5 144,-416.5 144,-194.5 10,-194.5"/>
+<text text-anchor="middle" x="77" y="-404.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="10,-397.5 144,-397.5 "/>
+<text text-anchor="start" x="18" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="10,-378.5 144,-378.5 "/>
+<text text-anchor="start" x="18" y="-366.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="18" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="18" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="18" y="-333.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="18" y="-322.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="18" y="-311.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="18" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="18" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="18" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="18" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="18" y="-256.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="18" y="-245.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="18" y="-234.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="18" y="-223.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="18" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="18" y="-201.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge1" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M77,-162.1483C77,-152.7959 77,-143.5791 77,-134.7844"/>
-<polygon fill="none" stroke="#191970" points="73.5001,-162.3363 77,-172.3363 80.5001,-162.3364 73.5001,-162.3363"/>
+<path fill="none" stroke="#191970" d="M77,-184.2158C77,-174.9116 77,-165.6775 77,-156.7651"/>
+<polygon fill="none" stroke="#191970" points="73.5001,-184.3275 77,-194.3275 80.5001,-184.3275 73.5001,-184.3275"/>
 </g>
 <!-- Node4 -->
 <g id="node3" class="node">
 <title>Node4</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="7,-442.5 7,-620.5 147,-620.5 147,-442.5 7,-442.5"/>
-<text text-anchor="start" x="15" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="77" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="#000000" points="7,-590.5 147,-590.5 "/>
-<text text-anchor="middle" x="77" y="-578.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="7,-571.5 147,-571.5 "/>
+<polygon fill="#ffffff" stroke="#000000" points="7,-464.5 7,-642.5 147,-642.5 147,-464.5 7,-464.5"/>
+<text text-anchor="start" x="15" y="-630.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="77" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="#000000" points="7,-612.5 147,-612.5 "/>
+<text text-anchor="middle" x="77" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="7,-593.5 147,-593.5 "/>
+<text text-anchor="start" x="15" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="15" y="-570.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
 <text text-anchor="start" x="15" y="-559.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
 <text text-anchor="start" x="15" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
 <text text-anchor="start" x="15" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
 <text text-anchor="start" x="15" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="15" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="15" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="15" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="15" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
-<text text-anchor="start" x="15" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="15" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="15" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
+<text text-anchor="start" x="15" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="15" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
+<text text-anchor="start" x="15" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="15" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="15" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node3 -->
 <g id="edge2" class="edge">
 <title>Node4&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M77,-442.3167C77,-430.8765 77,-419.0062 77,-407.1402"/>
-<polygon fill="none" stroke="#404040" points="77.0001,-406.7944 73,-400.7944 77,-394.7944 81,-400.7943 77.0001,-406.7944"/>
-<text text-anchor="middle" x="96.5" y="-416" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
+<path fill="none" stroke="#404040" d="M77,-464.3167C77,-452.8765 77,-441.0062 77,-429.1402"/>
+<polygon fill="none" stroke="#404040" points="77.0001,-428.7944 73,-422.7944 77,-416.7944 81,-422.7943 77.0001,-428.7944"/>
+<text text-anchor="middle" x="96.5" y="-438" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Target__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1Target__inherit__graph.svg
index be5043aa1..b84f145c5 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Target__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1Target__inherit__graph.svg
@@ -4,25 +4,27 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::Target Pages: 1 -->
-<svg width="162pt" height="413pt"
- viewBox="0.00 0.00 162.00 413.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 409)">
+<svg width="162pt" height="435pt"
+ viewBox="0.00 0.00 162.00 435.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 431)">
 <title>tvm::Target</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-409 158,-409 158,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-431 158,-431 158,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="0,-.5 0,-134.5 154,-134.5 154,-.5 0,-.5"/>
-<text text-anchor="middle" x="77" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
-<polyline fill="none" stroke="#000000" points="0,-115.5 154,-115.5 "/>
-<text text-anchor="middle" x="77" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="0,-96.5 154,-96.5 "/>
+<polygon fill="#bfbfbf" stroke="#000000" points="0,-.5 0,-156.5 154,-156.5 154,-.5 0,-.5"/>
+<text text-anchor="middle" x="77" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
+<polyline fill="none" stroke="#000000" points="0,-137.5 154,-137.5 "/>
+<text text-anchor="middle" x="77" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="0,-118.5 154,-118.5 "/>
+<text text-anchor="start" x="8" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
+<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
+<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
+<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegen()</text>
+<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegenFor()</text>
 <text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
 <text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
 </g>
@@ -30,36 +32,36 @@
 <g id="node2" class="node">
 <title>Node1</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
-<polygon fill="#ffffff" stroke="#000000" points="10,-171.5 10,-404.5 144,-404.5 144,-171.5 10,-171.5"/>
-<text text-anchor="middle" x="77" y="-392.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="#000000" points="10,-385.5 144,-385.5 "/>
-<text text-anchor="start" x="18" y="-373.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<text text-anchor="start" x="18" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># data_</text>
-<polyline fill="none" stroke="#000000" points="10,-355.5 144,-355.5 "/>
-<text text-anchor="start" x="18" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="18" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="18" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
-<text text-anchor="start" x="18" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
-<text text-anchor="start" x="18" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
-<text text-anchor="start" x="18" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
-<text text-anchor="start" x="18" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
-<text text-anchor="start" x="18" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="18" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="18" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="18" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
-<text text-anchor="start" x="18" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
-<text text-anchor="start" x="18" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
-<text text-anchor="start" x="18" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
-<text text-anchor="start" x="18" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="18" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+<polygon fill="#ffffff" stroke="#000000" points="10,-193.5 10,-426.5 144,-426.5 144,-193.5 10,-193.5"/>
+<text text-anchor="middle" x="77" y="-414.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="10,-407.5 144,-407.5 "/>
+<text text-anchor="start" x="18" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<text text-anchor="start" x="18" y="-384.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># data_</text>
+<polyline fill="none" stroke="#000000" points="10,-377.5 144,-377.5 "/>
+<text text-anchor="start" x="18" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="18" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="18" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="18" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="18" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="18" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="18" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="18" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="18" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="18" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="18" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="18" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="18" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="18" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="18" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="18" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node0 -->
 <g id="edge1" class="edge">
 <title>Node1&#45;&gt;Node0</title>
-<path fill="none" stroke="#191970" d="M77,-161.0779C77,-152.0753 77,-143.2246 77,-134.7733"/>
-<polygon fill="none" stroke="#191970" points="73.5001,-161.2933 77,-171.2933 80.5001,-161.2934 73.5001,-161.2933"/>
+<path fill="none" stroke="#191970" d="M77,-183.108C77,-174.1638 77,-165.3093 77,-156.7606"/>
+<polygon fill="none" stroke="#191970" points="73.5001,-183.2326 77,-193.2327 80.5001,-183.2327 73.5001,-183.2326"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1VirtualDeviceNode.html b/docs/reference/api/doxygen/classtvm_1_1VirtualDeviceNode.html
index 6809a0d9c..6a7e1375d 100644
--- a/docs/reference/api/doxygen/classtvm_1_1VirtualDeviceNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1VirtualDeviceNode.html
@@ -282,7 +282,7 @@ Additional Inherited Members</h2></td></tr>
 <p>Furthermore, not all memory scopes are accessible to all devices, and it is possible for a memory scope to only be accessible to a device when code is compiled with particular <code><a class="el" href="classtvm_1_1Target.html" title="Managed reference class to TargetNode. ">Target</a></code> options.</p>
 <p><code>VirtualDevices</code> themselves have no system-level understanding. Currently the <code>PlanDevices</code> pass will simply insert "device_copy" operators wherever <code>VirtualDevices</code> are not exactly pointwise equal. We may revisit this in the future as the work on memory pools matures.</p>
 <h2>Joining and Defaulting </h2>
-<p>It is possible to 'join' two <code>VirtualDevices</code> to yield the most constrained <code><a class="el" href="classtvm_1_1VirtualDevice.html" title="Managed reference class to VirtualDeviceNode. ">VirtualDevice</a></code> which agrees with both join arguments. Eg: </p><div class="fragment"><div class="line">Join((kDLCPU, -1, <span class="stringliteral">&quot;llvm&quot;</span>, <span class="stringliteral">&quot;&quot;</span>), (<a class="code" href="namespacetvm.html#ab3c85920678b8b [...]
+<p>It is possible to 'join' two <code>VirtualDevices</code> to yield the most constrained <code><a class="el" href="classtvm_1_1VirtualDevice.html" title="Managed reference class to VirtualDeviceNode. ">VirtualDevice</a></code> which agrees with both join arguments. Eg: </p><div class="fragment"><div class="line">Join((kDLCPU, -1, <span class="stringliteral">&quot;llvm&quot;</span>, <span class="stringliteral">&quot;&quot;</span>), (<a class="code" href="namespacetvm.html#ab3c85920678b8b [...]
 </div><h2 class="groupheader">Member Function Documentation</h2>
 <a id="a5e3f67045652bc27b937acf1ddc677a7"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#a5e3f67045652bc27b937acf1ddc677a7">&#9670;&nbsp;</a></span>device_type()</h2>
diff --git a/docs/reference/api/doxygen/classtvm_1_1VirtualDeviceNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1VirtualDeviceNode__coll__graph.svg
index f8e844d73..ebcba9234 100644
--- a/docs/reference/api/doxygen/classtvm_1_1VirtualDeviceNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1VirtualDeviceNode__coll__graph.svg
@@ -204,26 +204,28 @@
 <g id="node8" class="node">
 <title>Node11</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1Target.html" target="_top" xlink:title="Managed reference class to TargetNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="339.5,-177 339.5,-311 493.5,-311 493.5,-177 339.5,-177"/>
-<text text-anchor="middle" x="416.5" y="-299" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
-<polyline fill="none" stroke="#000000" points="339.5,-292 493.5,-292 "/>
-<text text-anchor="middle" x="416.5" y="-280" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="339.5,-273 493.5,-273 "/>
+<polygon fill="#ffffff" stroke="#000000" points="339.5,-166 339.5,-322 493.5,-322 493.5,-166 339.5,-166"/>
+<text text-anchor="middle" x="416.5" y="-310" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
+<polyline fill="none" stroke="#000000" points="339.5,-303 493.5,-303 "/>
+<text text-anchor="middle" x="416.5" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="339.5,-284 493.5,-284 "/>
+<text text-anchor="start" x="347.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="347.5" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="347.5" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="347.5" y="-239" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="347.5" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="347.5" y="-217" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="347.5" y="-206" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
-<text text-anchor="start" x="347.5" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
-<text text-anchor="start" x="347.5" y="-184" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
+<text text-anchor="start" x="347.5" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="347.5" y="-217" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
+<text text-anchor="start" x="347.5" y="-206" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegen()</text>
+<text text-anchor="start" x="347.5" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegenFor()</text>
+<text text-anchor="start" x="347.5" y="-184" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
+<text text-anchor="start" x="347.5" y="-173" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node11 -->
 <g id="edge9" class="edge">
 <title>Node9&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M400.4048,-366.4741C402.912,-347.3963 405.4222,-328.2948 407.6894,-311.0434"/>
+<path fill="none" stroke="#191970" d="M400.4521,-366.1142C402.4143,-351.1837 404.3773,-336.246 406.2233,-322.1991"/>
 <polygon fill="none" stroke="#191970" points="396.9282,-366.0676 399.0954,-376.4384 403.8686,-366.9798 396.9282,-366.0676"/>
 </g>
 <!-- Node10 -->
@@ -260,7 +262,7 @@
 <!-- Node11&#45;&gt;Node4 -->
 <g id="edge8" class="edge">
 <title>Node11&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M389.8679,-176.8686C380.3679,-157.3924 368.4898,-136.8526 354.5,-120 351.2945,-116.1385 347.8332,-112.3661 344.198,-108.7028"/>
+<path fill="none" stroke="#404040" d="M384.2965,-165.873C375.8563,-149.8469 365.8763,-133.7043 354.5,-120 351.2945,-116.1385 347.8332,-112.3661 344.198,-108.7028"/>
 <polygon fill="none" stroke="#404040" points="344.1296,-108.6377 337.026,-107.3971 335.439,-100.3628 342.5426,-101.6033 344.1296,-108.6377"/>
 <text text-anchor="middle" x="382" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +target</text>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1auto__scheduler_1_1SearchTaskNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1auto__scheduler_1_1SearchTaskNode__coll__graph.svg
index 25557c971..ffd12c5a0 100644
--- a/docs/reference/api/doxygen/classtvm_1_1auto__scheduler_1_1SearchTaskNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1auto__scheduler_1_1SearchTaskNode__coll__graph.svg
@@ -234,26 +234,28 @@
 <g id="node9" class="node">
 <title>Node10</title>
 <g id="a_node9"><a xlink:href="classtvm_1_1Target.html" target="_top" xlink:title="Managed reference class to TargetNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="925.5,-276 925.5,-410 1079.5,-410 1079.5,-276 925.5,-276"/>
-<text text-anchor="middle" x="1002.5" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
-<polyline fill="none" stroke="#000000" points="925.5,-391 1079.5,-391 "/>
-<text text-anchor="middle" x="1002.5" y="-379" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="925.5,-372 1079.5,-372 "/>
+<polygon fill="#ffffff" stroke="#000000" points="925.5,-265 925.5,-421 1079.5,-421 1079.5,-265 925.5,-265"/>
+<text text-anchor="middle" x="1002.5" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
+<polyline fill="none" stroke="#000000" points="925.5,-402 1079.5,-402 "/>
+<text text-anchor="middle" x="1002.5" y="-390" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="925.5,-383 1079.5,-383 "/>
+<text text-anchor="start" x="933.5" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="933.5" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="933.5" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="933.5" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="933.5" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="933.5" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="933.5" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
-<text text-anchor="start" x="933.5" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
-<text text-anchor="start" x="933.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
+<text text-anchor="start" x="933.5" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="933.5" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
+<text text-anchor="start" x="933.5" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegen()</text>
+<text text-anchor="start" x="933.5" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegenFor()</text>
+<text text-anchor="start" x="933.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
+<text text-anchor="start" x="933.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node10 -->
 <g id="edge13" class="edge">
 <title>Node5&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M733.8842,-657.0421C790.5848,-632.6125 866.4422,-592.5173 916.5,-537 949.0655,-500.8828 970.9125,-450.4328 984.4364,-410.0332"/>
+<path fill="none" stroke="#191970" d="M733.8842,-657.0421C790.5848,-632.6125 866.4422,-592.5173 916.5,-537 946.105,-504.1662 966.8518,-459.4871 980.5399,-421.2822"/>
 <polygon fill="none" stroke="#191970" points="732.4421,-653.8518 724.6004,-660.9764 735.1735,-660.297 732.4421,-653.8518"/>
 </g>
 <!-- Node6 -->
@@ -312,7 +314,7 @@
 <!-- Node10&#45;&gt;Node2 -->
 <g id="edge12" class="edge">
 <title>Node10&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M986.635,-275.6535C973.8329,-234.3658 951.9696,-183.0723 916.5,-149 885.0839,-118.8215 783.5899,-89.7781 701.0071,-70.1797"/>
+<path fill="none" stroke="#404040" d="M983.1219,-264.7783C969.9652,-225.6565 948.9142,-180.1373 916.5,-149 885.0839,-118.8215 783.5899,-89.7781 701.0071,-70.1797"/>
 <polygon fill="none" stroke="#404040" points="700.913,-70.1578 694.1582,-72.6821 689.23,-67.4178 695.9848,-64.8934 700.913,-70.1578"/>
 <text text-anchor="middle" x="921" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +target_host</text>
 <text text-anchor="middle" x="921" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+target</text>
diff --git a/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1BuilderInputNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1BuilderInputNode__coll__graph.svg
index b36bdbe28..663483af6 100644
--- a/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1BuilderInputNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1BuilderInputNode__coll__graph.svg
@@ -176,26 +176,28 @@
 <g id="node7" class="node">
 <title>Node8</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1Target.html" target="_top" xlink:title="Managed reference class to TargetNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="610.5,-254 610.5,-388 764.5,-388 764.5,-254 610.5,-254"/>
-<text text-anchor="middle" x="687.5" y="-376" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
-<polyline fill="none" stroke="#000000" points="610.5,-369 764.5,-369 "/>
-<text text-anchor="middle" x="687.5" y="-357" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="610.5,-350 764.5,-350 "/>
+<polygon fill="#ffffff" stroke="#000000" points="610.5,-243 610.5,-399 764.5,-399 764.5,-243 610.5,-243"/>
+<text text-anchor="middle" x="687.5" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
+<polyline fill="none" stroke="#000000" points="610.5,-380 764.5,-380 "/>
+<text text-anchor="middle" x="687.5" y="-368" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="610.5,-361 764.5,-361 "/>
+<text text-anchor="start" x="618.5" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="618.5" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="618.5" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="618.5" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="618.5" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="618.5" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="618.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
-<text text-anchor="start" x="618.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
-<text text-anchor="start" x="618.5" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
+<text text-anchor="start" x="618.5" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="618.5" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
+<text text-anchor="start" x="618.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegen()</text>
+<text text-anchor="start" x="618.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegenFor()</text>
+<text text-anchor="start" x="618.5" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
+<text text-anchor="start" x="618.5" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node8 -->
 <g id="edge9" class="edge">
 <title>Node5&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M586.4387,-543.5205C591.6582,-533.9373 596.7378,-524.3496 601.5,-515 622.5686,-473.6362 643.7312,-425.9936 659.7914,-388.2733"/>
+<path fill="none" stroke="#191970" d="M586.4387,-543.5205C591.6582,-533.9373 596.7378,-524.3496 601.5,-515 620.562,-477.5756 639.701,-435.0115 655.0684,-399.3066"/>
 <polygon fill="none" stroke="#191970" points="583.3559,-541.8631 581.6111,-552.3133 589.4919,-545.2321 583.3559,-541.8631"/>
 </g>
 <!-- Node6 -->
@@ -239,7 +241,7 @@
 <!-- Node8&#45;&gt;Node2 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M670.2439,-253.8199C656.9819,-213.1127 635.1258,-162.3867 601.5,-127 585.5019,-110.1642 565.5367,-96.0626 544.9311,-84.4501"/>
+<path fill="none" stroke="#404040" d="M666.4268,-242.5321C652.9265,-204.0504 632.0804,-159.1819 601.5,-127 585.5019,-110.1642 565.5367,-96.0626 544.9311,-84.4501"/>
 <polygon fill="none" stroke="#404040" points="544.6712,-84.3097 537.4909,-84.9752 534.1149,-78.6032 541.2952,-77.9377 544.6712,-84.3097"/>
 <text text-anchor="middle" x="598" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +target</text>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1ExtractedTaskNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1ExtractedTaskNode__coll__graph.svg
index df2e7693d..626db1f82 100644
--- a/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1ExtractedTaskNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1ExtractedTaskNode__coll__graph.svg
@@ -206,26 +206,28 @@
 <g id="node8" class="node">
 <title>Node9</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1Target.html" target="_top" xlink:title="Managed reference class to TargetNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="708.5,-265 708.5,-399 862.5,-399 862.5,-265 708.5,-265"/>
-<text text-anchor="middle" x="785.5" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
-<polyline fill="none" stroke="#000000" points="708.5,-380 862.5,-380 "/>
-<text text-anchor="middle" x="785.5" y="-368" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="708.5,-361 862.5,-361 "/>
+<polygon fill="#ffffff" stroke="#000000" points="708.5,-254 708.5,-410 862.5,-410 862.5,-254 708.5,-254"/>
+<text text-anchor="middle" x="785.5" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
+<polyline fill="none" stroke="#000000" points="708.5,-391 862.5,-391 "/>
+<text text-anchor="middle" x="785.5" y="-379" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="708.5,-372 862.5,-372 "/>
+<text text-anchor="start" x="716.5" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="716.5" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="716.5" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="716.5" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="716.5" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="716.5" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="716.5" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
-<text text-anchor="start" x="716.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
-<text text-anchor="start" x="716.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
+<text text-anchor="start" x="716.5" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="716.5" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
+<text text-anchor="start" x="716.5" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegen()</text>
+<text text-anchor="start" x="716.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegenFor()</text>
+<text text-anchor="start" x="716.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
+<text text-anchor="start" x="716.5" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node9 -->
 <g id="edge11" class="edge">
 <title>Node5&#45;&gt;Node9</title>
-<path fill="none" stroke="#191970" d="M629.9691,-607.8444C654.1796,-583.6794 679.845,-555.1254 699.5,-526 725.982,-486.7583 747.5468,-438.0319 762.4586,-399.2298"/>
+<path fill="none" stroke="#191970" d="M629.9691,-607.8444C654.1796,-583.6794 679.845,-555.1254 699.5,-526 723.509,-490.4229 743.4763,-447.0498 758.1083,-410.3443"/>
 <polygon fill="none" stroke="#191970" points="627.5099,-605.3539 622.8492,-614.8686 632.4261,-610.3371 627.5099,-605.3539"/>
 </g>
 <!-- Node6 -->
@@ -276,7 +278,7 @@
 <!-- Node9&#45;&gt;Node2 -->
 <g id="edge10" class="edge">
 <title>Node9&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M769.3887,-264.9071C756.4898,-223.7192 734.6112,-172.4416 699.5,-138 670.8182,-109.8652 632.2998,-89.7728 595.5119,-75.6668"/>
+<path fill="none" stroke="#404040" d="M765.6896,-253.5753C752.4497,-214.6368 731.4551,-169.3457 699.5,-138 670.8182,-109.8652 632.2998,-89.7728 595.5119,-75.6668"/>
 <polygon fill="none" stroke="#404040" points="595.4213,-75.6334 588.4075,-77.3088 584.1633,-71.479 591.1771,-69.8035 595.4213,-75.6334"/>
 <text text-anchor="middle" x="695" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +target</text>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1TuningRecordNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1TuningRecordNode__coll__graph.svg
index da3f830c6..97ce654a4 100644
--- a/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1TuningRecordNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1meta__schedule_1_1TuningRecordNode__coll__graph.svg
@@ -226,26 +226,28 @@
 <g id="node9" class="node">
 <title>Node10</title>
 <g id="a_node9"><a xlink:href="classtvm_1_1Target.html" target="_top" xlink:title="Managed reference class to TargetNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="893.5,-265 893.5,-399 1047.5,-399 1047.5,-265 893.5,-265"/>
-<text text-anchor="middle" x="970.5" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
-<polyline fill="none" stroke="#000000" points="893.5,-380 1047.5,-380 "/>
-<text text-anchor="middle" x="970.5" y="-368" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="893.5,-361 1047.5,-361 "/>
+<polygon fill="#ffffff" stroke="#000000" points="893.5,-254 893.5,-410 1047.5,-410 1047.5,-254 893.5,-254"/>
+<text text-anchor="middle" x="970.5" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::Target</text>
+<polyline fill="none" stroke="#000000" points="893.5,-391 1047.5,-391 "/>
+<text text-anchor="middle" x="970.5" y="-379" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="893.5,-372 1047.5,-372 "/>
+<text text-anchor="start" x="901.5" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="901.5" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="901.5" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
 <text text-anchor="start" x="901.5" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="901.5" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Target()</text>
-<text text-anchor="start" x="901.5" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="901.5" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
-<text text-anchor="start" x="901.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
-<text text-anchor="start" x="901.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
+<text text-anchor="start" x="901.5" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="901.5" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_METHODS()</text>
+<text text-anchor="start" x="901.5" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegen()</text>
+<text text-anchor="start" x="901.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsExternalCodegenFor()</text>
+<text text-anchor="start" x="901.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Current()</text>
+<text text-anchor="start" x="901.5" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ WithHost()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node10 -->
 <g id="edge13" class="edge">
 <title>Node5&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M727.7248,-640.4829C777.7358,-614.9692 841.5818,-575.8999 884.5,-526 915.9708,-489.4097 937.7528,-439.4672 951.5211,-399.419"/>
+<path fill="none" stroke="#191970" d="M727.7248,-640.4829C777.7358,-614.9692 841.5818,-575.8999 884.5,-526 913.2081,-492.6218 933.8539,-448.1328 947.7087,-410.1791"/>
 <polygon fill="none" stroke="#191970" points="725.9207,-637.4724 718.5558,-645.0887 729.0628,-643.7275 725.9207,-637.4724"/>
 </g>
 <!-- Node6 -->
@@ -303,7 +305,7 @@
 <!-- Node10&#45;&gt;Node2 -->
 <g id="edge12" class="edge">
 <title>Node10&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M955.8383,-264.5854C943.4479,-222.7387 921.5925,-170.8564 884.5,-138 856.2249,-112.954 771.0658,-88.1561 698.2031,-70.55"/>
+<path fill="none" stroke="#404040" d="M952.4489,-253.6496C939.5992,-214.0057 918.421,-168.0471 884.5,-138 856.2249,-112.954 771.0658,-88.1561 698.2031,-70.55"/>
 <polygon fill="none" stroke="#404040" points="697.8331,-70.4619 691.0688,-72.9606 686.1606,-67.6777 692.9249,-65.1789 697.8331,-70.4619"/>
 <text text-anchor="middle" x="872" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +target</text>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef.html b/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef.html
index 0ebae7e81..106bad0c6 100644
--- a/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef.html
+++ b/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef.html
@@ -81,7 +81,7 @@ $(function() {
 
 <p><code>#include &lt;<a class="el" href="object_8h_source.html">object.h</a>&gt;</code></p>
 
-<p>Inherited by <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; Range &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; Region &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; tvm::arith::IterSplitExpr &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; tvm::AttrFieldInfo &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::ru [...]
+<p>Inherited by <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; Range &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; Region &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; tvm::arith::IterSplitExpr &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; tvm::AttrFieldInfo &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::ru [...]
 <div class="dynheader">
 Collaboration diagram for tvm::runtime::ObjectRef:</div>
 <div class="dyncontent">
diff --git a/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef__coll__graph.svg
index 4df6e1448..b304ecc87 100644
--- a/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef__coll__graph.svg
@@ -9,9 +9,9 @@
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 453)">
 <title>tvm::runtime::ObjectRef</title>
 <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-453 144,-453 144,4 -4,4"/>
-<!-- Node392 -->
+<!-- Node391 -->
 <g id="node1" class="node">
-<title>Node392</title>
+<title>Node391</title>
 <polygon fill="#bfbfbf" stroke="#000000" points="3,-.5 3,-222.5 137,-222.5 137,-.5 3,-.5"/>
 <text text-anchor="middle" x="70" y="-210.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
 <polyline fill="none" stroke="#000000" points="3,-203.5 137,-203.5 "/>
@@ -34,9 +34,9 @@
 <text text-anchor="start" x="11" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
 <text text-anchor="start" x="11" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </g>
-<!-- Node393 -->
+<!-- Node392 -->
 <g id="node2" class="node">
-<title>Node393</title>
+<title>Node392</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
 <polygon fill="#ffffff" stroke="#000000" points="0,-270.5 0,-448.5 140,-448.5 140,-270.5 0,-270.5"/>
 <text text-anchor="start" x="8" y="-436.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
@@ -58,9 +58,9 @@
 </a>
 </g>
 </g>
-<!-- Node393&#45;&gt;Node392 -->
+<!-- Node392&#45;&gt;Node391 -->
 <g id="edge1" class="edge">
-<title>Node393&#45;&gt;Node392</title>
+<title>Node392&#45;&gt;Node391</title>
 <path fill="none" stroke="#404040" d="M70,-270.3167C70,-258.8765 70,-247.0062 70,-235.1402"/>
 <polygon fill="none" stroke="#404040" points="70.0001,-234.7944 66,-228.7944 70,-222.7944 74,-228.7943 70.0001,-234.7944"/>
 <text text-anchor="middle" x="89.5" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
diff --git a/docs/reference/api/doxygen/compilation__config_8h.html b/docs/reference/api/doxygen/compilation__config_8h.html
index 4d44c9bf2..480d06703 100644
--- a/docs/reference/api/doxygen/compilation__config_8h.html
+++ b/docs/reference/api/doxygen/compilation__config_8h.html
@@ -70,7 +70,7 @@ $(function() {
 </div><!--header-->
 <div class="contents">
 
-<p>A helper class to collect all the targets in canonical form necessary for compilation. CAUTION: Preliminary, currently only used to support device planning, very likely to change.  
+<p>A helper class to collect all the targets in canonical form necessary for compilation.  
 <a href="#details">More...</a></p>
 <div class="textblock"><code>#include &lt;<a class="el" href="virtual__device_8h_source.html">tvm/target/virtual_device.h</a>&gt;</code><br />
 </div><div class="textblock"><div class="dynheader">
@@ -91,7 +91,7 @@ This graph shows which files directly or indirectly include this file:</div>
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfigNode.html">tvm::CompilationConfigNode</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gathers the <code>Targets</code> and distinguished <code>VirtualDevices</code> in canonical form needed to compile a Relay module. Centralizes any setup and validation logic needed to transition from configuration options conveyed implicitly (eg in <code>PassContexts</code>) or explicitly (eg a a list of <code>Targets</code>) to the configuration.  <a href="classtvm_1_1CompilationConfigNode.html#details">More... [...]
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gathers the <code>Targets</code> and distinguished <code>VirtualDevices</code> in canonical form needed to compile a Relay module for execution over possibly heterogeneous devices. Centralizes the validation and canonicalization logic needed to transition from targets supplied by the Python APIs to a single internal representation. Also holds a cache of canonical <code>VirtualDevices</code> so that structural eq [...]
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CompilationConfig.html">tvm::CompilationConfig</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Managed reference class to <code><a class="el" href="classtvm_1_1CompilationConfig.html" title="Managed reference class to CompilationConfig. ">CompilationConfig</a></code>.  <a href="classtvm_1_1CompilationConfig.html#details">More...</a><br /></td></tr>
@@ -104,7 +104,7 @@ Namespaces</h2></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>A helper class to collect all the targets in canonical form necessary for compilation. CAUTION: Preliminary, currently only used to support device planning, very likely to change. </p>
+<div class="textblock"><p>A helper class to collect all the targets in canonical form necessary for compilation. </p>
 </div></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/compilation__config_8h_source.html b/docs/reference/api/doxygen/compilation__config_8h_source.html
index 9ea32466f..5f1438cb0 100644
--- a/docs/reference/api/doxygen/compilation__config_8h_source.html
+++ b/docs/reference/api/doxygen/compilation__config_8h_source.html
@@ -66,33 +66,32 @@ $(function() {
 <div class="title">compilation_config.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="compilation__config_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * [...]
-<div class="ttc" id="classtvm_1_1CompilationConfig_html"><div class="ttname"><a href="classtvm_1_1CompilationConfig.html">tvm::CompilationConfig</a></div><div class="ttdoc">Managed reference class to CompilationConfig. </div><div class="ttdef"><b>Definition:</b> compilation_config.h:163</div></div>
+<a href="compilation__config_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * [...]
+<div class="ttc" id="classtvm_1_1CompilationConfig_html"><div class="ttname"><a href="classtvm_1_1CompilationConfig.html">tvm::CompilationConfig</a></div><div class="ttdoc">Managed reference class to CompilationConfig. </div><div class="ttdef"><b>Definition:</b> compilation_config.h:170</div></div>
 <div class="ttc" id="namespacetvm_1_1tir_1_1attr_html_a7e4e7cd47471a9089022214d63d24206"><div class="ttname"><a href="namespacetvm_1_1tir_1_1attr.html#a7e4e7cd47471a9089022214d63d24206">tvm::tir::attr::device_type</a></div><div class="ttdeci">constexpr const char * device_type</div><div class="ttdoc">The device type. </div><div class="ttdef"><b>Definition:</b> stmt.h:1355</div></div>
-<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_aea9de8943ac60347359e749067f6bae8"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#aea9de8943ac60347359e749067f6bae8">tvm::CompilationConfigNode::legacy_target_map</a></div><div class="ttdeci">TargetMap legacy_target_map</div><div class="ttdoc">The legacy targets map, mapping device type to the corresponding Target to use when compiling primiti...</div><div class="ttdef"><b>Definition:</b> compilation_config. [...]
 <div class="ttc" id="virtual__device_8h_html"><div class="ttname"><a href="virtual__device_8h.html">virtual_device.h</a></div><div class="ttdoc">A compile time representation for where data is to be stored at runtime, and how to compile code to c...</div></div>
 <div class="ttc" id="namespacetvm_html"><div class="ttname"><a href="namespacetvm.html">tvm</a></div><div class="ttdoc">runtime implementation for LibTorch/TorchScript. </div><div class="ttdef"><b>Definition:</b> analyzer.h:36</div></div>
 <div class="ttc" id="classtvm_1_1VirtualDevice_html_a8238a76dcecef304fa173ceaf706c7b1"><div class="ttname"><a href="classtvm_1_1VirtualDevice.html#a8238a76dcecef304fa173ceaf706c7b1">tvm::VirtualDevice::FullyUnconstrained</a></div><div class="ttdeci">static VirtualDevice FullyUnconstrained()</div><div class="ttdoc">Returns the unique fully unconstrained VirtualDevice. </div></div>
 <div class="ttc" id="classtvm_1_1VirtualDeviceCache_html"><div class="ttname"><a href="classtvm_1_1VirtualDeviceCache.html">tvm::VirtualDeviceCache</a></div><div class="ttdoc">A cache of VirtualDevices. This can be used: </div><div class="ttdef"><b>Definition:</b> virtual_device.h:349</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Object_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></div><div class="ttdoc">base class of all object containers. </div><div class="ttdef"><b>Definition:</b> object.h:167</div></div>
-<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_aa2eef530c37a784a2f8de16ff4e26893"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#aa2eef530c37a784a2f8de16ff4e26893">tvm::CompilationConfigNode::_type_key</a></div><div class="ttdeci">static constexpr const char * _type_key</div><div class="ttdef"><b>Definition:</b> compilation_config.h:119</div></div>
+<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_aa2eef530c37a784a2f8de16ff4e26893"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#aa2eef530c37a784a2f8de16ff4e26893">tvm::CompilationConfigNode::_type_key</a></div><div class="ttdeci">static constexpr const char * _type_key</div><div class="ttdef"><b>Definition:</b> compilation_config.h:137</div></div>
 <div class="ttc" id="classtvm_1_1AttrVisitor_html"><div class="ttname"><a href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a></div><div class="ttdoc">Visitor class to get the attributes of an AST/IR node. The content is going to be called for each fie...</div><div class="ttdef"><b>Definition:</b> reflection.h:52</div></div>
 <div class="ttc" id="classtvm_1_1VirtualDevice_html"><div class="ttname"><a href="classtvm_1_1VirtualDevice.html">tvm::VirtualDevice</a></div><div class="ttdoc">Managed reference class to VirtualDeviceNode. </div><div class="ttdef"><b>Definition:</b> virtual_device.h:261</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contiguous sequence of ObjectRefs. </div><div class="ttdef"><b>Definition:</b> array.h:270</div></div>
-<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_ac29775462c7f70a3711221871fbd3453"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#ac29775462c7f70a3711221871fbd3453">tvm::CompilationConfigNode::optional_homogeneous_target</a></div><div class="ttdeci">Target optional_homogeneous_target</div><div class="ttdoc">If defined then compile and/or run in &amp;#39;homogenous execution mode&amp;#39;. In this mode all primitives are co...</div><div class="ttdef"><b>De [...]
-<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_aad59e791b8292600a3d86ae182a85269"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#aad59e791b8292600a3d86ae182a85269">tvm::CompilationConfigNode::host_target</a></div><div class="ttdeci">Target host_target</div><div class="ttdoc">The host target. Used for &amp;#39;scalar&amp;#39; data and code (such as shapes and shape functions) and residual Re...</div><div class="ttdef"><b>Definition:</b> compilation_config [...]
+<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_ac29775462c7f70a3711221871fbd3453"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#ac29775462c7f70a3711221871fbd3453">tvm::CompilationConfigNode::optional_homogeneous_target</a></div><div class="ttdeci">Target optional_homogeneous_target</div><div class="ttdoc">If defined then compile and/or run in &amp;#39;homogenous execution mode&amp;#39;. In this mode all primitives are co...</div><div class="ttdef"><b>De [...]
+<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_aad59e791b8292600a3d86ae182a85269"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#aad59e791b8292600a3d86ae182a85269">tvm::CompilationConfigNode::host_target</a></div><div class="ttdeci">Target host_target</div><div class="ttdoc">The host target. Used for &amp;#39;scalar&amp;#39; data and code (such as shapes and shape functions) and residual Re...</div><div class="ttdef"><b>Definition:</b> compilation_config [...]
 <div class="ttc" id="classtvm_1_1transform_1_1PassContext_html"><div class="ttname"><a href="classtvm_1_1transform_1_1PassContext.html">tvm::transform::PassContext</a></div><div class="ttdoc">PassContext that is used to configure the pass behavior. </div><div class="ttdef"><b>Definition:</b> transform.h:154</div></div>
 <div class="ttc" id="object_8h_html_ac6e7295a4999e2c8e4a2c990beca887a"><div class="ttname"><a href="object_8h.html#ac6e7295a4999e2c8e4a2c990beca887a">TVM_DEFINE_OBJECT_REF_METHODS</a></div><div class="ttdeci">#define TVM_DEFINE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)</div><div class="ttdef"><b>Definition:</b> object.h:713</div></div>
 <div class="ttc" id="classtvm_1_1Target_html"><div class="ttname"><a href="classtvm_1_1Target.html">tvm::Target</a></div><div class="ttdoc">Managed reference class to TargetNode. </div><div class="ttdef"><b>Definition:</b> target.h:141</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1ObjectRef_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></div><div class="ttdoc">Base class of all object reference. </div><div class="ttdef"><b>Definition:</b> object.h:511</div></div>
-<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_abe4569cf32c57b710be99b50e7118876"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#abe4569cf32c57b710be99b50e7118876">tvm::CompilationConfigNode::default_primitive_virtual_device</a></div><div class="ttdeci">VirtualDevice default_primitive_virtual_device</div><div class="ttdoc">VirtualDevice for primitive operators which are not otherwise constrained to a particular device...</div><div class="ttdef"><b>Defini [...]
+<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_abe4569cf32c57b710be99b50e7118876"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#abe4569cf32c57b710be99b50e7118876">tvm::CompilationConfigNode::default_primitive_virtual_device</a></div><div class="ttdeci">VirtualDevice default_primitive_virtual_device</div><div class="ttdoc">VirtualDevice for primitive operators which are not otherwise constrained to a particular device...</div><div class="ttdef"><b>Defini [...]
 <div class="ttc" id="object_8h_html_a3aea9b3f65aeb9150c0fa7800e5573c6"><div class="ttname"><a href="object_8h.html#a3aea9b3f65aeb9150c0fa7800e5573c6">TVM_DECLARE_FINAL_OBJECT_INFO</a></div><div class="ttdeci">#define TVM_DECLARE_FINAL_OBJECT_INFO(TypeName, ParentType)</div><div class="ttdoc">helper macro to declare type information in a final class. </div><div class="ttdef"><b>Definition:</b> object.h:671</div></div>
 <div class="ttc" id="classtvm_1_1CompilationConfigNode_html_a013ec90098f6cc435024dc75dd4e76ea"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#a013ec90098f6cc435024dc75dd4e76ea">tvm::CompilationConfigNode::VisitAttrs</a></div><div class="ttdeci">void VisitAttrs(AttrVisitor *v)</div></div>
-<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_a2b5e8ebdb467811b76acae96e2cd3d3a"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#a2b5e8ebdb467811b76acae96e2cd3d3a">tvm::CompilationConfigNode::host_virtual_device</a></div><div class="ttdeci">VirtualDevice host_virtual_device</div><div class="ttdoc">VirtualDevice for the host. </div><div class="ttdef"><b>Definition:</b> compilation_config.h:91</div></div>
-<div class="ttc" id="classtvm_1_1runtime_1_1Map_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Map.html">tvm::runtime::Map</a></div><div class="ttdoc">Map container of NodeRef-&gt;NodeRef in DSL graph. Map implements copy on write semantics, which means map is mutable but copy will happen when array is referenced in more than two places. </div><div class="ttdef"><b>Definition:</b> map.h:1268</div></div>
+<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_a2b5e8ebdb467811b76acae96e2cd3d3a"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#a2b5e8ebdb467811b76acae96e2cd3d3a">tvm::CompilationConfigNode::host_virtual_device</a></div><div class="ttdeci">VirtualDevice host_virtual_device</div><div class="ttdoc">VirtualDevice for the host. </div><div class="ttdef"><b>Definition:</b> compilation_config.h:101</div></div>
+<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_a93c439b9682879b81a4888673b786429"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#a93c439b9682879b81a4888673b786429">tvm::CompilationConfigNode::FindPrimitiveTargetOrFail</a></div><div class="ttdeci">Target FindPrimitiveTargetOrFail(DLDeviceType device_type) const</div><div class="ttdoc">Return the unique Target to use for device_type. Fail if no such target exists. </div></div>
 <div class="ttc" id="classtvm_1_1CompilationConfigNode_html_a91de372f958bbe17e7c170f6abccc2a4"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#a91de372f958bbe17e7c170f6abccc2a4">tvm::CompilationConfigNode::CanonicalVirtualDevice</a></div><div class="ttdeci">VirtualDevice CanonicalVirtualDevice(const VirtualDevice &amp;virtual_device) const</div><div class="ttdoc">Returns a VirtualDevice agreeing with virtual_device on all its constrained fields, however: </div></div>
-<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_aaf237580f1684eaf97e1852c6b69ecbd"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#aaf237580f1684eaf97e1852c6b69ecbd">tvm::CompilationConfigNode::primitive_targets</a></div><div class="ttdeci">Array&lt; Target &gt; primitive_targets</div><div class="ttdoc">Vector of all available Targets for compiling primitive operators. May contain a Target for the same ...</div><div class="ttdef"><b>Definition:</b> compila [...]
-<div class="ttc" id="classtvm_1_1CompilationConfigNode_html"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html">tvm::CompilationConfigNode</a></div><div class="ttdoc">Gathers the Targets and distinguished VirtualDevices in canonical form needed to compile a Relay modu...</div><div class="ttdef"><b>Definition:</b> compilation_config.h:49</div></div>
+<div class="ttc" id="classtvm_1_1CompilationConfigNode_html_aaf237580f1684eaf97e1852c6b69ecbd"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html#aaf237580f1684eaf97e1852c6b69ecbd">tvm::CompilationConfigNode::primitive_targets</a></div><div class="ttdeci">Array&lt; Target &gt; primitive_targets</div><div class="ttdoc">Vector of all available Targets for partitioning or compiling primitive tensor operators (kernels)...</div><div class="ttdef"><b>Definition:</b> compilatio [...]
+<div class="ttc" id="classtvm_1_1CompilationConfigNode_html"><div class="ttname"><a href="classtvm_1_1CompilationConfigNode.html">tvm::CompilationConfigNode</a></div><div class="ttdoc">Gathers the Targets and distinguished VirtualDevices in canonical form needed to compile a Relay modu...</div><div class="ttdef"><b>Definition:</b> compilation_config.h:52</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/diagnostic_8h__dep__incl.svg b/docs/reference/api/doxygen/diagnostic_8h__dep__incl.svg
index 724ba6eae..30a5c4461 100644
--- a/docs/reference/api/doxygen/diagnostic_8h__dep__incl.svg
+++ b/docs/reference/api/doxygen/diagnostic_8h__dep__incl.svg
@@ -552,7 +552,7 @@
 <!-- Node127 -->
 <g id="node40" class="node">
 <title>Node127</title>
-<g id="a_node40"><a xlink:href="compilation__config_8h.html" target="_top" xlink:title="A helper class to collect all the targets in canonical form necessary for compilation. CAUTION: Preliminary, currently only used to support device planning, very likely to change. ">
+<g id="a_node40"><a xlink:href="compilation__config_8h.html" target="_top" xlink:title="A helper class to collect all the targets in canonical form necessary for compilation. ">
 <polygon fill="#ffffff" stroke="#000000" points="1674,-201.5 1674,-231.5 1795,-231.5 1795,-201.5 1674,-201.5"/>
 <text text-anchor="start" x="1682" y="-219.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/target</text>
 <text text-anchor="middle" x="1734.5" y="-208.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/compilation_config.h</text>
diff --git a/docs/reference/api/doxygen/dir_5da96592f3a7c442b838b075c58254c2.html b/docs/reference/api/doxygen/dir_5da96592f3a7c442b838b075c58254c2.html
index 11c8625f8..32397d6ef 100644
--- a/docs/reference/api/doxygen/dir_5da96592f3a7c442b838b075c58254c2.html
+++ b/docs/reference/api/doxygen/dir_5da96592f3a7c442b838b075c58254c2.html
@@ -79,7 +79,7 @@ Files</h2></td></tr>
 <tr class="memdesc:codegen_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Translates IRModule to runtime::Module. <br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:compilation__config_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="compilation__config_8h.html">compilation_config.h</a> <a href="compilation__config_8h_source.html">[code]</a></td></tr>
-<tr class="memdesc:compilation__config_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">A helper class to collect all the targets in canonical form necessary for compilation. CAUTION: Preliminary, currently only used to support device planning, very likely to change. <br /></td></tr>
+<tr class="memdesc:compilation__config_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">A helper class to collect all the targets in canonical form necessary for compilation. <br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:generic__func_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic__func_8h.html">generic_func.h</a> <a href="generic__func_8h_source.html">[code]</a></td></tr>
 <tr class="memdesc:generic__func_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generic function that can be specialzied on a per target basis. <br /></td></tr>
diff --git a/docs/reference/api/doxygen/error_8h__dep__incl.svg b/docs/reference/api/doxygen/error_8h__dep__incl.svg
index ebe0e7dcd..2bc29d2a6 100644
--- a/docs/reference/api/doxygen/error_8h__dep__incl.svg
+++ b/docs/reference/api/doxygen/error_8h__dep__incl.svg
@@ -552,7 +552,7 @@
 <!-- Node126 -->
 <g id="node39" class="node">
 <title>Node126</title>
-<g id="a_node39"><a xlink:href="compilation__config_8h.html" target="_top" xlink:title="A helper class to collect all the targets in canonical form necessary for compilation. CAUTION: Preliminary, currently only used to support device planning, very likely to change. ">
+<g id="a_node39"><a xlink:href="compilation__config_8h.html" target="_top" xlink:title="A helper class to collect all the targets in canonical form necessary for compilation. ">
 <polygon fill="#ffffff" stroke="#000000" points="1316,-201.5 1316,-231.5 1437,-231.5 1437,-201.5 1316,-201.5"/>
 <text text-anchor="start" x="1324" y="-219.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">include/tvm/target</text>
 <text text-anchor="middle" x="1376.5" y="-208.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">/compilation_config.h</text>
diff --git a/docs/reference/api/doxygen/files.html b/docs/reference/api/doxygen/files.html
index 12352d5f7..9066e6207 100644
--- a/docs/reference/api/doxygen/files.html
+++ b/docs/reference/api/doxygen/files.html
@@ -236,7 +236,7 @@ $(function() {
 <tr id="row_0_0_9_3_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="with_8h_source.html"><span class="icondoc"></span></a><a class="el" href="with_8h.html" target="_self">with.h</a></td><td class="desc">RAII wrapper function to enter and exit a context object similar to python's with syntax </td></tr>
 <tr id="row_0_0_10_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_10_" class="arrow" onclick="toggleFolder('0_0_10_')">&#9658;</span><span id="img_0_0_10_" class="iconfclosed" onclick="toggleFolder('0_0_10_')">&#160;</span><a class="el" href="dir_5da96592f3a7c442b838b075c58254c2.html" target="_self">target</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_10_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="codegen_8h_source.html"><span class="icondoc"></span></a><a class="el" href="codegen_8h.html" target="_self">codegen.h</a></td><td class="desc">Translates IRModule to runtime::Module </td></tr>
-<tr id="row_0_0_10_1_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="compilation__config_8h_source.html"><span class="icondoc"></span></a><a class="el" href="compilation__config_8h.html" target="_self">compilation_config.h</a></td><td class="desc">A helper class to collect all the targets in canonical form necessary for compilation. CAUTION: Preliminary, currently only used to support device planning, very likely to change </ [...]
+<tr id="row_0_0_10_1_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="compilation__config_8h_source.html"><span class="icondoc"></span></a><a class="el" href="compilation__config_8h.html" target="_self">compilation_config.h</a></td><td class="desc">A helper class to collect all the targets in canonical form necessary for compilation </td></tr>
 <tr id="row_0_0_10_2_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="generic__func_8h_source.html"><span class="icondoc"></span></a><a class="el" href="generic__func_8h.html" target="_self">generic_func.h</a></td><td class="desc">Generic function that can be specialzied on a per target basis </td></tr>
 <tr id="row_0_0_10_3_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="tag_8h_source.html"><span class="icondoc"></span></a><a class="el" href="tag_8h.html" target="_self">tag.h</a></td><td class="desc">Target tag registry </td></tr>
 <tr id="row_0_0_10_4_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="target_8h_source.html"><span class="icondoc"></span></a><a class="el" href="target_8h.html" target="_self">target.h</a></td><td class="desc">Compilation target object </td></tr>
diff --git a/docs/reference/api/doxygen/functions_c.html b/docs/reference/api/doxygen/functions_c.html
index 541310f55..1bd1db18a 100644
--- a/docs/reference/api/doxygen/functions_c.html
+++ b/docs/reference/api/doxygen/functions_c.html
@@ -295,7 +295,7 @@ $(function() {
 : <a class="el" href="classtvm_1_1runtime_1_1String.html#ad3af61a0b16c6d8a4e6b1c2f6e8f4a44">tvm::runtime::String</a>
 </li>
 <li>CompilationConfig()
-: <a class="el" href="classtvm_1_1CompilationConfig.html#a90f982ae2b0992cdd9241e481c3f4c42">tvm::CompilationConfig</a>
+: <a class="el" href="classtvm_1_1CompilationConfig.html#a94ca0dbfadfbd8959fb81a2ec415e4c6">tvm::CompilationConfig</a>
 , <a class="el" href="classtvm_1_1CompilationConfigNode.html#a770bdaa15e07052d9ee3434c7131ff27">tvm::CompilationConfigNode</a>
 </li>
 <li>CompileError()
diff --git a/docs/reference/api/doxygen/functions_f.html b/docs/reference/api/doxygen/functions_f.html
index d6022ae9c..c62a7cedb 100644
--- a/docs/reference/api/doxygen/functions_f.html
+++ b/docs/reference/api/doxygen/functions_f.html
@@ -303,6 +303,9 @@ $(function() {
 <li>FindBestRange()
 : <a class="el" href="classtvm_1_1arith_1_1IntGroupBounds.html#aa3483fc05bb117933c2aca5bc81e07c8">tvm::arith::IntGroupBounds</a>
 </li>
+<li>FindPrimitiveTargetOrFail()
+: <a class="el" href="classtvm_1_1CompilationConfigNode.html#a93c439b9682879b81a4888673b786429">tvm::CompilationConfigNode</a>
+</li>
 <li>FinishMessage()
 : <a class="el" href="classtvm_1_1runtime_1_1micro__rpc_1_1Session.html#ae51f50c0eb8743fc4c4f3e58400a9ab1">tvm::runtime::micro_rpc::Session</a>
 </li>
@@ -362,7 +365,7 @@ $(function() {
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1State.html#a3cd6d26db25a42427d6fb51b3717effc">tvm::auto_scheduler::State</a>
 </li>
 <li>FollowFusedSplitStep()
-: <a class="el" href="classtvm_1_1auto__scheduler_1_1FollowFusedSplitStep.html#a2bfadae4b32c30ec9e9ba52b0c88d9aa">tvm::auto_scheduler::FollowFusedSplitStep</a>
+: <a class="el" href="classtvm_1_1auto__scheduler_1_1FollowFusedSplitStep.html#a14a76fac3e871cbb16e1c63c543a445f">tvm::auto_scheduler::FollowFusedSplitStep</a>
 </li>
 <li>FollowSplitStep()
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1FollowSplitStep.html#a60e0e081cf7e367d844163e7c2dcd768">tvm::auto_scheduler::FollowSplitStep</a>
@@ -458,7 +461,7 @@ $(function() {
 , <a class="el" href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01PrimExpr_01_4.html#aa071662c3084d7ad3322351cb44c3dbf">tvm::runtime::PackedFuncValueConverter&lt; PrimExpr &gt;</a>
 , <a class="el" href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01tvm_1_1Bool_01_4.html#a8afe0a2b788c12dcebec930db368f8cc">tvm::runtime::PackedFuncValueConverter&lt; tvm::Bool &gt;</a>
 , <a class="el" href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01tvm_1_1Integer_01_4.html#a863930925e7354b87d35fde2ac310124">tvm::runtime::PackedFuncValueConverter&lt; tvm::Integer &gt;</a>
-, <a class="el" href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_1_1tvm_1_1runtime_1_1String_01_4.html#a1d57124f26aeed2583d3ae24226d89c7">tvm::runtime::PackedFuncValueConverter&lt;::tvm::runtime::String &gt;</a>
+, <a class="el" href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_1_1tvm_1_1runtime_1_1String_01_4.html#a9ac48d52f86dc3718590acc119e88741">tvm::runtime::PackedFuncValueConverter&lt;::tvm::runtime::String &gt;</a>
 </li>
 <li>from
 : <a class="el" href="structtvm_1_1runtime_1_1vm_1_1Instruction.html#a50da0d506e9a2bffeaf75c702cf2cc33">tvm::runtime::vm::Instruction</a>
@@ -597,7 +600,7 @@ $(function() {
 : <a class="el" href="classtvm_1_1te_1_1Fuse.html#a10b77eec10eb7dbc536b0c8d65163f9c">tvm::te::Fuse</a>
 </li>
 <li>fuse()
-: <a class="el" href="classtvm_1_1te_1_1Stage.html#a5658065d9cbbee620bbd107d30c4ae72">tvm::te::Stage</a>
+: <a class="el" href="classtvm_1_1te_1_1Stage.html#a07b721494aa3c0c79e8a8654c433708f">tvm::te::Stage</a>
 </li>
 <li>Fuse()
 : <a class="el" href="classtvm_1_1tir_1_1ScheduleNode.html#a4e60246388be76fe6a1f46c4255da3ff">tvm::tir::ScheduleNode</a>
@@ -609,7 +612,7 @@ $(function() {
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1FuseStepNode.html#a19c1a7b47f59a4f004a2dd9f354835eb">tvm::auto_scheduler::FuseStepNode</a>
 </li>
 <li>FuseStep()
-: <a class="el" href="classtvm_1_1auto__scheduler_1_1FuseStep.html#a77c478295e170275d7d5da7345a03546">tvm::auto_scheduler::FuseStep</a>
+: <a class="el" href="classtvm_1_1auto__scheduler_1_1FuseStep.html#a345e30fc54e9782faa9b8744c9ed5d14">tvm::auto_scheduler::FuseStep</a>
 </li>
 <li>FVisitAttrs
 : <a class="el" href="classtvm_1_1ReflectionVTable.html#a486eb682af89ac025c0db1f8f6045b95">tvm::ReflectionVTable</a>
diff --git a/docs/reference/api/doxygen/functions_func_c.html b/docs/reference/api/doxygen/functions_func_c.html
index 07c6b69db..e365fa1f8 100644
--- a/docs/reference/api/doxygen/functions_func_c.html
+++ b/docs/reference/api/doxygen/functions_func_c.html
@@ -195,7 +195,7 @@ $(function() {
 : <a class="el" href="classtvm_1_1runtime_1_1String.html#ad3af61a0b16c6d8a4e6b1c2f6e8f4a44">tvm::runtime::String</a>
 </li>
 <li>CompilationConfig()
-: <a class="el" href="classtvm_1_1CompilationConfig.html#a90f982ae2b0992cdd9241e481c3f4c42">tvm::CompilationConfig</a>
+: <a class="el" href="classtvm_1_1CompilationConfig.html#a94ca0dbfadfbd8959fb81a2ec415e4c6">tvm::CompilationConfig</a>
 </li>
 <li>CompileError()
 : <a class="el" href="classtvm_1_1CompileError.html#ac603e8927fd05acb728fe44ecbe9b6a5">tvm::CompileError</a>
diff --git a/docs/reference/api/doxygen/functions_func_f.html b/docs/reference/api/doxygen/functions_func_f.html
index c7b76c8b3..a283d7a89 100644
--- a/docs/reference/api/doxygen/functions_func_f.html
+++ b/docs/reference/api/doxygen/functions_func_f.html
@@ -91,6 +91,9 @@ $(function() {
 <li>FindBestRange()
 : <a class="el" href="classtvm_1_1arith_1_1IntGroupBounds.html#aa3483fc05bb117933c2aca5bc81e07c8">tvm::arith::IntGroupBounds</a>
 </li>
+<li>FindPrimitiveTargetOrFail()
+: <a class="el" href="classtvm_1_1CompilationConfigNode.html#a93c439b9682879b81a4888673b786429">tvm::CompilationConfigNode</a>
+</li>
 <li>FinishMessage()
 : <a class="el" href="classtvm_1_1runtime_1_1micro__rpc_1_1Session.html#ae51f50c0eb8743fc4c4f3e58400a9ab1">tvm::runtime::micro_rpc::Session</a>
 </li>
@@ -188,7 +191,7 @@ $(function() {
 , <a class="el" href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01PrimExpr_01_4.html#aa071662c3084d7ad3322351cb44c3dbf">tvm::runtime::PackedFuncValueConverter&lt; PrimExpr &gt;</a>
 , <a class="el" href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01tvm_1_1Bool_01_4.html#a8afe0a2b788c12dcebec930db368f8cc">tvm::runtime::PackedFuncValueConverter&lt; tvm::Bool &gt;</a>
 , <a class="el" href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_01tvm_1_1Integer_01_4.html#a863930925e7354b87d35fde2ac310124">tvm::runtime::PackedFuncValueConverter&lt; tvm::Integer &gt;</a>
-, <a class="el" href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_1_1tvm_1_1runtime_1_1String_01_4.html#a1d57124f26aeed2583d3ae24226d89c7">tvm::runtime::PackedFuncValueConverter&lt;::tvm::runtime::String &gt;</a>
+, <a class="el" href="structtvm_1_1runtime_1_1PackedFuncValueConverter_3_1_1tvm_1_1runtime_1_1String_01_4.html#a9ac48d52f86dc3718590acc119e88741">tvm::runtime::PackedFuncValueConverter&lt;::tvm::runtime::String &gt;</a>
 </li>
 <li>FromDLPack()
 : <a class="el" href="classtvm_1_1runtime_1_1NDArray.html#abec485628a0ca451b668c42fd8fa691a">tvm::runtime::NDArray</a>
@@ -263,13 +266,13 @@ $(function() {
 : <a class="el" href="classtvm_1_1te_1_1Fuse.html#a10b77eec10eb7dbc536b0c8d65163f9c">tvm::te::Fuse</a>
 </li>
 <li>fuse()
-: <a class="el" href="classtvm_1_1te_1_1Stage.html#a5658065d9cbbee620bbd107d30c4ae72">tvm::te::Stage</a>
+: <a class="el" href="classtvm_1_1te_1_1Stage.html#a07b721494aa3c0c79e8a8654c433708f">tvm::te::Stage</a>
 </li>
 <li>Fuse()
 : <a class="el" href="classtvm_1_1tir_1_1ScheduleNode.html#a4e60246388be76fe6a1f46c4255da3ff">tvm::tir::ScheduleNode</a>
 </li>
 <li>FuseStep()
-: <a class="el" href="classtvm_1_1auto__scheduler_1_1FuseStep.html#a345e30fc54e9782faa9b8744c9ed5d14">tvm::auto_scheduler::FuseStep</a>
+: <a class="el" href="classtvm_1_1auto__scheduler_1_1FuseStep.html#a77c478295e170275d7d5da7345a03546">tvm::auto_scheduler::FuseStep</a>
 </li>
 </ul>
 </div><!-- contents -->
diff --git a/docs/reference/api/doxygen/functions_func_i.html b/docs/reference/api/doxygen/functions_func_i.html
index bc4577e97..c7bbda8f7 100644
--- a/docs/reference/api/doxygen/functions_func_i.html
+++ b/docs/reference/api/doxygen/functions_func_i.html
@@ -217,7 +217,7 @@ $(function() {
 </li>
 <li>Invoke()
 : <a class="el" href="structtvm_1_1runtime_1_1vm_1_1Instruction.html#acb19406a24fa95bf39a29d15ad6be256">tvm::runtime::vm::Instruction</a>
-, <a class="el" href="classtvm_1_1runtime_1_1vm_1_1VirtualMachine.html#a1094291352e07e4c827a88b1167b89ad">tvm::runtime::vm::VirtualMachine</a>
+, <a class="el" href="classtvm_1_1runtime_1_1vm_1_1VirtualMachine.html#aa5f4724e2e702ef9d5c34e85dec53b02">tvm::runtime::vm::VirtualMachine</a>
 </li>
 <li>InvokeClosure()
 : <a class="el" href="structtvm_1_1runtime_1_1vm_1_1Instruction.html#aff2701f8ac1a6232115e73fbb3fe522a">tvm::runtime::vm::Instruction</a>
@@ -293,6 +293,12 @@ $(function() {
 <li>IsEverything()
 : <a class="el" href="classtvm_1_1arith_1_1IntSet.html#a7754207d93bf25efdd733829ddfa8a7e">tvm::arith::IntSet</a>
 </li>
+<li>IsExternalCodegen()
+: <a class="el" href="classtvm_1_1Target.html#a4e4aca0d3516a0998b55d043e12cd832">tvm::Target</a>
+</li>
+<li>IsExternalCodegenFor()
+: <a class="el" href="classtvm_1_1Target.html#acc8e9cae4385eb160ca79b1ddf8a7510">tvm::Target</a>
+</li>
 <li>IsFullyConstrained()
 : <a class="el" href="classtvm_1_1VirtualDeviceNode.html#ae3c848e08b56105cdb046907ccbfc59c">tvm::VirtualDeviceNode</a>
 </li>
@@ -349,7 +355,7 @@ $(function() {
 </li>
 <li>iterator()
 : <a class="el" href="classtvm_1_1runtime_1_1Map_1_1iterator.html#ad8b40ddeffccb6f221601eda70202f9a">tvm::runtime::Map&lt; K, V, typename, typename &gt;::iterator</a>
-, <a class="el" href="classtvm_1_1runtime_1_1MapNode_1_1iterator.html#ad605c9f9aaed23e669c2a3c595d08ba4">tvm::runtime::MapNode::iterator</a>
+, <a class="el" href="classtvm_1_1runtime_1_1MapNode_1_1iterator.html#a75e3f2657cdb7cc613bf922429983165">tvm::runtime::MapNode::iterator</a>
 </li>
 <li>iterator_base()
 : <a class="el" href="classtvm_1_1support_1_1Span_1_1iterator__base.html#a8280a97672c014b1d2005158896ed43a">tvm::support::Span&lt; T, W &gt;::iterator_base&lt; W1 &gt;</a>
@@ -358,7 +364,7 @@ $(function() {
 : <a class="el" href="classtvm_1_1arith_1_1IterMark.html#a7b46a2bc2460f43e529a6fc65a0a618d">tvm::arith::IterMark</a>
 </li>
 <li>IterSplitExpr()
-: <a class="el" href="classtvm_1_1arith_1_1IterSplitExpr.html#a754a9d8338aa2d2b5fac9e10c95c9128">tvm::arith::IterSplitExpr</a>
+: <a class="el" href="classtvm_1_1arith_1_1IterSplitExpr.html#a59bd2fa8d07f4ad2c4ac09c8f7004cb8">tvm::arith::IterSplitExpr</a>
 </li>
 <li>IterSumExpr()
 : <a class="el" href="classtvm_1_1arith_1_1IterSumExpr.html#a1b9f8013f3978bafe4da3a6cad65fb36">tvm::arith::IterSumExpr</a>
@@ -367,10 +373,10 @@ $(function() {
 : <a class="el" href="classtvm_1_1tir_1_1IterVar.html#a1c0d6998203092c953b7da00f16c5c31">tvm::tir::IterVar</a>
 </li>
 <li>IterVarAttr()
-: <a class="el" href="classtvm_1_1te_1_1IterVarAttr.html#a5549479b7e3ce243d89b219b0dd7ef71">tvm::te::IterVarAttr</a>
+: <a class="el" href="classtvm_1_1te_1_1IterVarAttr.html#aa20680587a1c880b659063cd37ba4763">tvm::te::IterVarAttr</a>
 </li>
 <li>IterVarRelation()
-: <a class="el" href="classtvm_1_1te_1_1IterVarRelation.html#a3e611ee0870d9a542b8deb79575dbf66">tvm::te::IterVarRelation</a>
+: <a class="el" href="classtvm_1_1te_1_1IterVarRelation.html#a4b50caede957f1cb50587ce15a87109f">tvm::te::IterVarRelation</a>
 </li>
 </ul>
 </div><!-- contents -->
diff --git a/docs/reference/api/doxygen/functions_i.html b/docs/reference/api/doxygen/functions_i.html
index 5f27a4e24..44c0ff96e 100644
--- a/docs/reference/api/doxygen/functions_i.html
+++ b/docs/reference/api/doxygen/functions_i.html
@@ -309,7 +309,7 @@ $(function() {
 : <a class="el" href="classtvm_1_1arith_1_1IntConstraintsTransform.html#a1c5ea6cf05289065ee8967cbfb897181">tvm::arith::IntConstraintsTransform</a>
 </li>
 <li>Integer()
-: <a class="el" href="classtvm_1_1Integer.html#a4bdb4edd6acf99ecfca13bf34da04fae">tvm::Integer</a>
+: <a class="el" href="classtvm_1_1Integer.html#a2d3969d98441b5b2ee5d8a986a56c410">tvm::Integer</a>
 </li>
 <li>Internal
 : <a class="el" href="classtvm_1_1te_1_1SpecializedCondition.html#a8bde6eb35df6b3a9f53810e0bc79fdfd">tvm::te::SpecializedCondition</a>
@@ -463,6 +463,12 @@ $(function() {
 <li>IsEverything()
 : <a class="el" href="classtvm_1_1arith_1_1IntSet.html#a7754207d93bf25efdd733829ddfa8a7e">tvm::arith::IntSet</a>
 </li>
+<li>IsExternalCodegen()
+: <a class="el" href="classtvm_1_1Target.html#a4e4aca0d3516a0998b55d043e12cd832">tvm::Target</a>
+</li>
+<li>IsExternalCodegenFor()
+: <a class="el" href="classtvm_1_1Target.html#acc8e9cae4385eb160ca79b1ddf8a7510">tvm::Target</a>
+</li>
 <li>IsFullyConstrained()
 : <a class="el" href="classtvm_1_1VirtualDeviceNode.html#ae3c848e08b56105cdb046907ccbfc59c">tvm::VirtualDeviceNode</a>
 </li>
@@ -551,7 +557,7 @@ $(function() {
 <li>iterator
 : <a class="el" href="classtvm_1_1runtime_1_1Array.html#a98e5ad633b8195d954c98067213ae29f">tvm::runtime::Array&lt; T, typename &gt;</a>
 , <a class="el" href="classtvm_1_1runtime_1_1Map_1_1iterator.html#ad8b40ddeffccb6f221601eda70202f9a">tvm::runtime::Map&lt; K, V, typename, typename &gt;::iterator</a>
-, <a class="el" href="classtvm_1_1runtime_1_1MapNode_1_1iterator.html#ad605c9f9aaed23e669c2a3c595d08ba4">tvm::runtime::MapNode::iterator</a>
+, <a class="el" href="classtvm_1_1runtime_1_1MapNode_1_1iterator.html#a75e3f2657cdb7cc613bf922429983165">tvm::runtime::MapNode::iterator</a>
 , <a class="el" href="classtvm_1_1runtime_1_1metadata_1_1ArrayAccessor.html#a79703afd52032715cc2d9d4c6830147f">tvm::runtime::metadata::ArrayAccessor&lt; C, Ref &gt;</a>
 , <a class="el" href="classtvm_1_1runtime_1_1metadata_1_1ArrayAccessor_3_01const_01char_01_5_00_01_1_1tvm_1_1runtime_1_1String_01_4.html#a3216d91ef7fb0771463e76c9a0afcd1c">tvm::runtime::metadata::ArrayAccessor&lt; const char *, ::tvm::runtime::String &gt;</a>
 , <a class="el" href="classtvm_1_1support_1_1Span.html#af6fbb6a54a3ecf8673146acae0c8228b">tvm::support::Span&lt; T, W &gt;</a>
@@ -572,7 +578,7 @@ $(function() {
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1StageNode.html#a65304957db6f84d8d7c90ad553453bb9">tvm::auto_scheduler::StageNode</a>
 </li>
 <li>IterSplitExpr()
-: <a class="el" href="classtvm_1_1arith_1_1IterSplitExpr.html#a59bd2fa8d07f4ad2c4ac09c8f7004cb8">tvm::arith::IterSplitExpr</a>
+: <a class="el" href="classtvm_1_1arith_1_1IterSplitExpr.html#a754a9d8338aa2d2b5fac9e10c95c9128">tvm::arith::IterSplitExpr</a>
 </li>
 <li>IterSumExpr()
 : <a class="el" href="classtvm_1_1arith_1_1IterSumExpr.html#a1b9f8013f3978bafe4da3a6cad65fb36">tvm::arith::IterSumExpr</a>
@@ -581,7 +587,7 @@ $(function() {
 : <a class="el" href="classtvm_1_1tir_1_1IterVar.html#a1c0d6998203092c953b7da00f16c5c31">tvm::tir::IterVar</a>
 </li>
 <li>IterVarAttr()
-: <a class="el" href="classtvm_1_1te_1_1IterVarAttr.html#aa20680587a1c880b659063cd37ba4763">tvm::te::IterVarAttr</a>
+: <a class="el" href="classtvm_1_1te_1_1IterVarAttr.html#a5549479b7e3ce243d89b219b0dd7ef71">tvm::te::IterVarAttr</a>
 </li>
 <li>IterVarRelation()
 : <a class="el" href="classtvm_1_1te_1_1IterVarRelation.html#a4b50caede957f1cb50587ce15a87109f">tvm::te::IterVarRelation</a>
diff --git a/docs/reference/api/doxygen/functions_l.html b/docs/reference/api/doxygen/functions_l.html
index 3cf0e1b17..2092d3479 100644
--- a/docs/reference/api/doxygen/functions_l.html
+++ b/docs/reference/api/doxygen/functions_l.html
@@ -114,9 +114,6 @@ $(function() {
 <li>left
 : <a class="el" href="classtvm_1_1relay_1_1AltPatternNode.html#a02ffb32a51710af5bf595069c2dd7a33">tvm::relay::AltPatternNode</a>
 </li>
-<li>legacy_target_map
-: <a class="el" href="classtvm_1_1CompilationConfigNode.html#aea9de8943ac60347359e749067f6bae8">tvm::CompilationConfigNode</a>
-</li>
 <li>length()
 : <a class="el" href="classtvm_1_1runtime_1_1String.html#a812045bfefb0f80f850d1b39f0e40489">tvm::runtime::String</a>
 </li>
@@ -248,7 +245,7 @@ $(function() {
 : <a class="el" href="classtvm_1_1IRModuleNode.html#ae078ad8def39579701d144578c787bcf">tvm::IRModuleNode</a>
 </li>
 <li>LookupTypeDef()
-: <a class="el" href="classtvm_1_1IRModuleNode.html#a23f3769fe60b3b06c9d163650ea7caaf">tvm::IRModuleNode</a>
+: <a class="el" href="classtvm_1_1IRModuleNode.html#ae095c1fd87642bd417224668c5b4d910">tvm::IRModuleNode</a>
 </li>
 <li>loop_var
 : <a class="el" href="classtvm_1_1tir_1_1ForNode.html#a7dbf66bdcf8ed397321517f0915a0946">tvm::tir::ForNode</a>
diff --git a/docs/reference/api/doxygen/functions_m.html b/docs/reference/api/doxygen/functions_m.html
index 9e89a8991..f56ff9eb7 100644
--- a/docs/reference/api/doxygen/functions_m.html
+++ b/docs/reference/api/doxygen/functions_m.html
@@ -296,7 +296,7 @@ $(function() {
 : <a class="el" href="classtvm_1_1DiagnosticContextNode.html#adea7e38a6e47cbab7fb5639f208aa536">tvm::DiagnosticContextNode</a>
 </li>
 <li>Module()
-: <a class="el" href="classtvm_1_1runtime_1_1Module.html#abd1380b3f813c2b6acefca3aaef425f4">tvm::runtime::Module</a>
+: <a class="el" href="classtvm_1_1runtime_1_1Module.html#abfbc619b3b3166d63ec52e399c24bed9">tvm::runtime::Module</a>
 , <a class="el" href="classtvm_1_1runtime_1_1ModuleNode.html#a21f639900c480510650969df9c74d17d">tvm::runtime::ModuleNode</a>
 </li>
 <li>ModuleInternal
diff --git a/docs/reference/api/doxygen/functions_s.html b/docs/reference/api/doxygen/functions_s.html
index 83cf3fa59..67fe6e2f6 100644
--- a/docs/reference/api/doxygen/functions_s.html
+++ b/docs/reference/api/doxygen/functions_s.html
@@ -1046,7 +1046,7 @@ $(function() {
 , <a class="el" href="classtvm_1_1tir_1_1BufferNode.html#ac18ddd10b79a30ae57d3a8283686259d">tvm::tir::BufferNode</a>
 </li>
 <li>String()
-: <a class="el" href="classtvm_1_1runtime_1_1String.html#acf549b3c43142639879e0fc31ea5cd77">tvm::runtime::String</a>
+: <a class="el" href="classtvm_1_1runtime_1_1String.html#a02fca36e3ff55cc1e83635b02a11fca3">tvm::runtime::String</a>
 , <a class="el" href="classtvm_1_1runtime_1_1StringObj_1_1FromStd.html#a7fb804f7dc96dd9f705c84095f37f1ca">tvm::runtime::StringObj::FromStd</a>
 , <a class="el" href="classtvm_1_1runtime_1_1StringObj.html#a7fb804f7dc96dd9f705c84095f37f1ca">tvm::runtime::StringObj</a>
 </li>
diff --git a/docs/reference/api/doxygen/functions_t.html b/docs/reference/api/doxygen/functions_t.html
index be6324dfc..9ece852b2 100644
--- a/docs/reference/api/doxygen/functions_t.html
+++ b/docs/reference/api/doxygen/functions_t.html
@@ -78,7 +78,7 @@ $(function() {
 , <a class="el" href="structtvm_1_1runtime_1_1vm_1_1Instruction.html#a46879dbe84105fb621a6167f8d73b223">tvm::runtime::vm::Instruction</a>
 </li>
 <li>Target()
-: <a class="el" href="classtvm_1_1Target.html#a77f3d7cc97d8cfd7172af58b4e784d89">tvm::Target</a>
+: <a class="el" href="classtvm_1_1Target.html#ab825b350cf478bf948d807b6fdf636a0">tvm::Target</a>
 </li>
 <li>target
 : <a class="el" href="classtvm_1_1VirtualDeviceNode.html#a8b2d427d9e21886ccaeaae5e9cc55aaf">tvm::VirtualDeviceNode</a>
@@ -1258,10 +1258,10 @@ $(function() {
 : <a class="el" href="classtvm_1_1TypeData.html#a0a98fd1095812379d2bd1337db1511c1">tvm::TypeData</a>
 </li>
 <li>TypedEnvFunc()
-: <a class="el" href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html#a0d72a6fa7263821c14bcd37837998ed9">tvm::TypedEnvFunc&lt; R(Args...)&gt;</a>
+: <a class="el" href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html#a41a6b9014d0feeb628ca7edfd0d26f0b">tvm::TypedEnvFunc&lt; R(Args...)&gt;</a>
 </li>
 <li>TypedPackedFunc()
-: <a class="el" href="classtvm_1_1runtime_1_1TypedPackedFunc_3_01R_07Args_8_8_8_08_4.html#a8941c80982a1b2a289440f3c79bb0ac8">tvm::runtime::TypedPackedFunc&lt; R(Args...)&gt;</a>
+: <a class="el" href="classtvm_1_1runtime_1_1TypedPackedFunc_3_01R_07Args_8_8_8_08_4.html#afd8ee9dd9648c19b468bb4b0b00e8e4e">tvm::runtime::TypedPackedFunc&lt; R(Args...)&gt;</a>
 </li>
 <li>TypeIndex2Key()
 : <a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">tvm::runtime::Object</a>
diff --git a/docs/reference/api/doxygen/functions_vars_l.html b/docs/reference/api/doxygen/functions_vars_l.html
index 6f5cbeeae..0d49c39a3 100644
--- a/docs/reference/api/doxygen/functions_vars_l.html
+++ b/docs/reference/api/doxygen/functions_vars_l.html
@@ -107,9 +107,6 @@ $(function() {
 <li>left
 : <a class="el" href="classtvm_1_1relay_1_1AltPatternNode.html#a02ffb32a51710af5bf595069c2dd7a33">tvm::relay::AltPatternNode</a>
 </li>
-<li>legacy_target_map
-: <a class="el" href="classtvm_1_1CompilationConfigNode.html#aea9de8943ac60347359e749067f6bae8">tvm::CompilationConfigNode</a>
-</li>
 <li>lengths
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1SplitStepNode.html#aac7336b4924fc50da9178c271f1cb2ed">tvm::auto_scheduler::SplitStepNode</a>
 </li>
diff --git a/docs/reference/api/doxygen/hierarchy.html b/docs/reference/api/doxygen/hierarchy.html
index e73661552..23c8beec4 100644
--- a/docs/reference/api/doxygen/hierarchy.html
+++ b/docs/reference/api/doxygen/hierarchy.html
@@ -601,7 +601,7 @@ This inheritance list is sorted roughly, but not completely, alphabetically:</di
 <tr id="row_98_31_1_13_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItemNode.html" target="_self">tvm::relay::TupleGetItemNode</a></td><td class="desc"></td></tr>
 <tr id="row_98_31_1_14_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleNode.html" target="_self">tvm::relay::TupleNode</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Tuple.html">Tuple</a> container </td></tr>
 <tr id="row_98_31_1_15_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1VarNode.html" target="_self">tvm::relay::VarNode</a></td><td class="desc">Container for <a class="el" href="classtvm_1_1relay_1_1Var.html">Var</a> </td></tr>
-<tr id="row_98_32_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1CompilationConfigNode.html" target="_self">tvm::CompilationConfigNode</a></td><td class="desc">Gathers the <code>Targets</code> and distinguished <code>VirtualDevices</code> in canonical form needed to compile a Relay module. Centralizes any setup and validation logic needed to transit [...]
+<tr id="row_98_32_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1CompilationConfigNode.html" target="_self">tvm::CompilationConfigNode</a></td><td class="desc">Gathers the <code>Targets</code> and distinguished <code>VirtualDevices</code> in canonical form needed to compile a Relay module for execution over possibly heterogeneous devices. Centralize [...]
 <tr id="row_98_33_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DiagnosticContextNode.html" target="_self">tvm::DiagnosticContextNode</a></td><td class="desc"></td></tr>
 <tr id="row_98_34_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DiagnosticNode.html" target="_self">tvm::DiagnosticNode</a></td><td class="desc">A compiler diagnostic message </td></tr>
 <tr id="row_98_35_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DiagnosticRendererNode.html" target="_self">tvm::DiagnosticRendererNode</a></td><td class="desc">Display diagnostics in a given display format </td></tr>
@@ -866,344 +866,343 @@ This inheritance list is sorted roughly, but not completely, alphabetically:</di
 <tr id="row_107_50_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Array.html" target="_self">tvm::runtime::Array&lt; tvm::Type &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_107_51_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Array.html" target="_self">tvm::runtime::Array&lt; tvm::TypeConstraint &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_107_52_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Array.html" target="_self">tvm::runtime::Array&lt; tvm::TypeVar &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_53_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; Integer, Target &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_54_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::GlobalTypeVar, tvm::TypeData &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_55_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::GlobalVar, tvm::BaseFunc &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_56_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::meta_schedule::Mutator, tvm::FloatImm &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_57_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::relay::Var, tvm::runtime::ObjectRef &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_58_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::runtime::String, tvm::GlobalTypeVar &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_59_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::runtime::String, tvm::GlobalVar &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_60_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::runtime::String, tvm::runtime::Map&lt; tvm::runtime::String, tvm::runtime::ObjectRef &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_61_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::runtime::String, tvm::runtime::ObjectRef &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_62_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::SourceName, tvm::parser::Source &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_63_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::Target, tvm::Integer &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_64_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::Target, tvm::runtime::String &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_65_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::te::Operation, tvm::te::Stage &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_66_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::tir::Instruction, tvm::runtime::ObjectRef &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_67_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::tir::IterVar, tvm::te::IterVarAttr &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_68_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::tir::usmp::BufferInfo, tvm::tir::Stmt &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_69_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::tir::Var, tvm::PrimExpr &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_70_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::tir::Var, tvm::Range &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_71_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::tir::Var, tvm::tir::Buffer &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_72_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::DiagnosticContext &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_73_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::FloatImm &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_74_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::Integer &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_75_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::IRModule &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_76_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::meta_schedule::CostModel &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_77_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::meta_schedule::SearchStrategy &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_78_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::meta_schedule::SpaceGenerator &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_79_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::PrimExpr &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_80_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Array&lt; tvm::auto_scheduler::MeasureCallback &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_81_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Array&lt; tvm::FloatImm &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_82_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Array&lt; tvm::Integer &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_83_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Array&lt; tvm::meta_schedule::BuilderResult &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_84_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Array&lt; tvm::meta_schedule::MeasureCandidate &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_85_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Array&lt; tvm::meta_schedule::RunnerFuture &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_86_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Map&lt; tvm::runtime::String, tvm::runtime::NDArray &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_87_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::NDArray &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_88_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::ObjectRef &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_89_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::String &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_90_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::Target &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_91_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::tir::IterVar &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_92_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::tir::Stmt &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_107_93_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_93_" class="arrow" onclick="toggleFolder('107_93_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1AffineType.html" target="_self">tvm::AffineType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1AffineTypeNode.html" title="AffineType representation. ">Affi [...]
-<tr id="row_107_93_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TensorAffineType.html" target="_self">tvm::TensorAffineType</a></td><td class="desc">Managed reference to AffineTypes </td></tr>
-<tr id="row_107_93_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TupleAffineType.html" target="_self">tvm::TupleAffineType</a></td><td class="desc">Managed reference to TupleAffineTypes </td></tr>
-<tr id="row_107_94_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1ConstIntBound.html" target="_self">tvm::arith::ConstIntBound</a></td><td class="desc">Reference class to <a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html" title="Constant integer up and lower bound(inclusive). Useful for value bound analysis. ">Con [...]
-<tr id="row_107_95_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IntConstraints.html" target="_self">tvm::arith::IntConstraints</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IntConstraintsNode.html" title="Represent integer constrains including (integer) variables, their ranges and the  [...]
-<tr id="row_107_96_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IntConstraintsTransform.html" target="_self">tvm::arith::IntConstraintsTransform</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IntConstraintsTransformNode.html" title="We can have different set of variables to represent th [...]
-<tr id="row_107_97_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IntGroupBounds.html" target="_self">tvm::arith::IntGroupBounds</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IntGroupBoundsNode.html" title="Represent integer grouped bounds which are classified into lower bounds (inclusiv [...]
-<tr id="row_107_98_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IntSet.html" target="_self">tvm::arith::IntSet</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IntSetNode.html" title="Base class of all Integer set containers. represent a set of integers in one dimension. ">IntSetNode</a>  [...]
-<tr id="row_107_99_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IterMark.html" target="_self">tvm::arith::IterMark</a></td><td class="desc">Managed reference to IterMarkExprNode </td></tr>
-<tr id="row_107_100_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1ModularSet.html" target="_self">tvm::arith::ModularSet</a></td><td class="desc">Reference of <a class="el" href="classtvm_1_1arith_1_1ModularSetNode.html" title="Range of a linear integer function. Use to do specify the possible index values. ">ModularSetNode</a [...]
-<tr id="row_107_101_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1AttrFieldInfo.html" target="_self">tvm::AttrFieldInfo</a></td><td class="desc"><a class="el" href="classtvm_1_1AttrFieldInfo.html" title="AttrFieldInfo. ">AttrFieldInfo</a> </td></tr>
-<tr id="row_107_102_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_102_" class="arrow" onclick="toggleFolder('107_102_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Attrs.html" target="_self">tvm::Attrs</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1BaseAttrsNode.html" title="Base class of all attribute class. ">Base [...]
-<tr id="row_107_102_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DictAttrs.html" target="_self">tvm::DictAttrs</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1DictAttrsNode.html" title="Specialized attribute type that is backed by a map. The DictAttrsNode implements the Attrs behavior...">DictAttrsNode< [...]
-<tr id="row_107_103_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1AccessAnalyzer.html" target="_self">tvm::auto_scheduler::AccessAnalyzer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1AccessAnalyzerNode.html" title="Static analyzer for a ComputeDAG. ">AccessAnalyzerN [...]
-<tr id="row_107_104_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1AttachMap.html" target="_self">tvm::auto_scheduler::AttachMap</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1AttachMapNode.html" title="stores the compute_at relation between stages This stores a bi-dir [...]
-<tr id="row_107_105_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1BuildResult.html" target="_self">tvm::auto_scheduler::BuildResult</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1BuildResultNode.html" title="Store the result of a build. ">BuildResultNode</a> </td></tr>
-<tr id="row_107_106_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeDAG.html" target="_self">tvm::auto_scheduler::ComputeDAG</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeDAGNode.html" title="The auto-scheduler&#39;s computational graph and related progra [...]
-<tr id="row_107_107_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_107_" class="arrow" onclick="toggleFolder('107_107_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1CostModel.html" target="_self">tvm::auto_scheduler::CostModel</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1CostMo [...]
-<tr id="row_107_107_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1PythonBasedModel.html" target="_self">tvm::auto_scheduler::PythonBasedModel</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1PythonBasedModelNode.html" title="A wrapper for cost model defined by python  [...]
-<tr id="row_107_107_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1RandomModel.html" target="_self">tvm::auto_scheduler::RandomModel</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1RandomModelNode.html" title="The cost model returning random value for all predictions. [...]
-<tr id="row_107_108_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html" target="_self">tvm::auto_scheduler::HardwareParams</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html" title="The parameters of target hardware used to guide the [...]
-<tr id="row_107_109_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1Iterator.html" target="_self">tvm::auto_scheduler::Iterator</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1IteratorNode.html" title="An iterator of a for-loop Similar to tvm::IterVar in include/tvm/tir/ [...]
-<tr id="row_107_110_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_110_" class="arrow" onclick="toggleFolder('107_110_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureCallback.html" target="_self">tvm::auto_scheduler::MeasureCallback</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__schedul [...]
-<tr id="row_107_110_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1PythonBasedMeasureCallback.html" target="_self">tvm::auto_scheduler::PythonBasedMeasureCallback</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1PythonBasedMeasureCallbackNode.html" title="A wrapper for [...]
-<tr id="row_107_110_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1RecordToFile.html" target="_self">tvm::auto_scheduler::RecordToFile</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1RecordToFileNode.html" title="Callback for logging the input and results of measureme [...]
-<tr id="row_107_111_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureInput.html" target="_self">tvm::auto_scheduler::MeasureInput</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureInputNode.html" title="Store the input of a measurement. ">MeasureInputNode</a>  [...]
-<tr id="row_107_112_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureResult.html" target="_self">tvm::auto_scheduler::MeasureResult</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureResultNode.html" title="Store the results of a measurement. ">MeasureResultNod [...]
-<tr id="row_107_113_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_113_" class="arrow" onclick="toggleFolder('107_113_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ProgramBuilder.html" target="_self">tvm::auto_scheduler::ProgramBuilder</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler [...]
-<tr id="row_107_113_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1LocalBuilder.html" target="_self">tvm::auto_scheduler::LocalBuilder</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1LocalBuilderNode.html" title="LocalBuilder use local CPU cores to build programs in p [...]
-<tr id="row_107_114_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ProgramMeasurer.html" target="_self">tvm::auto_scheduler::ProgramMeasurer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1ProgramMeasurerNode.html" title="Measurer that measures the time costs of tvm pro [...]
-<tr id="row_107_115_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_115_" class="arrow" onclick="toggleFolder('107_115_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ProgramRunner.html" target="_self">tvm::auto_scheduler::ProgramRunner</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1 [...]
-<tr id="row_107_115_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1LocalRunner.html" target="_self">tvm::auto_scheduler::LocalRunner</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1LocalRunnerNode.html" title="LocalRunner that uses local CPU/GPU to measure the time co [...]
-<tr id="row_107_115_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1RPCRunner.html" target="_self">tvm::auto_scheduler::RPCRunner</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1RPCRunnerNode.html" title="RPCRunner that uses RPC call to measures the time cost of progra [...]
-<tr id="row_107_116_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1RecordReader.html" target="_self">tvm::auto_scheduler::RecordReader</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1RecordReaderNode.html" title="Log reader to load step logs from a file. ">RecordReaderN [...]
-<tr id="row_107_117_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_117_" class="arrow" onclick="toggleFolder('107_117_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchCallback.html" target="_self">tvm::auto_scheduler::SearchCallback</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler [...]
-<tr id="row_107_117_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStates.html" target="_self">tvm::auto_scheduler::PreloadMeasuredStates</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStatesNode.html" title="Preload measured states from [...]
-<tr id="row_107_118_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicy.html" target="_self">tvm::auto_scheduler::SearchPolicy</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html" title="The base class of search policies. ">SearchPolicyNode</a> [...]
-<tr id="row_107_119_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchTask.html" target="_self">tvm::auto_scheduler::SearchTask</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1SearchTaskNode.html" title="The computation information and hardware parameters for a speci [...]
-<tr id="row_107_120_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1Stage.html" target="_self">tvm::auto_scheduler::Stage</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1StageNode.html" title="A op stage in the compute declaration. Similar to te::Stage in include/tvm/te/ [...]
-<tr id="row_107_121_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1State.html" target="_self">tvm::auto_scheduler::State</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1StateNode.html" title="A state in the search process. It consists of the current loop structure and a [...]
-<tr id="row_107_122_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_122_" class="arrow" onclick="toggleFolder('107_122_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1Step.html" target="_self">tvm::auto_scheduler::Step</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1StepNode.html" t [...]
-<tr id="row_107_122_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1AnnotationStep.html" target="_self">tvm::auto_scheduler::AnnotationStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1AnnotationStepNode.html" title="Annotation step that corresponds to vectorize, pa [...]
-<tr id="row_107_122_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1CacheReadStep.html" target="_self">tvm::auto_scheduler::CacheReadStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1CacheReadStepNode.html" title="Cache read step that corresponds to te::Schedule::ca [...]
-<tr id="row_107_122_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1CacheWriteStep.html" target="_self">tvm::auto_scheduler::CacheWriteStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1CacheWriteStepNode.html" title="Cache write step that corresponds to te::Schedule [...]
-<tr id="row_107_122_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeAtStep.html" target="_self">tvm::auto_scheduler::ComputeAtStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeAtStepNode.html" title="Compute at step that corresponds to te::Stage::compu [...]
-<tr id="row_107_122_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeInlineStep.html" target="_self">tvm::auto_scheduler::ComputeInlineStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeInlineStepNode.html" title="Compute inline step that corresponds to  [...]
-<tr id="row_107_122_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeRootStep.html" target="_self">tvm::auto_scheduler::ComputeRootStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeRootStepNode.html" title="Compute root step that corresponds to te::Stag [...]
-<tr id="row_107_122_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1FollowFusedSplitStep.html" target="_self">tvm::auto_scheduler::FollowFusedSplitStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1FollowFusedSplitStepNode.html" title="Similar to FollowSplitStep, but [...]
-<tr id="row_107_122_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1FollowSplitStep.html" target="_self">tvm::auto_scheduler::FollowSplitStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1FollowSplitStepNode.html" title="Similar to SplitStepNode, but uses split facto [...]
-<tr id="row_107_122_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1FuseStep.html" target="_self">tvm::auto_scheduler::FuseStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1FuseStepNode.html" title="Fuse step that corresponds to te::Stage::fuse. ">FuseStepNode</a> < [...]
-<tr id="row_107_122_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1PragmaStep.html" target="_self">tvm::auto_scheduler::PragmaStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1PragmaStepNode.html" title="Pragma step that corresponds to te::Stage::pragma. ">PragmaSt [...]
-<tr id="row_107_122_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ReorderStep.html" target="_self">tvm::auto_scheduler::ReorderStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1ReorderStepNode.html" title="Reorder step that corresponds to te::Stage::reorder. ">Re [...]
-<tr id="row_107_122_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1RfactorStep.html" target="_self">tvm::auto_scheduler::RfactorStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1RfactorStepNode.html" title="Reduction factor step that corresponds to te::Schedule::r [...]
-<tr id="row_107_122_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1SplitStep.html" target="_self">tvm::auto_scheduler::SplitStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1SplitStepNode.html" title="Split step that corresponds to te::Stage::split with additional [...]
-<tr id="row_107_122_13_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1StorageAlignStep.html" target="_self">tvm::auto_scheduler::StorageAlignStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1StorageAlignStepNode.html" title="Storage align step that corresponds to te: [...]
-<tr id="row_107_123_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1TuningOptions.html" target="_self">tvm::auto_scheduler::TuningOptions</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1TuningOptionsNode.html" title="Tuning and measurement options. ">TuningOptionsNode</a [...]
-<tr id="row_107_124_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_124_" class="arrow" onclick="toggleFolder('107_124_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1BaseExpr.html" target="_self">tvm::BaseExpr</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1BaseExprNode.html" title="Base type of all the expressions. "> [...]
-<tr id="row_107_124_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_107_124_0_" class="arrow" onclick="toggleFolder('107_124_0_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1PrimExpr.html" target="_self">tvm::PrimExpr</a></td><td class="desc">Reference to <a class="el" href="classtvm_1_1PrimExprNode.html" title="Base node of all primitive expressions [...]
-<tr id="row_107_124_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_107_124_0_0_" class="arrow" onclick="toggleFolder('107_124_0_0_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IterMapExpr.html" target="_self">tvm::arith::IterMapExpr</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IterMapExprNode.htm [...]
-<tr id="row_107_124_0_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IterSplitExpr.html" target="_self">tvm::arith::IterSplitExpr</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IterSplitExprNode.html" title="Split of an iterator. ">IterSplitExprNode</a> </td></tr>
-<tr id="row_107_124_0_0_1_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IterSumExpr.html" target="_self">tvm::arith::IterSumExpr</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IterSumExprNode.html" title="Fuse multiple iterators by summing them with scaling. ">IterSumExprNode</a> </td></tr>
-<tr id="row_107_124_0_1_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1FloatImm.html" target="_self">tvm::FloatImm</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1FloatImmNode.html" title="Constant floating point literals in the program. ">FloatImmNode</a> </td></tr>
-<tr id="row_107_124_0_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_107_124_0_2_" class="arrow" onclick="toggleFolder('107_124_0_2_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IntImm.html" target="_self">tvm::IntImm</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1IntImmNode.html" title="Constant integer literal [...]
-<tr id="row_107_124_0_2_0_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Bool.html" target="_self">tvm::Bool</a></td><td class="desc">Boolean constant </td></tr>
-<tr id="row_107_124_0_2_1_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Integer.html" target="_self">tvm::Integer</a></td><td class="desc">Container of constant int that adds more constructors </td></tr>
-<tr id="row_107_124_0_3_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Add.html" target="_self">tvm::tir::Add</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AddNode.html" title="a + b ">AddNode</a> </td></tr>
-<tr id="row_107_124_0_4_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1And.html" target="_self">tvm::tir::And</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AndNode.html" title="a &amp;&amp; b ">AndNode</a> </td></tr>
-<tr id="row_107_124_0_5_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Any.html" target="_self">tvm::tir::Any</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AnyNode.html" title="Any shape. ">AnyNode</a> </td></tr>
-<tr id="row_107_124_0_6_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Broadcast.html" target="_self">tvm::tir::Broadcast</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BroadcastNode.html" title="Create a vector where all the elements are value. ">BroadcastNode</a> </td></tr>
-<tr id="row_107_124_0_7_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferLoad.html" target="_self">tvm::tir::BufferLoad</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferLoadNode.html" title="Load value from the high dimension buffer. ">BufferLoadNode</a> </td></tr>
-<tr id="row_107_124_0_8_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Call.html" target="_self">tvm::tir::Call</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1CallNode.html" title="Call node. ">CallNode</a> </td></tr>
-<tr id="row_107_124_0_9_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Cast.html" target="_self">tvm::tir::Cast</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1CastNode.html" title="Cast value from one data type to another. ">CastNode</a> </td></tr>
-<tr id="row_107_124_0_10_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Div.html" target="_self">tvm::tir::Div</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1DivNode.html" title="a / b in the C semnatics. ">DivNode</a> </td></tr>
-<tr id="row_107_124_0_11_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1EQ.html" target="_self">tvm::tir::EQ</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1EQNode.html" title="a == b ">EQNode</a> </td></tr>
-<tr id="row_107_124_0_12_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FloorDiv.html" target="_self">tvm::tir::FloorDiv</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1FloorDivNode.html" title="Floor division, floor(a/b) ">FloorDivNode</a> </td></tr>
-<tr id="row_107_124_0_13_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FloorMod.html" target="_self">tvm::tir::FloorMod</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1FloorModNode.html" title="The remainder of the floordiv. ">FloorModNode</a> </td></tr>
-<tr id="row_107_124_0_14_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1GE.html" target="_self">tvm::tir::GE</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1GENode.html" title="a &gt;= b ">GENode</a> </td></tr>
-<tr id="row_107_124_0_15_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1GT.html" target="_self">tvm::tir::GT</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1GTNode.html" title="a &gt; b ">GTNode</a> </td></tr>
-<tr id="row_107_124_0_16_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LE.html" target="_self">tvm::tir::LE</a></td><td class="desc">Managed reference to <a class="el" href="structtvm_1_1tir_1_1LENode.html" title="a &lt;= b ">LENode</a> </td></tr>
-<tr id="row_107_124_0_17_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Let.html" target="_self">tvm::tir::Let</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LetNode.html" title="Let binding. Bind var to value then evaluate body. ">LetNode</a> </td></tr>
-<tr id="row_107_124_0_18_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Load.html" target="_self">tvm::tir::Load</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LoadNode.html" title="Load the value from buffer_var. ">LoadNode</a> </td></tr>
-<tr id="row_107_124_0_19_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LT.html" target="_self">tvm::tir::LT</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LTNode.html" title="a &lt; b ">LTNode</a> </td></tr>
-<tr id="row_107_124_0_20_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Max.html" target="_self">tvm::tir::Max</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1MaxNode.html" title="max(a, b) ">MaxNode</a> </td></tr>
-<tr id="row_107_124_0_21_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Min.html" target="_self">tvm::tir::Min</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1MinNode.html" title="min(a, b) ">MinNode</a> </td></tr>
-<tr id="row_107_124_0_22_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Mod.html" target="_self">tvm::tir::Mod</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ModNode.html" title="a % b in the C semnatics. ">ModNode</a> </td></tr>
-<tr id="row_107_124_0_23_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Mul.html" target="_self">tvm::tir::Mul</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1MulNode.html" title="a * b ">MulNode</a> </td></tr>
-<tr id="row_107_124_0_24_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1NE.html" target="_self">tvm::tir::NE</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1NENode.html" title="a != b ">NENode</a> </td></tr>
-<tr id="row_107_124_0_25_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Not.html" target="_self">tvm::tir::Not</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1NotNode.html" title="!a ">NotNode</a> </td></tr>
-<tr id="row_107_124_0_26_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Or.html" target="_self">tvm::tir::Or</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1OrNode.html" title="a || b ">OrNode</a> </td></tr>
-<tr id="row_107_124_0_27_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProducerLoad.html" target="_self">tvm::tir::ProducerLoad</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ProducerLoadNode.html" title="Load value from the result produced by the producer. ">ProducerLoadNode</a> </td></tr>
-<tr id="row_107_124_0_28_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Ramp.html" target="_self">tvm::tir::Ramp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1RampNode.html" title="Construct a vector with lanes elements where its i-th element equals base + i * stride. This is useful to const [...]
-<tr id="row_107_124_0_29_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Reduce.html" target="_self">tvm::tir::Reduce</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ReduceNode.html" title="Reduction operator operator. ">ReduceNode</a> </td></tr>
-<tr id="row_107_124_0_30_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Select.html" target="_self">tvm::tir::Select</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1SelectNode.html" title="return true_value if condition is true, otherwise return false_value. ">SelectNode</a> </td></tr>
-<tr id="row_107_124_0_31_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Shuffle.html" target="_self">tvm::tir::Shuffle</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ShuffleNode.html" title="Shuffle instruction. vec = concat(vectors) result = (vec[indices[0]], vec[indices[1]] ...">ShuffleNode [...]
-<tr id="row_107_124_0_32_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StringImm.html" target="_self">tvm::tir::StringImm</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1StringImmNode.html" title="String constants, only used in asserts. ">StringImmNode</a> </td></tr>
-<tr id="row_107_124_0_33_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Sub.html" target="_self">tvm::tir::Sub</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1SubNode.html" title="a - b ">SubNode</a> </td></tr>
-<tr id="row_107_124_0_34_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_107_124_0_34_" class="arrow" onclick="toggleFolder('107_124_0_34_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Var.html" target="_self">tvm::tir::Var</a></td><td class="desc">Named variable in TIR </td></tr>
-<tr id="row_107_124_0_34_0_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SizeVar.html" target="_self">tvm::tir::SizeVar</a></td><td class="desc">Named variable represents a tensor index size </td></tr>
-<tr id="row_107_124_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_107_124_1_" class="arrow" onclick="toggleFolder('107_124_1_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1RelayExpr.html" target="_self">tvm::RelayExpr</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1RelayExprNode.html" title="Base node of all non-primit [...]
-<tr id="row_107_124_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_107_124_1_0_" class="arrow" onclick="toggleFolder('107_124_1_0_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1BaseFunc.html" target="_self">tvm::BaseFunc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1BaseFuncNode.html" title="Base node of all functio [...]
-<tr id="row_107_124_1_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Function.html" target="_self">tvm::relay::Function</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1relay_1_1FunctionNode.html" title="Relay Function container. ">FunctionNode</a> </td></tr>
-<tr id="row_107_124_1_0_1_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1PrimFunc.html" target="_self">tvm::tir::PrimFunc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1PrimFuncNode.html" title="Primitive functions that contains TIR statements. ">PrimFuncNode</a> </td></tr>
-<tr id="row_107_124_1_1_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Constructor.html" target="_self">tvm::Constructor</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1ConstructorNode.html" title="ADT constructor. Constructors compare by pointer equality. ">ConstructorNode</a> </td></tr>
-<tr id="row_107_124_1_2_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GlobalVar.html" target="_self">tvm::GlobalVar</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1GlobalVarNode.html" title="Global variable that lives in the top-level module. ">GlobalVarNode</a> </td></tr>
-<tr id="row_107_124_1_3_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Op.html" target="_self">tvm::Op</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1OpNode.html" title="Primitive Op(builtin intrinsics) ">OpNode</a> </td></tr>
-<tr id="row_107_124_1_4_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Call.html" target="_self">tvm::relay::Call</a></td><td class="desc"></td></tr>
-<tr id="row_107_124_1_5_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Constant.html" target="_self">tvm::relay::Constant</a></td><td class="desc"></td></tr>
-<tr id="row_107_124_1_6_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1If.html" target="_self">tvm::relay::If</a></td><td class="desc"></td></tr>
-<tr id="row_107_124_1_7_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Let.html" target="_self">tvm::relay::Let</a></td><td class="desc"></td></tr>
-<tr id="row_107_124_1_8_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Match.html" target="_self">tvm::relay::Match</a></td><td class="desc"></td></tr>
-<tr id="row_107_124_1_9_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefCreate.html" target="_self">tvm::relay::RefCreate</a></td><td class="desc"></td></tr>
-<tr id="row_107_124_1_10_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefRead.html" target="_self">tvm::relay::RefRead</a></td><td class="desc"></td></tr>
-<tr id="row_107_124_1_11_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefWrite.html" target="_self">tvm::relay::RefWrite</a></td><td class="desc"></td></tr>
-<tr id="row_107_124_1_12_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TempExpr.html" target="_self">tvm::relay::TempExpr</a></td><td class="desc"></td></tr>
-<tr id="row_107_124_1_13_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Tuple.html" target="_self">tvm::relay::Tuple</a></td><td class="desc"></td></tr>
-<tr id="row_107_124_1_14_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItem.html" target="_self">tvm::relay::TupleGetItem</a></td><td class="desc"></td></tr>
-<tr id="row_107_124_1_15_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Var.html" target="_self">tvm::relay::Var</a></td><td class="desc"></td></tr>
-<tr id="row_107_125_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1CompilationConfig.html" target="_self">tvm::CompilationConfig</a></td><td class="desc">Managed reference class to <code><a class="el" href="classtvm_1_1CompilationConfig.html" title="Managed reference class to CompilationConfig. ">CompilationConfig</a></code> </td></tr>
-<tr id="row_107_126_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Diagnostic.html" target="_self">tvm::Diagnostic</a></td><td class="desc"></td></tr>
-<tr id="row_107_127_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DiagnosticContext.html" target="_self">tvm::DiagnosticContext</a></td><td class="desc"></td></tr>
-<tr id="row_107_128_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DiagnosticRenderer.html" target="_self">tvm::DiagnosticRenderer</a></td><td class="desc"></td></tr>
-<tr id="row_107_129_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1EnvFunc.html" target="_self">tvm::EnvFunc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1EnvFuncNode.html" title="A serializable function backed by TVM&#39;s global environment. ">EnvFuncNode</a> </td></tr>
-<tr id="row_107_130_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GenericFunc.html" target="_self">tvm::GenericFunc</a></td><td class="desc">Generic function that can be specialized on a per-target basis </td></tr>
-<tr id="row_107_131_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1instrument_1_1PassInstrument.html" target="_self">tvm::instrument::PassInstrument</a></td><td class="desc">Managed reference class for <a class="el" href="classtvm_1_1instrument_1_1PassInstrumentNode.html" title="PassInstrumentNode forms an instrument implementation. It  [...]
-<tr id="row_107_132_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IRModule.html" target="_self">tvm::IRModule</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1IRModuleNode.html" title="IRModule that holds functions and type definitions. ">IRModuleNode</a> </td></tr>
-<tr id="row_107_133_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1MemoryInfo.html" target="_self">tvm::MemoryInfo</a></td><td class="desc">Defines memory info </td></tr>
-<tr id="row_107_134_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1ApplyHistoryBest.html" target="_self">tvm::meta_schedule::ApplyHistoryBest</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1ApplyHistoryBestNode.html" title="An integration context that allows application o [...]
-<tr id="row_107_135_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_135_" class="arrow" onclick="toggleFolder('107_135_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1ArgInfo.html" target="_self">tvm::meta_schedule::ArgInfo</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1ArgInfoNode.h [...]
-<tr id="row_107_135_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1TensorInfo.html" target="_self">tvm::meta_schedule::TensorInfo</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1TensorInfoNode.html" title="The tensor argument information. ">TensorInfoNode</a> </td></tr>
-<tr id="row_107_136_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1Builder.html" target="_self">tvm::meta_schedule::Builder</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1BuilderNode.html" title="The abstract builder interface. ">BuilderNode</a> </td></tr>
-<tr id="row_107_137_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1BuilderInput.html" target="_self">tvm::meta_schedule::BuilderInput</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1BuilderInputNode.html" title="The builder&#39;s input, containing an IRModule and the targ [...]
-<tr id="row_107_138_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1BuilderResult.html" target="_self">tvm::meta_schedule::BuilderResult</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1BuilderResultNode.html" title="The builder&#39;s output, containing the artifact path or [...]
-<tr id="row_107_139_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1CostModel.html" target="_self">tvm::meta_schedule::CostModel</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1CostModelNode.html" title="Cost model. ">CostModelNode</a> </td></tr>
-<tr id="row_107_140_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1Database.html" target="_self">tvm::meta_schedule::Database</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1DatabaseNode.html">DatabaseNode</a> </td></tr>
-<tr id="row_107_141_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1ExtractedTask.html" target="_self">tvm::meta_schedule::ExtractedTask</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1ExtractedTaskNode.html" title="A tuning task extracted from the high-level IR. ">Extract [...]
-<tr id="row_107_142_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1FeatureExtractor.html" target="_self">tvm::meta_schedule::FeatureExtractor</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1FeatureExtractorNode.html" title="Extractor for features from measure candidates f [...]
-<tr id="row_107_143_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1MeasureCallback.html" target="_self">tvm::meta_schedule::MeasureCallback</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1MeasureCallbackNode.html" title="Rules to apply after measure results is available.  [...]
-<tr id="row_107_144_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1MeasureCandidate.html" target="_self">tvm::meta_schedule::MeasureCandidate</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1MeasureCandidateNode.html" title="The schedule (with input shapes) to be measured. [...]
-<tr id="row_107_145_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1Mutator.html" target="_self">tvm::meta_schedule::Mutator</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1MutatorNode.html" title="Mutator is designed to mutate the trace to explore the design space. ">Muta [...]
-<tr id="row_107_146_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1Postproc.html" target="_self">tvm::meta_schedule::Postproc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1PostprocNode.html" title="Rules to apply a postprocessor to a schedule. ">PostprocNode</a> </td></tr>
-<tr id="row_107_147_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1Runner.html" target="_self">tvm::meta_schedule::Runner</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1RunnerNode.html" title="The abstract runner interface. ">RunnerNode</a> </td></tr>
-<tr id="row_107_148_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1RunnerFuture.html" target="_self">tvm::meta_schedule::RunnerFuture</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1RunnerFutureNode.html" title="A class to asynchronously fetch runner&#39;s output. ">Runne [...]
-<tr id="row_107_149_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1RunnerInput.html" target="_self">tvm::meta_schedule::RunnerInput</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1RunnerInputNode.html" title="Runner&#39;s input containing path of artifact, type of device  [...]
-<tr id="row_107_150_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1RunnerResult.html" target="_self">tvm::meta_schedule::RunnerResult</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1RunnerResultNode.html" title="Runner&#39;s output containing measurement result of Measure [...]
-<tr id="row_107_151_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1ScheduleRule.html" target="_self">tvm::meta_schedule::ScheduleRule</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1ScheduleRuleNode.html" title="Rules to modify a block in a schedule. ">ScheduleRuleNode</a [...]
-<tr id="row_107_152_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1SearchStrategy.html" target="_self">tvm::meta_schedule::SearchStrategy</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1SearchStrategyNode.html" title="The search strategy for measure candidates generation. [...]
-<tr id="row_107_153_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1SpaceGenerator.html" target="_self">tvm::meta_schedule::SpaceGenerator</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1SpaceGeneratorNode.html" title="The abstract class for design space generation. ">Spac [...]
-<tr id="row_107_154_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1TaskScheduler.html" target="_self">tvm::meta_schedule::TaskScheduler</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1TaskSchedulerNode.html" title="The abstract interface of task schedulers. ">TaskSchedule [...]
-<tr id="row_107_155_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1TuneContext.html" target="_self">tvm::meta_schedule::TuneContext</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1TuneContextNode.html" title="The auto tuning context. ">TuneContextNode</a> </td></tr>
-<tr id="row_107_156_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1TuningRecord.html" target="_self">tvm::meta_schedule::TuningRecord</a></td><td class="desc">The managed reference of <a class="el" href="classtvm_1_1meta__schedule_1_1TuningRecordNode.html" title="The class of tuning records. ">TuningRecordNode</a> </td></tr>
-<tr id="row_107_157_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1Workload.html" target="_self">tvm::meta_schedule::Workload</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1WorkloadNode.html" title="A workload, i.e. an IRModule and its structural hash. ">WorkloadNode</a> [...]
-<tr id="row_107_158_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1parser_1_1Source.html" target="_self">tvm::parser::Source</a></td><td class="desc"></td></tr>
-<tr id="row_107_159_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1parser_1_1SourceMap.html" target="_self">tvm::parser::SourceMap</a></td><td class="desc"></td></tr>
-<tr id="row_107_160_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1PoolInfo.html" target="_self">tvm::PoolInfo</a></td><td class="desc"></td></tr>
-<tr id="row_107_161_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Range.html" target="_self">tvm::Range</a></td><td class="desc"><a class="el" href="classtvm_1_1Range.html" title="Range constainer. ">Range</a> constainer </td></tr>
-<tr id="row_107_162_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Clause.html" target="_self">tvm::relay::Clause</a></td><td class="desc"></td></tr>
-<tr id="row_107_163_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ConstructorValue.html" target="_self">tvm::relay::ConstructorValue</a></td><td class="desc"></td></tr>
-<tr id="row_107_164_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_164_" class="arrow" onclick="toggleFolder('107_164_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPattern.html" target="_self">tvm::relay::DFPattern</a></td><td class="desc">Managed reference to dataflow patterns </td></tr>
-<tr id="row_107_164_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1AltPattern.html" target="_self">tvm::relay::AltPattern</a></td><td class="desc">A pattern which matches either of two patterns </td></tr>
-<tr id="row_107_164_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1AttrPattern.html" target="_self">tvm::relay::AttrPattern</a></td><td class="desc">A pattern which matches attributes in another pattern </td></tr>
-<tr id="row_107_164_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1CallPattern.html" target="_self">tvm::relay::CallPattern</a></td><td class="desc"></td></tr>
-<tr id="row_107_164_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ConstantPattern.html" target="_self">tvm::relay::ConstantPattern</a></td><td class="desc"></td></tr>
-<tr id="row_107_164_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DataTypePattern.html" target="_self">tvm::relay::DataTypePattern</a></td><td class="desc">A pattern which matches a type in another pattern </td></tr>
-<tr id="row_107_164_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DominatorPattern.html" target="_self">tvm::relay::DominatorPattern</a></td><td class="desc">A pattern which matches a variable length dominator path </td></tr>
-<tr id="row_107_164_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprPattern.html" target="_self">tvm::relay::ExprPattern</a></td><td class="desc">A pattern which matches a literal expression </td></tr>
-<tr id="row_107_164_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1FunctionPattern.html" target="_self">tvm::relay::FunctionPattern</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1relay_1_1FunctionNode.html" title="Relay Function container. ">FunctionNode</a> </td></tr>
-<tr id="row_107_164_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1IfPattern.html" target="_self">tvm::relay::IfPattern</a></td><td class="desc"></td></tr>
-<tr id="row_107_164_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1LetPattern.html" target="_self">tvm::relay::LetPattern</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Let.html">Let</a> binding that binds a local var </td></tr>
-<tr id="row_107_164_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ShapePattern.html" target="_self">tvm::relay::ShapePattern</a></td><td class="desc">A pattern which matches a type in another pattern </td></tr>
-<tr id="row_107_164_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItemPattern.html" target="_self">tvm::relay::TupleGetItemPattern</a></td><td class="desc"></td></tr>
-<tr id="row_107_164_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TuplePattern.html" target="_self">tvm::relay::TuplePattern</a></td><td class="desc"></td></tr>
-<tr id="row_107_164_13_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TypePattern.html" target="_self">tvm::relay::TypePattern</a></td><td class="desc">A pattern which matches a type in another pattern </td></tr>
-<tr id="row_107_164_14_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1VarPattern.html" target="_self">tvm::relay::VarPattern</a></td><td class="desc"></td></tr>
-<tr id="row_107_164_15_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1WildcardPattern.html" target="_self">tvm::relay::WildcardPattern</a></td><td class="desc">A pattern which matches anything </td></tr>
-<tr id="row_107_165_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternCallback.html" target="_self">tvm::relay::DFPatternCallback</a></td><td class="desc">Managed reference to dataflow pattern callbacks </td></tr>
-<tr id="row_107_166_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Executor.html" target="_self">tvm::relay::Executor</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1relay_1_1ExecutorNode.html" title="Executor information. ">ExecutorNode</a> </td></tr>
-<tr id="row_107_167_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Id.html" target="_self">tvm::relay::Id</a></td><td class="desc"></td></tr>
-<tr id="row_107_168_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpImplementation.html" target="_self">tvm::relay::OpImplementation</a></td><td class="desc">Operator implementation class </td></tr>
-<tr id="row_107_169_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpSpecialization.html" target="_self">tvm::relay::OpSpecialization</a></td><td class="desc">Operator specialization class </td></tr>
-<tr id="row_107_170_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpStrategy.html" target="_self">tvm::relay::OpStrategy</a></td><td class="desc">Operator strategy class </td></tr>
-<tr id="row_107_171_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_171_" class="arrow" onclick="toggleFolder('107_171_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Pattern.html" target="_self">tvm::relay::Pattern</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT mat [...]
-<tr id="row_107_171_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternConstructor.html" target="_self">tvm::relay::PatternConstructor</a></td><td class="desc"></td></tr>
-<tr id="row_107_171_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternTuple.html" target="_self">tvm::relay::PatternTuple</a></td><td class="desc"></td></tr>
-<tr id="row_107_171_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternVar.html" target="_self">tvm::relay::PatternVar</a></td><td class="desc"></td></tr>
-<tr id="row_107_171_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternWildcard.html" target="_self">tvm::relay::PatternWildcard</a></td><td class="desc"></td></tr>
-<tr id="row_107_172_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RecClosure.html" target="_self">tvm::relay::RecClosure</a></td><td class="desc"></td></tr>
-<tr id="row_107_173_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefValue.html" target="_self">tvm::relay::RefValue</a></td><td class="desc"></td></tr>
-<tr id="row_107_174_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Runtime.html" target="_self">tvm::relay::Runtime</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1relay_1_1RuntimeNode.html" title="Runtime information. ">RuntimeNode</a> </td></tr>
-<tr id="row_107_175_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ADT.html" target="_self">tvm::runtime::ADT</a></td><td class="desc">Reference to algebraic data type objects </td></tr>
-<tr id="row_107_176_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Array.html" target="_self">tvm::runtime::Array&lt; T, typename &gt;</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Array.html" title="Array, container representing a contiguous sequence of ObjectRefs. ">Array</a>, container representing a  [...]
-<tr id="row_107_177_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_177_" class="arrow" onclick="toggleFolder('107_177_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Closure.html" target="_self">tvm::runtime::Closure</a></td><td class="desc">Reference to closure </td></tr>
-<tr id="row_107_177_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1InterpreterClosure.html" target="_self">tvm::relay::InterpreterClosure</a></td><td class="desc"></td></tr>
-<tr id="row_107_177_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1vm_1_1VMClosure.html" target="_self">tvm::runtime::vm::VMClosure</a></td><td class="desc">Reference to closure </td></tr>
-<tr id="row_107_178_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; K, V, typename, typename &gt;</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Map.html" title="Map container of NodeRef-&gt;NodeRef in DSL graph. Map implements copy on write semantics, which m [...]
-<tr id="row_107_179_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_179_" class="arrow" onclick="toggleFolder('107_179_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1metadata_1_1MetadataBase.html" target="_self">tvm::runtime::metadata::MetadataBase</a></td><td class="desc">Reference class for the common <a class="el" href="classtvm_1_1ru [...]
-<tr id="row_107_179_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1metadata_1_1MetadataArray.html" target="_self">tvm::runtime::metadata::MetadataArray</a></td><td class="desc">Reference class for <a class="el" href="classtvm_1_1runtime_1_1metadata_1_1MetadataArray.html" title="Reference class for MetadataArray. ">MetadataA [...]
-<tr id="row_107_180_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Module.html" target="_self">tvm::runtime::Module</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Module.html" title="Module container of TVM. ">Module</a> container of TVM </td></tr>
-<tr id="row_107_181_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1NDArray.html" target="_self">tvm::runtime::NDArray</a></td><td class="desc">Managed <a class="el" href="classtvm_1_1runtime_1_1NDArray.html" title="Managed NDArray. The array is backed by reference counted blocks. ">NDArray</a>. The array is backed by referenc [...]
-<tr id="row_107_182_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; T &gt;</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Optional.html" title="Optional container that to represent to a Nullable variant of T. ">Optional</a> container that to represen [...]
-<tr id="row_107_183_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1PackedFunc.html" target="_self">tvm::runtime::PackedFunc</a></td><td class="desc">Packed function is a type-erased function. The arguments are passed by packed format </td></tr>
-<tr id="row_107_184_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1profiling_1_1DeviceWrapper.html" target="_self">tvm::runtime::profiling::DeviceWrapper</a></td><td class="desc">Wrapper for <code>Device</code> </td></tr>
-<tr id="row_107_185_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1profiling_1_1MetricCollector.html" target="_self">tvm::runtime::profiling::MetricCollector</a></td><td class="desc">Wrapper for <code><a class="el" href="classtvm_1_1runtime_1_1profiling_1_1MetricCollectorNode.html" title="Interface for user defined profiling  [...]
-<tr id="row_107_186_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1profiling_1_1Report.html" target="_self">tvm::runtime::profiling::Report</a></td><td class="desc"></td></tr>
-<tr id="row_107_187_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ShapeTuple.html" target="_self">tvm::runtime::ShapeTuple</a></td><td class="desc">Reference to shape tuple objects </td></tr>
-<tr id="row_107_188_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1String.html" target="_self">tvm::runtime::String</a></td><td class="desc">Reference to string objects </td></tr>
-<tr id="row_107_189_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Timer.html" target="_self">tvm::runtime::Timer</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Timer.html" title="Timer for a specific device. ">Timer</a> for a specific device </td></tr>
-<tr id="row_107_190_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1vm_1_1Storage.html" target="_self">tvm::runtime::vm::Storage</a></td><td class="desc">Reference to storage </td></tr>
-<tr id="row_107_191_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1SourceName.html" target="_self">tvm::SourceName</a></td><td class="desc">The source name of a file span </td></tr>
-<tr id="row_107_192_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Span.html" target="_self">tvm::Span</a></td><td class="desc"></td></tr>
-<tr id="row_107_193_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Target.html" target="_self">tvm::Target</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1TargetNode.html" title="Compilation target. ">TargetNode</a> </td></tr>
-<tr id="row_107_194_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TargetKind.html" target="_self">tvm::TargetKind</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1TargetKindNode.html" title="Target kind, specifies the kind of the target. ">TargetKindNode</a> </td></tr>
-<tr id="row_107_195_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TargetTag.html" target="_self">tvm::TargetTag</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1TargetTagNode.html" title="A target tag. ">TargetTagNode</a> </td></tr>
-<tr id="row_107_196_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1IterVarAttr.html" target="_self">tvm::te::IterVarAttr</a></td><td class="desc">Additional scheduable attributes about IterVar </td></tr>
-<tr id="row_107_197_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_197_" class="arrow" onclick="toggleFolder('107_197_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1IterVarRelation.html" target="_self">tvm::te::IterVarRelation</a></td><td class="desc">The schedule relation between IterVars can be <a class="el" href="classtvm_1_1te_1_1Split.h [...]
-<tr id="row_107_197_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Fuse.html" target="_self">tvm::te::Fuse</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1FuseNode.html" title="Fuse two domains into one domain. ">FuseNode</a> </td></tr>
-<tr id="row_107_197_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Rebase.html" target="_self">tvm::te::Rebase</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1RebaseNode.html" title="Rebase the iteration to make min to be 0. This is useful to normalize the Schedule to make every leaf...">Rebas [...]
-<tr id="row_107_197_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Singleton.html" target="_self">tvm::te::Singleton</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1SingletonNode.html" title="Singleton iterator [0, 1) ">SingletonNode</a> </td></tr>
-<tr id="row_107_197_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Split.html" target="_self">tvm::te::Split</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1SplitNode.html" title="Split the parent domain into product of outer and iter. ">SplitNode</a> </td></tr>
-<tr id="row_107_197_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Transform.html" target="_self">tvm::te::Transform</a></td><td class="desc"></td></tr>
-<tr id="row_107_198_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_198_" class="arrow" onclick="toggleFolder('107_198_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Operation.html" target="_self">tvm::te::Operation</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Operation.html" title="Operation that produces tensors. ">Operati [...]
-<tr id="row_107_198_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ComputeOp.html" target="_self">tvm::te::ComputeOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1ComputeOpNode.html" title="A Compute op that compute a tensor on certain domain. ">ComputeOpNode</a> </td></tr>
-<tr id="row_107_198_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ExternOp.html" target="_self">tvm::te::ExternOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1ExternOpNode.html" title="External computation that cannot be splitted. ">ExternOpNode</a> </td></tr>
-<tr id="row_107_198_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1HybridOp.html" target="_self">tvm::te::HybridOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1HybridOpNode.html" title="A computation operator that generated by hybrid script. ">HybridOpNode</a> </td></tr>
-<tr id="row_107_198_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1PlaceholderOp.html" target="_self">tvm::te::PlaceholderOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1PlaceholderOpNode.html" title="A placeholder op represents an input placeholder. ">PlaceholderOpNode</a> </td></tr>
-<tr id="row_107_198_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ScanOp.html" target="_self">tvm::te::ScanOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1ScanOpNode.html" title="Symbolic scan. ">ScanOpNode</a> </td></tr>
-<tr id="row_107_198_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorComputeOp.html" target="_self">tvm::te::TensorComputeOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1TensorComputeOpNode.html" title="A TenorCompute op that compute a tensor with an tensor intrinsic. ">TensorComputeOpN [...]
-<tr id="row_107_199_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Schedule.html" target="_self">tvm::te::Schedule</a></td><td class="desc">Global schedule container For operations and all the operations they depend on. The schedule per <a class="el" href="classtvm_1_1te_1_1Operation.html" title="Operation that produces tensors. " [...]
-<tr id="row_107_200_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1SpecializedCondition.html" target="_self">tvm::te::SpecializedCondition</a></td><td class="desc">Specialized condition to enable op specialization </td></tr>
-<tr id="row_107_201_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Stage.html" target="_self">tvm::te::Stage</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Stage.html" title="Stage, contains scheduling for a stage of computation. ">Stage</a>, contains scheduling for a stage of computation </td></tr>
-<tr id="row_107_202_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorIntrin.html" target="_self">tvm::te::TensorIntrin</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1TensorIntrinNode.html" title="Node to represent a Tensor intrinsic operator. ">TensorIntrinNode</a> </td></tr>
-<tr id="row_107_203_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorIntrinCall.html" target="_self">tvm::te::TensorIntrinCall</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1TensorIntrinCallNode.html">TensorIntrinCallNode</a> </td></tr>
-<tr id="row_107_204_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BijectiveLayout.html" target="_self">tvm::tir::BijectiveLayout</a></td><td class="desc">Bijective function mapping for data layout transformation. Given two <a class="el" href="classtvm_1_1tir_1_1Layout.html" title="Managed reference to LayoutNode. ">Layout</a>, < [...]
-<tr id="row_107_205_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BlockRV.html" target="_self">tvm::tir::BlockRV</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BlockRVNode.html" title="A random variable that evaluates to a TensorIR block. ">BlockRVNode</a> </td></tr>
-<tr id="row_107_206_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BlockScope.html" target="_self">tvm::tir::BlockScope</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BlockScopeNode.html" title="An object with 1-to-1 correspondence with each block reference in the sref tree. This data structu [...]
-<tr id="row_107_207_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Buffer.html" target="_self">tvm::tir::Buffer</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Buffer.html" title="Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types...">Buffer</a> is a symbolic n-darray structur [...]
-<tr id="row_107_208_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferRegion.html" target="_self">tvm::tir::BufferRegion</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferRegionNode.html" title="Representing the region of multi-dimensional buffer access. ">BufferRegionNode</a> </td></tr>
-<tr id="row_107_209_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1CommReducer.html" target="_self">tvm::tir::CommReducer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1CommReducerNode.html" title="A commutative reducer node to represent a commutative binary operator with identity element..." [...]
-<tr id="row_107_210_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_210_" class="arrow" onclick="toggleFolder('107_210_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1DataProducer.html" target="_self">tvm::tir::DataProducer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html" title="Base  [...]
-<tr id="row_107_210_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Tensor.html" target="_self">tvm::te::Tensor</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible input, or intermediate computation result. ">Tensor</a> structure representing a possible input [...]
-<tr id="row_107_211_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Dependency.html" target="_self">tvm::tir::Dependency</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1DependencyNode.html" title="A tuple (src, dst, kind) representing certain types of dependency. For example, (A, B, kRAW) means [...]
-<tr id="row_107_212_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IndexMap.html" target="_self">tvm::tir::IndexMap</a></td><td class="desc"></td></tr>
-<tr id="row_107_213_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Instruction.html" target="_self">tvm::tir::Instruction</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1InstructionNode.html" title="Schedule instructions each corresponds to a schedule primitive. ">InstructionNode</a> </td></tr>
-<tr id="row_107_214_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1InstructionKind.html" target="_self">tvm::tir::InstructionKind</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1InstructionKindNode.html" title="Kind of an instruction, e.g. Split, Reorder, etc. Besides the name, every kind of i [...]
-<tr id="row_107_215_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IterVar.html" target="_self">tvm::tir::IterVar</a></td><td class="desc">Iteration Variable, represents an iteration over an integer interval </td></tr>
-<tr id="row_107_216_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Layout.html" target="_self">tvm::tir::Layout</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LayoutNode.html" title="Layout is to describe how data is organized within an N-dimention tensor. It is composed of upper cas...">Layo [...]
-<tr id="row_107_217_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LoopRV.html" target="_self">tvm::tir::LoopRV</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LoopRVNode.html" title="A random variable that evaluates to a TensorIR for loop. ">LoopRVNode</a> </td></tr>
-<tr id="row_107_218_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1MatchBufferRegion.html" target="_self">tvm::tir::MatchBufferRegion</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1MatchBufferRegionNode.html" title="Match introduces a constraint that the source buffer region can be remapped t [...]
-<tr id="row_107_219_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Schedule.html" target="_self">tvm::tir::Schedule</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ScheduleNode.html" title="The user-facing schedule class. ">ScheduleNode</a> </td></tr>
-<tr id="row_107_220_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ScheduleState.html" target="_self">tvm::tir::ScheduleState</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ScheduleStateNode.html" title="The state of scheduling, which exposes a Replace method as the primary interface for all  [...]
-<tr id="row_107_221_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_221_" class="arrow" onclick="toggleFolder('107_221_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Stmt.html" target="_self">tvm::tir::Stmt</a></td><td class="desc">Container of all statements </td></tr>
-<tr id="row_107_221_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Allocate.html" target="_self">tvm::tir::Allocate</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AllocateNode.html" title="Allocate a buffer that can be used in body. ">AllocateNode</a> </td></tr>
-<tr id="row_107_221_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AllocateConst.html" target="_self">tvm::tir::AllocateConst</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AllocateConstNode.html" title="Allocate a buffer that can be used in body. ">AllocateConstNode</a> </td></tr>
-<tr id="row_107_221_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AssertStmt.html" target="_self">tvm::tir::AssertStmt</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AssertStmtNode.html" title="Assert condition, if an error occurs, return the error message. ">AssertStmtNode</a> </td></tr>
-<tr id="row_107_221_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AttrStmt.html" target="_self">tvm::tir::AttrStmt</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AttrStmtNode.html" title="Define certain auxiliary attribute for the body to be a symbolic value. This provide auxiliary inform. [...]
-<tr id="row_107_221_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Block.html" target="_self">tvm::tir::Block</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BlockNode.html" title="A block is a basic schedule unit in TIR. ">BlockNode</a> </td></tr>
-<tr id="row_107_221_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BlockRealize.html" target="_self">tvm::tir::BlockRealize</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BlockRealizeNode.html" title="A block realization node represents execution of the block at the binding values. ...">Blo [...]
-<tr id="row_107_221_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferRealize.html" target="_self">tvm::tir::BufferRealize</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html" title="Annotate the region where the buffer need to be read and write in the body. We only nee [...]
-<tr id="row_107_221_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferStore.html" target="_self">tvm::tir::BufferStore</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferStoreNode.html" title="Store value to the high dimension buffer. ">BufferStoreNode</a> </td></tr>
-<tr id="row_107_221_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Evaluate.html" target="_self">tvm::tir::Evaluate</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html" title="Evaluates an expression. This is mostly used for putting a Call node into Stmt. ">EvaluateNode</a> </td></tr>
-<tr id="row_107_221_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1For.html" target="_self">tvm::tir::For</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ForNode.html" title="A for loop, with poissible type annotations. ">ForNode</a> </td></tr>
-<tr id="row_107_221_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IfThenElse.html" target="_self">tvm::tir::IfThenElse</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1IfThenElseNode.html" title="IfThenElse statment. ">IfThenElseNode</a> </td></tr>
-<tr id="row_107_221_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LetStmt.html" target="_self">tvm::tir::LetStmt</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LetStmtNode.html" title="Let binding, bind var to value, then run body. ">LetStmtNode</a> </td></tr>
-<tr id="row_107_221_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Prefetch.html" target="_self">tvm::tir::Prefetch</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html" title="A prefetch hint for a buffer. ">PrefetchNode</a> </td></tr>
-<tr id="row_107_221_13_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProducerRealize.html" target="_self">tvm::tir::ProducerRealize</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ProducerRealizeNode.html" title="Annotate the bounds where the data produced by the producer need to be written a [...]
-<tr id="row_107_221_14_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProducerStore.html" target="_self">tvm::tir::ProducerStore</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ProducerStoreNode.html" title="Store value into mult-dimensional array that will be read by the consumer of the produ [...]
-<tr id="row_107_221_15_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SeqStmt.html" target="_self">tvm::tir::SeqStmt</a></td><td class="desc">Sequence statement </td></tr>
-<tr id="row_107_221_16_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Store.html" target="_self">tvm::tir::Store</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1StoreNode.html" title="Store value to the buffer. ">StoreNode</a> </td></tr>
-<tr id="row_107_221_17_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1While.html" target="_self">tvm::tir::While</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1WhileNode.html" title="A While loop. ">WhileNode</a> </td></tr>
-<tr id="row_107_222_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtSRef.html" target="_self">tvm::tir::StmtSRef</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1StmtSRefNode.html" title="An object that refers to schedulable elements (block/for-loop) in TensorIR, aka &quot;sref&quot;. ">Stmt [...]
-<tr id="row_107_223_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1TensorIntrin.html" target="_self">tvm::tir::TensorIntrin</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1TensorIntrinNode.html" title="Tensor intrinsics for tensorization. ">TensorIntrinNode</a> </td></tr>
-<tr id="row_107_224_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Trace.html" target="_self">tvm::tir::Trace</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1TraceNode.html" title="An execution trace of a scheduling program. ">TraceNode</a> </td></tr>
-<tr id="row_107_225_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1usmp_1_1AllocatedPoolInfo.html" target="_self">tvm::tir::usmp::AllocatedPoolInfo</a></td><td class="desc"></td></tr>
-<tr id="row_107_226_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1usmp_1_1BufferInfo.html" target="_self">tvm::tir::usmp::BufferInfo</a></td><td class="desc"></td></tr>
-<tr id="row_107_227_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1usmp_1_1BufferInfoAnalysis.html" target="_self">tvm::tir::usmp::BufferInfoAnalysis</a></td><td class="desc"></td></tr>
-<tr id="row_107_228_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1usmp_1_1PoolAllocation.html" target="_self">tvm::tir::usmp::PoolAllocation</a></td><td class="desc"></td></tr>
-<tr id="row_107_229_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_229_" class="arrow" onclick="toggleFolder('107_229_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1transform_1_1Pass.html" target="_self">tvm::transform::Pass</a></td><td class="desc"></td></tr>
-<tr id="row_107_229_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1transform_1_1Sequential.html" target="_self">tvm::transform::Sequential</a></td><td class="desc"></td></tr>
-<tr id="row_107_230_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1transform_1_1PassContext.html" target="_self">tvm::transform::PassContext</a></td><td class="desc"><a class="el" href="classtvm_1_1transform_1_1PassContext.html" title="PassContext that is used to configure the pass behavior. ">PassContext</a> that is used to configure t [...]
-<tr id="row_107_231_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1transform_1_1PassInfo.html" target="_self">tvm::transform::PassInfo</a></td><td class="desc">Managed reference class for <a class="el" href="classtvm_1_1transform_1_1PassInfoNode.html" title="Meta data that will be used to help optimization and analysis. ">PassInfoNode</ [...]
-<tr id="row_107_232_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_232_" class="arrow" onclick="toggleFolder('107_232_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Type.html" target="_self">tvm::Type</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeNode.html" title="Type is the base type of all types. ">TypeNode</ [...]
-<tr id="row_107_232_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1BaseTensorType.html" target="_self">tvm::BaseTensorType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1BaseTensorTypeNode.html" title="Base of all Tensor types This container can hold TensorType or GenericTensorType. ...">BaseTensorTypeNo [...]
-<tr id="row_107_232_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1FuncType.html" target="_self">tvm::FuncType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1FuncTypeNode.html" title="Function type. ">FuncTypeNode</a> </td></tr>
-<tr id="row_107_232_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GlobalTypeVar.html" target="_self">tvm::GlobalTypeVar</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1GlobalTypeVarNode.html" title="A global type variable that is used for defining new types or type aliases. ">GlobalTypeVarNode</a> </td></tr>
-<tr id="row_107_232_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IncompleteType.html" target="_self">tvm::IncompleteType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1IncompleteTypeNode.html" title="Intermediate values that is used to indicate incomplete type during type inference. ">IncompleteTypeNod [...]
-<tr id="row_107_232_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1PointerType.html" target="_self">tvm::PointerType</a></td><td class="desc"></td></tr>
-<tr id="row_107_232_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1PrimType.html" target="_self">tvm::PrimType</a></td><td class="desc"></td></tr>
-<tr id="row_107_232_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1RelayRefType.html" target="_self">tvm::RelayRefType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1RelayRefTypeNode.html" title="Reference Type High-level Relay IR. ">RelayRefTypeNode</a> </td></tr>
-<tr id="row_107_232_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TensorType.html" target="_self">tvm::TensorType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TensorTypeNode.html" title="This is the most commonly used type in relay. TensorType have a fixed dimension, data type...">TensorTypeNode</a> < [...]
-<tr id="row_107_232_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TupleType.html" target="_self">tvm::TupleType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TupleTypeNode.html" title="The type of tuple values. ">TupleTypeNode</a> </td></tr>
-<tr id="row_107_232_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeCall.html" target="_self">tvm::TypeCall</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeCallNode.html" title="Type function application. ">TypeCallNode</a> </td></tr>
-<tr id="row_107_232_10_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_107_232_10_" class="arrow" onclick="toggleFolder('107_232_10_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeConstraint.html" target="_self">tvm::TypeConstraint</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeConstraintNode.html" title="Potential [...]
-<tr id="row_107_232_10_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeRelation.html" target="_self">tvm::TypeRelation</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeRelationNode.html" title="User defined type relation, it is an input-output relation on types. ">TypeRelationNode</a> </td></tr>
-<tr id="row_107_232_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeData.html" target="_self">tvm::TypeData</a></td><td class="desc">Stores all data for an Algebraic Data <a class="el" href="classtvm_1_1Type.html" title="Managed reference to TypeNode. ">Type</a> (ADT) </td></tr>
-<tr id="row_107_232_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeVar.html" target="_self">tvm::TypeVar</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeVarNode.html" title="Type parameter in functions. ">TypeVarNode</a> </td></tr>
-<tr id="row_107_233_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html" target="_self">tvm::TypedEnvFunc&lt; R(Args...)&gt;</a></td><td class="desc">A typed version of <a class="el" href="classtvm_1_1EnvFunc.html" title="Managed reference to EnvFuncNode. ">EnvFunc</a>. It is backed by a GlobalFuncNo [...]
-<tr id="row_107_234_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeReporter.html" target="_self">tvm::TypeReporter</a></td><td class="desc">Container class of <a class="el" href="classtvm_1_1TypeReporter.html" title="Container class of TypeReporter. ">TypeReporter</a> </td></tr>
-<tr id="row_107_235_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1VirtualDevice.html" target="_self">tvm::VirtualDevice</a></td><td class="desc">Managed reference class to <code><a class="el" href="classtvm_1_1VirtualDeviceNode.html" title="Describes at compile time the constraints on where data is to be stored at runtime down to the ( [...]
-<tr id="row_107_236_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1WorkspaceMemoryPools.html" target="_self">tvm::WorkspaceMemoryPools</a></td><td class="desc"></td></tr>
+<tr id="row_107_53_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::GlobalTypeVar, tvm::TypeData &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_54_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::GlobalVar, tvm::BaseFunc &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_55_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::meta_schedule::Mutator, tvm::FloatImm &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_56_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::relay::Var, tvm::runtime::ObjectRef &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_57_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::runtime::String, tvm::GlobalTypeVar &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_58_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::runtime::String, tvm::GlobalVar &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_59_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::runtime::String, tvm::runtime::Map&lt; tvm::runtime::String, tvm::runtime::ObjectRef &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_60_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::runtime::String, tvm::runtime::ObjectRef &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_61_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::SourceName, tvm::parser::Source &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_62_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::Target, tvm::Integer &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_63_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::Target, tvm::runtime::String &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_64_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::te::Operation, tvm::te::Stage &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_65_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::tir::Instruction, tvm::runtime::ObjectRef &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_66_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::tir::IterVar, tvm::te::IterVarAttr &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_67_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::tir::usmp::BufferInfo, tvm::tir::Stmt &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_68_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::tir::Var, tvm::PrimExpr &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_69_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::tir::Var, tvm::Range &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_70_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; tvm::tir::Var, tvm::tir::Buffer &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_71_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::DiagnosticContext &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_72_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::FloatImm &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_73_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::Integer &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_74_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::IRModule &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_75_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::meta_schedule::CostModel &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_76_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::meta_schedule::SearchStrategy &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_77_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::meta_schedule::SpaceGenerator &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_78_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::PrimExpr &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_79_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Array&lt; tvm::auto_scheduler::MeasureCallback &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_80_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Array&lt; tvm::FloatImm &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_81_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Array&lt; tvm::Integer &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_82_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Array&lt; tvm::meta_schedule::BuilderResult &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_83_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Array&lt; tvm::meta_schedule::MeasureCandidate &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_84_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Array&lt; tvm::meta_schedule::RunnerFuture &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_85_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::Map&lt; tvm::runtime::String, tvm::runtime::NDArray &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_86_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::NDArray &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_87_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::ObjectRef &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_88_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::runtime::String &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_89_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::Target &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_90_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::tir::IterVar &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_91_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; tvm::tir::Stmt &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_107_92_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_92_" class="arrow" onclick="toggleFolder('107_92_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1AffineType.html" target="_self">tvm::AffineType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1AffineTypeNode.html" title="AffineType representation. ">Affi [...]
+<tr id="row_107_92_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TensorAffineType.html" target="_self">tvm::TensorAffineType</a></td><td class="desc">Managed reference to AffineTypes </td></tr>
+<tr id="row_107_92_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TupleAffineType.html" target="_self">tvm::TupleAffineType</a></td><td class="desc">Managed reference to TupleAffineTypes </td></tr>
+<tr id="row_107_93_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1ConstIntBound.html" target="_self">tvm::arith::ConstIntBound</a></td><td class="desc">Reference class to <a class="el" href="classtvm_1_1arith_1_1ConstIntBoundNode.html" title="Constant integer up and lower bound(inclusive). Useful for value bound analysis. ">Con [...]
+<tr id="row_107_94_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IntConstraints.html" target="_self">tvm::arith::IntConstraints</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IntConstraintsNode.html" title="Represent integer constrains including (integer) variables, their ranges and the  [...]
+<tr id="row_107_95_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IntConstraintsTransform.html" target="_self">tvm::arith::IntConstraintsTransform</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IntConstraintsTransformNode.html" title="We can have different set of variables to represent th [...]
+<tr id="row_107_96_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IntGroupBounds.html" target="_self">tvm::arith::IntGroupBounds</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IntGroupBoundsNode.html" title="Represent integer grouped bounds which are classified into lower bounds (inclusiv [...]
+<tr id="row_107_97_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IntSet.html" target="_self">tvm::arith::IntSet</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IntSetNode.html" title="Base class of all Integer set containers. represent a set of integers in one dimension. ">IntSetNode</a>  [...]
+<tr id="row_107_98_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IterMark.html" target="_self">tvm::arith::IterMark</a></td><td class="desc">Managed reference to IterMarkExprNode </td></tr>
+<tr id="row_107_99_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1ModularSet.html" target="_self">tvm::arith::ModularSet</a></td><td class="desc">Reference of <a class="el" href="classtvm_1_1arith_1_1ModularSetNode.html" title="Range of a linear integer function. Use to do specify the possible index values. ">ModularSetNode</a> [...]
+<tr id="row_107_100_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1AttrFieldInfo.html" target="_self">tvm::AttrFieldInfo</a></td><td class="desc"><a class="el" href="classtvm_1_1AttrFieldInfo.html" title="AttrFieldInfo. ">AttrFieldInfo</a> </td></tr>
+<tr id="row_107_101_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_101_" class="arrow" onclick="toggleFolder('107_101_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Attrs.html" target="_self">tvm::Attrs</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1BaseAttrsNode.html" title="Base class of all attribute class. ">Base [...]
+<tr id="row_107_101_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DictAttrs.html" target="_self">tvm::DictAttrs</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1DictAttrsNode.html" title="Specialized attribute type that is backed by a map. The DictAttrsNode implements the Attrs behavior...">DictAttrsNode< [...]
+<tr id="row_107_102_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1AccessAnalyzer.html" target="_self">tvm::auto_scheduler::AccessAnalyzer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1AccessAnalyzerNode.html" title="Static analyzer for a ComputeDAG. ">AccessAnalyzerN [...]
+<tr id="row_107_103_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1AttachMap.html" target="_self">tvm::auto_scheduler::AttachMap</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1AttachMapNode.html" title="stores the compute_at relation between stages This stores a bi-dir [...]
+<tr id="row_107_104_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1BuildResult.html" target="_self">tvm::auto_scheduler::BuildResult</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1BuildResultNode.html" title="Store the result of a build. ">BuildResultNode</a> </td></tr>
+<tr id="row_107_105_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeDAG.html" target="_self">tvm::auto_scheduler::ComputeDAG</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeDAGNode.html" title="The auto-scheduler&#39;s computational graph and related progra [...]
+<tr id="row_107_106_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_106_" class="arrow" onclick="toggleFolder('107_106_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1CostModel.html" target="_self">tvm::auto_scheduler::CostModel</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1CostMo [...]
+<tr id="row_107_106_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1PythonBasedModel.html" target="_self">tvm::auto_scheduler::PythonBasedModel</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1PythonBasedModelNode.html" title="A wrapper for cost model defined by python  [...]
+<tr id="row_107_106_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1RandomModel.html" target="_self">tvm::auto_scheduler::RandomModel</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1RandomModelNode.html" title="The cost model returning random value for all predictions. [...]
+<tr id="row_107_107_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParams.html" target="_self">tvm::auto_scheduler::HardwareParams</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html" title="The parameters of target hardware used to guide the [...]
+<tr id="row_107_108_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1Iterator.html" target="_self">tvm::auto_scheduler::Iterator</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1IteratorNode.html" title="An iterator of a for-loop Similar to tvm::IterVar in include/tvm/tir/ [...]
+<tr id="row_107_109_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_109_" class="arrow" onclick="toggleFolder('107_109_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureCallback.html" target="_self">tvm::auto_scheduler::MeasureCallback</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__schedul [...]
+<tr id="row_107_109_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1PythonBasedMeasureCallback.html" target="_self">tvm::auto_scheduler::PythonBasedMeasureCallback</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1PythonBasedMeasureCallbackNode.html" title="A wrapper for [...]
+<tr id="row_107_109_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1RecordToFile.html" target="_self">tvm::auto_scheduler::RecordToFile</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1RecordToFileNode.html" title="Callback for logging the input and results of measureme [...]
+<tr id="row_107_110_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureInput.html" target="_self">tvm::auto_scheduler::MeasureInput</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureInputNode.html" title="Store the input of a measurement. ">MeasureInputNode</a>  [...]
+<tr id="row_107_111_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureResult.html" target="_self">tvm::auto_scheduler::MeasureResult</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1MeasureResultNode.html" title="Store the results of a measurement. ">MeasureResultNod [...]
+<tr id="row_107_112_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_112_" class="arrow" onclick="toggleFolder('107_112_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ProgramBuilder.html" target="_self">tvm::auto_scheduler::ProgramBuilder</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler [...]
+<tr id="row_107_112_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1LocalBuilder.html" target="_self">tvm::auto_scheduler::LocalBuilder</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1LocalBuilderNode.html" title="LocalBuilder use local CPU cores to build programs in p [...]
+<tr id="row_107_113_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ProgramMeasurer.html" target="_self">tvm::auto_scheduler::ProgramMeasurer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1ProgramMeasurerNode.html" title="Measurer that measures the time costs of tvm pro [...]
+<tr id="row_107_114_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_114_" class="arrow" onclick="toggleFolder('107_114_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ProgramRunner.html" target="_self">tvm::auto_scheduler::ProgramRunner</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1 [...]
+<tr id="row_107_114_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1LocalRunner.html" target="_self">tvm::auto_scheduler::LocalRunner</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1LocalRunnerNode.html" title="LocalRunner that uses local CPU/GPU to measure the time co [...]
+<tr id="row_107_114_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1RPCRunner.html" target="_self">tvm::auto_scheduler::RPCRunner</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1RPCRunnerNode.html" title="RPCRunner that uses RPC call to measures the time cost of progra [...]
+<tr id="row_107_115_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1RecordReader.html" target="_self">tvm::auto_scheduler::RecordReader</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1RecordReaderNode.html" title="Log reader to load step logs from a file. ">RecordReaderN [...]
+<tr id="row_107_116_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_116_" class="arrow" onclick="toggleFolder('107_116_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchCallback.html" target="_self">tvm::auto_scheduler::SearchCallback</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler [...]
+<tr id="row_107_116_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStates.html" target="_self">tvm::auto_scheduler::PreloadMeasuredStates</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStatesNode.html" title="Preload measured states from [...]
+<tr id="row_107_117_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicy.html" target="_self">tvm::auto_scheduler::SearchPolicy</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html" title="The base class of search policies. ">SearchPolicyNode</a> [...]
+<tr id="row_107_118_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchTask.html" target="_self">tvm::auto_scheduler::SearchTask</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1SearchTaskNode.html" title="The computation information and hardware parameters for a speci [...]
+<tr id="row_107_119_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1Stage.html" target="_self">tvm::auto_scheduler::Stage</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1StageNode.html" title="A op stage in the compute declaration. Similar to te::Stage in include/tvm/te/ [...]
+<tr id="row_107_120_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1State.html" target="_self">tvm::auto_scheduler::State</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1StateNode.html" title="A state in the search process. It consists of the current loop structure and a [...]
+<tr id="row_107_121_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_121_" class="arrow" onclick="toggleFolder('107_121_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1Step.html" target="_self">tvm::auto_scheduler::Step</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1StepNode.html" t [...]
+<tr id="row_107_121_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1AnnotationStep.html" target="_self">tvm::auto_scheduler::AnnotationStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1AnnotationStepNode.html" title="Annotation step that corresponds to vectorize, pa [...]
+<tr id="row_107_121_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1CacheReadStep.html" target="_self">tvm::auto_scheduler::CacheReadStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1CacheReadStepNode.html" title="Cache read step that corresponds to te::Schedule::ca [...]
+<tr id="row_107_121_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1CacheWriteStep.html" target="_self">tvm::auto_scheduler::CacheWriteStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1CacheWriteStepNode.html" title="Cache write step that corresponds to te::Schedule [...]
+<tr id="row_107_121_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeAtStep.html" target="_self">tvm::auto_scheduler::ComputeAtStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeAtStepNode.html" title="Compute at step that corresponds to te::Stage::compu [...]
+<tr id="row_107_121_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeInlineStep.html" target="_self">tvm::auto_scheduler::ComputeInlineStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeInlineStepNode.html" title="Compute inline step that corresponds to  [...]
+<tr id="row_107_121_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeRootStep.html" target="_self">tvm::auto_scheduler::ComputeRootStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1ComputeRootStepNode.html" title="Compute root step that corresponds to te::Stag [...]
+<tr id="row_107_121_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1FollowFusedSplitStep.html" target="_self">tvm::auto_scheduler::FollowFusedSplitStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1FollowFusedSplitStepNode.html" title="Similar to FollowSplitStep, but [...]
+<tr id="row_107_121_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1FollowSplitStep.html" target="_self">tvm::auto_scheduler::FollowSplitStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1FollowSplitStepNode.html" title="Similar to SplitStepNode, but uses split facto [...]
+<tr id="row_107_121_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1FuseStep.html" target="_self">tvm::auto_scheduler::FuseStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1FuseStepNode.html" title="Fuse step that corresponds to te::Stage::fuse. ">FuseStepNode</a> < [...]
+<tr id="row_107_121_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1PragmaStep.html" target="_self">tvm::auto_scheduler::PragmaStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1PragmaStepNode.html" title="Pragma step that corresponds to te::Stage::pragma. ">PragmaSt [...]
+<tr id="row_107_121_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1ReorderStep.html" target="_self">tvm::auto_scheduler::ReorderStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1ReorderStepNode.html" title="Reorder step that corresponds to te::Stage::reorder. ">Re [...]
+<tr id="row_107_121_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1RfactorStep.html" target="_self">tvm::auto_scheduler::RfactorStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1RfactorStepNode.html" title="Reduction factor step that corresponds to te::Schedule::r [...]
+<tr id="row_107_121_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1SplitStep.html" target="_self">tvm::auto_scheduler::SplitStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1SplitStepNode.html" title="Split step that corresponds to te::Stage::split with additional [...]
+<tr id="row_107_121_13_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1StorageAlignStep.html" target="_self">tvm::auto_scheduler::StorageAlignStep</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1StorageAlignStepNode.html" title="Storage align step that corresponds to te: [...]
+<tr id="row_107_122_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1auto__scheduler_1_1TuningOptions.html" target="_self">tvm::auto_scheduler::TuningOptions</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1auto__scheduler_1_1TuningOptionsNode.html" title="Tuning and measurement options. ">TuningOptionsNode</a [...]
+<tr id="row_107_123_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_123_" class="arrow" onclick="toggleFolder('107_123_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1BaseExpr.html" target="_self">tvm::BaseExpr</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1BaseExprNode.html" title="Base type of all the expressions. "> [...]
+<tr id="row_107_123_0_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_107_123_0_" class="arrow" onclick="toggleFolder('107_123_0_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1PrimExpr.html" target="_self">tvm::PrimExpr</a></td><td class="desc">Reference to <a class="el" href="classtvm_1_1PrimExprNode.html" title="Base node of all primitive expressions [...]
+<tr id="row_107_123_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_107_123_0_0_" class="arrow" onclick="toggleFolder('107_123_0_0_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IterMapExpr.html" target="_self">tvm::arith::IterMapExpr</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IterMapExprNode.htm [...]
+<tr id="row_107_123_0_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IterSplitExpr.html" target="_self">tvm::arith::IterSplitExpr</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IterSplitExprNode.html" title="Split of an iterator. ">IterSplitExprNode</a> </td></tr>
+<tr id="row_107_123_0_0_1_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1IterSumExpr.html" target="_self">tvm::arith::IterSumExpr</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1arith_1_1IterSumExprNode.html" title="Fuse multiple iterators by summing them with scaling. ">IterSumExprNode</a> </td></tr>
+<tr id="row_107_123_0_1_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1FloatImm.html" target="_self">tvm::FloatImm</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1FloatImmNode.html" title="Constant floating point literals in the program. ">FloatImmNode</a> </td></tr>
+<tr id="row_107_123_0_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_107_123_0_2_" class="arrow" onclick="toggleFolder('107_123_0_2_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IntImm.html" target="_self">tvm::IntImm</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1IntImmNode.html" title="Constant integer literal [...]
+<tr id="row_107_123_0_2_0_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Bool.html" target="_self">tvm::Bool</a></td><td class="desc">Boolean constant </td></tr>
+<tr id="row_107_123_0_2_1_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Integer.html" target="_self">tvm::Integer</a></td><td class="desc">Container of constant int that adds more constructors </td></tr>
+<tr id="row_107_123_0_3_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Add.html" target="_self">tvm::tir::Add</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AddNode.html" title="a + b ">AddNode</a> </td></tr>
+<tr id="row_107_123_0_4_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1And.html" target="_self">tvm::tir::And</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AndNode.html" title="a &amp;&amp; b ">AndNode</a> </td></tr>
+<tr id="row_107_123_0_5_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Any.html" target="_self">tvm::tir::Any</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AnyNode.html" title="Any shape. ">AnyNode</a> </td></tr>
+<tr id="row_107_123_0_6_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Broadcast.html" target="_self">tvm::tir::Broadcast</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BroadcastNode.html" title="Create a vector where all the elements are value. ">BroadcastNode</a> </td></tr>
+<tr id="row_107_123_0_7_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferLoad.html" target="_self">tvm::tir::BufferLoad</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferLoadNode.html" title="Load value from the high dimension buffer. ">BufferLoadNode</a> </td></tr>
+<tr id="row_107_123_0_8_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Call.html" target="_self">tvm::tir::Call</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1CallNode.html" title="Call node. ">CallNode</a> </td></tr>
+<tr id="row_107_123_0_9_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Cast.html" target="_self">tvm::tir::Cast</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1CastNode.html" title="Cast value from one data type to another. ">CastNode</a> </td></tr>
+<tr id="row_107_123_0_10_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Div.html" target="_self">tvm::tir::Div</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1DivNode.html" title="a / b in the C semnatics. ">DivNode</a> </td></tr>
+<tr id="row_107_123_0_11_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1EQ.html" target="_self">tvm::tir::EQ</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1EQNode.html" title="a == b ">EQNode</a> </td></tr>
+<tr id="row_107_123_0_12_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FloorDiv.html" target="_self">tvm::tir::FloorDiv</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1FloorDivNode.html" title="Floor division, floor(a/b) ">FloorDivNode</a> </td></tr>
+<tr id="row_107_123_0_13_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1FloorMod.html" target="_self">tvm::tir::FloorMod</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1FloorModNode.html" title="The remainder of the floordiv. ">FloorModNode</a> </td></tr>
+<tr id="row_107_123_0_14_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1GE.html" target="_self">tvm::tir::GE</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1GENode.html" title="a &gt;= b ">GENode</a> </td></tr>
+<tr id="row_107_123_0_15_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1GT.html" target="_self">tvm::tir::GT</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1GTNode.html" title="a &gt; b ">GTNode</a> </td></tr>
+<tr id="row_107_123_0_16_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LE.html" target="_self">tvm::tir::LE</a></td><td class="desc">Managed reference to <a class="el" href="structtvm_1_1tir_1_1LENode.html" title="a &lt;= b ">LENode</a> </td></tr>
+<tr id="row_107_123_0_17_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Let.html" target="_self">tvm::tir::Let</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LetNode.html" title="Let binding. Bind var to value then evaluate body. ">LetNode</a> </td></tr>
+<tr id="row_107_123_0_18_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Load.html" target="_self">tvm::tir::Load</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LoadNode.html" title="Load the value from buffer_var. ">LoadNode</a> </td></tr>
+<tr id="row_107_123_0_19_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LT.html" target="_self">tvm::tir::LT</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LTNode.html" title="a &lt; b ">LTNode</a> </td></tr>
+<tr id="row_107_123_0_20_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Max.html" target="_self">tvm::tir::Max</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1MaxNode.html" title="max(a, b) ">MaxNode</a> </td></tr>
+<tr id="row_107_123_0_21_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Min.html" target="_self">tvm::tir::Min</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1MinNode.html" title="min(a, b) ">MinNode</a> </td></tr>
+<tr id="row_107_123_0_22_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Mod.html" target="_self">tvm::tir::Mod</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ModNode.html" title="a % b in the C semnatics. ">ModNode</a> </td></tr>
+<tr id="row_107_123_0_23_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Mul.html" target="_self">tvm::tir::Mul</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1MulNode.html" title="a * b ">MulNode</a> </td></tr>
+<tr id="row_107_123_0_24_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1NE.html" target="_self">tvm::tir::NE</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1NENode.html" title="a != b ">NENode</a> </td></tr>
+<tr id="row_107_123_0_25_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Not.html" target="_self">tvm::tir::Not</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1NotNode.html" title="!a ">NotNode</a> </td></tr>
+<tr id="row_107_123_0_26_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Or.html" target="_self">tvm::tir::Or</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1OrNode.html" title="a || b ">OrNode</a> </td></tr>
+<tr id="row_107_123_0_27_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProducerLoad.html" target="_self">tvm::tir::ProducerLoad</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ProducerLoadNode.html" title="Load value from the result produced by the producer. ">ProducerLoadNode</a> </td></tr>
+<tr id="row_107_123_0_28_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Ramp.html" target="_self">tvm::tir::Ramp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1RampNode.html" title="Construct a vector with lanes elements where its i-th element equals base + i * stride. This is useful to const [...]
+<tr id="row_107_123_0_29_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Reduce.html" target="_self">tvm::tir::Reduce</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ReduceNode.html" title="Reduction operator operator. ">ReduceNode</a> </td></tr>
+<tr id="row_107_123_0_30_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Select.html" target="_self">tvm::tir::Select</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1SelectNode.html" title="return true_value if condition is true, otherwise return false_value. ">SelectNode</a> </td></tr>
+<tr id="row_107_123_0_31_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Shuffle.html" target="_self">tvm::tir::Shuffle</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ShuffleNode.html" title="Shuffle instruction. vec = concat(vectors) result = (vec[indices[0]], vec[indices[1]] ...">ShuffleNode [...]
+<tr id="row_107_123_0_32_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StringImm.html" target="_self">tvm::tir::StringImm</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1StringImmNode.html" title="String constants, only used in asserts. ">StringImmNode</a> </td></tr>
+<tr id="row_107_123_0_33_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Sub.html" target="_self">tvm::tir::Sub</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1SubNode.html" title="a - b ">SubNode</a> </td></tr>
+<tr id="row_107_123_0_34_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_107_123_0_34_" class="arrow" onclick="toggleFolder('107_123_0_34_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Var.html" target="_self">tvm::tir::Var</a></td><td class="desc">Named variable in TIR </td></tr>
+<tr id="row_107_123_0_34_0_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SizeVar.html" target="_self">tvm::tir::SizeVar</a></td><td class="desc">Named variable represents a tensor index size </td></tr>
+<tr id="row_107_123_1_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_107_123_1_" class="arrow" onclick="toggleFolder('107_123_1_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1RelayExpr.html" target="_self">tvm::RelayExpr</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1RelayExprNode.html" title="Base node of all non-primit [...]
+<tr id="row_107_123_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_107_123_1_0_" class="arrow" onclick="toggleFolder('107_123_1_0_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1BaseFunc.html" target="_self">tvm::BaseFunc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1BaseFuncNode.html" title="Base node of all functio [...]
+<tr id="row_107_123_1_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Function.html" target="_self">tvm::relay::Function</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1relay_1_1FunctionNode.html" title="Relay Function container. ">FunctionNode</a> </td></tr>
+<tr id="row_107_123_1_0_1_" class="even" style="display:none;"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1PrimFunc.html" target="_self">tvm::tir::PrimFunc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1PrimFuncNode.html" title="Primitive functions that contains TIR statements. ">PrimFuncNode</a> </td></tr>
+<tr id="row_107_123_1_1_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Constructor.html" target="_self">tvm::Constructor</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1ConstructorNode.html" title="ADT constructor. Constructors compare by pointer equality. ">ConstructorNode</a> </td></tr>
+<tr id="row_107_123_1_2_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GlobalVar.html" target="_self">tvm::GlobalVar</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1GlobalVarNode.html" title="Global variable that lives in the top-level module. ">GlobalVarNode</a> </td></tr>
+<tr id="row_107_123_1_3_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Op.html" target="_self">tvm::Op</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1OpNode.html" title="Primitive Op(builtin intrinsics) ">OpNode</a> </td></tr>
+<tr id="row_107_123_1_4_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Call.html" target="_self">tvm::relay::Call</a></td><td class="desc"></td></tr>
+<tr id="row_107_123_1_5_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Constant.html" target="_self">tvm::relay::Constant</a></td><td class="desc"></td></tr>
+<tr id="row_107_123_1_6_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1If.html" target="_self">tvm::relay::If</a></td><td class="desc"></td></tr>
+<tr id="row_107_123_1_7_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Let.html" target="_self">tvm::relay::Let</a></td><td class="desc"></td></tr>
+<tr id="row_107_123_1_8_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Match.html" target="_self">tvm::relay::Match</a></td><td class="desc"></td></tr>
+<tr id="row_107_123_1_9_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefCreate.html" target="_self">tvm::relay::RefCreate</a></td><td class="desc"></td></tr>
+<tr id="row_107_123_1_10_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefRead.html" target="_self">tvm::relay::RefRead</a></td><td class="desc"></td></tr>
+<tr id="row_107_123_1_11_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefWrite.html" target="_self">tvm::relay::RefWrite</a></td><td class="desc"></td></tr>
+<tr id="row_107_123_1_12_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TempExpr.html" target="_self">tvm::relay::TempExpr</a></td><td class="desc"></td></tr>
+<tr id="row_107_123_1_13_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Tuple.html" target="_self">tvm::relay::Tuple</a></td><td class="desc"></td></tr>
+<tr id="row_107_123_1_14_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItem.html" target="_self">tvm::relay::TupleGetItem</a></td><td class="desc"></td></tr>
+<tr id="row_107_123_1_15_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Var.html" target="_self">tvm::relay::Var</a></td><td class="desc"></td></tr>
+<tr id="row_107_124_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1CompilationConfig.html" target="_self">tvm::CompilationConfig</a></td><td class="desc">Managed reference class to <code><a class="el" href="classtvm_1_1CompilationConfig.html" title="Managed reference class to CompilationConfig. ">CompilationConfig</a></code> </td></tr>
+<tr id="row_107_125_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Diagnostic.html" target="_self">tvm::Diagnostic</a></td><td class="desc"></td></tr>
+<tr id="row_107_126_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DiagnosticContext.html" target="_self">tvm::DiagnosticContext</a></td><td class="desc"></td></tr>
+<tr id="row_107_127_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1DiagnosticRenderer.html" target="_self">tvm::DiagnosticRenderer</a></td><td class="desc"></td></tr>
+<tr id="row_107_128_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1EnvFunc.html" target="_self">tvm::EnvFunc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1EnvFuncNode.html" title="A serializable function backed by TVM&#39;s global environment. ">EnvFuncNode</a> </td></tr>
+<tr id="row_107_129_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GenericFunc.html" target="_self">tvm::GenericFunc</a></td><td class="desc">Generic function that can be specialized on a per-target basis </td></tr>
+<tr id="row_107_130_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1instrument_1_1PassInstrument.html" target="_self">tvm::instrument::PassInstrument</a></td><td class="desc">Managed reference class for <a class="el" href="classtvm_1_1instrument_1_1PassInstrumentNode.html" title="PassInstrumentNode forms an instrument implementation. It  [...]
+<tr id="row_107_131_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IRModule.html" target="_self">tvm::IRModule</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1IRModuleNode.html" title="IRModule that holds functions and type definitions. ">IRModuleNode</a> </td></tr>
+<tr id="row_107_132_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1MemoryInfo.html" target="_self">tvm::MemoryInfo</a></td><td class="desc">Defines memory info </td></tr>
+<tr id="row_107_133_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1ApplyHistoryBest.html" target="_self">tvm::meta_schedule::ApplyHistoryBest</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1ApplyHistoryBestNode.html" title="An integration context that allows application o [...]
+<tr id="row_107_134_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_134_" class="arrow" onclick="toggleFolder('107_134_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1ArgInfo.html" target="_self">tvm::meta_schedule::ArgInfo</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1ArgInfoNode.h [...]
+<tr id="row_107_134_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1TensorInfo.html" target="_self">tvm::meta_schedule::TensorInfo</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1TensorInfoNode.html" title="The tensor argument information. ">TensorInfoNode</a> </td></tr>
+<tr id="row_107_135_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1Builder.html" target="_self">tvm::meta_schedule::Builder</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1BuilderNode.html" title="The abstract builder interface. ">BuilderNode</a> </td></tr>
+<tr id="row_107_136_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1BuilderInput.html" target="_self">tvm::meta_schedule::BuilderInput</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1BuilderInputNode.html" title="The builder&#39;s input, containing an IRModule and the targ [...]
+<tr id="row_107_137_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1BuilderResult.html" target="_self">tvm::meta_schedule::BuilderResult</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1BuilderResultNode.html" title="The builder&#39;s output, containing the artifact path or [...]
+<tr id="row_107_138_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1CostModel.html" target="_self">tvm::meta_schedule::CostModel</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1CostModelNode.html" title="Cost model. ">CostModelNode</a> </td></tr>
+<tr id="row_107_139_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1Database.html" target="_self">tvm::meta_schedule::Database</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1DatabaseNode.html">DatabaseNode</a> </td></tr>
+<tr id="row_107_140_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1ExtractedTask.html" target="_self">tvm::meta_schedule::ExtractedTask</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1ExtractedTaskNode.html" title="A tuning task extracted from the high-level IR. ">Extract [...]
+<tr id="row_107_141_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1FeatureExtractor.html" target="_self">tvm::meta_schedule::FeatureExtractor</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1FeatureExtractorNode.html" title="Extractor for features from measure candidates f [...]
+<tr id="row_107_142_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1MeasureCallback.html" target="_self">tvm::meta_schedule::MeasureCallback</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1MeasureCallbackNode.html" title="Rules to apply after measure results is available.  [...]
+<tr id="row_107_143_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1MeasureCandidate.html" target="_self">tvm::meta_schedule::MeasureCandidate</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1MeasureCandidateNode.html" title="The schedule (with input shapes) to be measured. [...]
+<tr id="row_107_144_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1Mutator.html" target="_self">tvm::meta_schedule::Mutator</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1MutatorNode.html" title="Mutator is designed to mutate the trace to explore the design space. ">Muta [...]
+<tr id="row_107_145_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1Postproc.html" target="_self">tvm::meta_schedule::Postproc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1PostprocNode.html" title="Rules to apply a postprocessor to a schedule. ">PostprocNode</a> </td></tr>
+<tr id="row_107_146_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1Runner.html" target="_self">tvm::meta_schedule::Runner</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1RunnerNode.html" title="The abstract runner interface. ">RunnerNode</a> </td></tr>
+<tr id="row_107_147_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1RunnerFuture.html" target="_self">tvm::meta_schedule::RunnerFuture</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1RunnerFutureNode.html" title="A class to asynchronously fetch runner&#39;s output. ">Runne [...]
+<tr id="row_107_148_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1RunnerInput.html" target="_self">tvm::meta_schedule::RunnerInput</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1RunnerInputNode.html" title="Runner&#39;s input containing path of artifact, type of device  [...]
+<tr id="row_107_149_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1RunnerResult.html" target="_self">tvm::meta_schedule::RunnerResult</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1RunnerResultNode.html" title="Runner&#39;s output containing measurement result of Measure [...]
+<tr id="row_107_150_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1ScheduleRule.html" target="_self">tvm::meta_schedule::ScheduleRule</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1ScheduleRuleNode.html" title="Rules to modify a block in a schedule. ">ScheduleRuleNode</a [...]
+<tr id="row_107_151_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1SearchStrategy.html" target="_self">tvm::meta_schedule::SearchStrategy</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1SearchStrategyNode.html" title="The search strategy for measure candidates generation. [...]
+<tr id="row_107_152_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1SpaceGenerator.html" target="_self">tvm::meta_schedule::SpaceGenerator</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1SpaceGeneratorNode.html" title="The abstract class for design space generation. ">Spac [...]
+<tr id="row_107_153_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1TaskScheduler.html" target="_self">tvm::meta_schedule::TaskScheduler</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1TaskSchedulerNode.html" title="The abstract interface of task schedulers. ">TaskSchedule [...]
+<tr id="row_107_154_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1TuneContext.html" target="_self">tvm::meta_schedule::TuneContext</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1TuneContextNode.html" title="The auto tuning context. ">TuneContextNode</a> </td></tr>
+<tr id="row_107_155_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1TuningRecord.html" target="_self">tvm::meta_schedule::TuningRecord</a></td><td class="desc">The managed reference of <a class="el" href="classtvm_1_1meta__schedule_1_1TuningRecordNode.html" title="The class of tuning records. ">TuningRecordNode</a> </td></tr>
+<tr id="row_107_156_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1meta__schedule_1_1Workload.html" target="_self">tvm::meta_schedule::Workload</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1meta__schedule_1_1WorkloadNode.html" title="A workload, i.e. an IRModule and its structural hash. ">WorkloadNode</a> [...]
+<tr id="row_107_157_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1parser_1_1Source.html" target="_self">tvm::parser::Source</a></td><td class="desc"></td></tr>
+<tr id="row_107_158_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1parser_1_1SourceMap.html" target="_self">tvm::parser::SourceMap</a></td><td class="desc"></td></tr>
+<tr id="row_107_159_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1PoolInfo.html" target="_self">tvm::PoolInfo</a></td><td class="desc"></td></tr>
+<tr id="row_107_160_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Range.html" target="_self">tvm::Range</a></td><td class="desc"><a class="el" href="classtvm_1_1Range.html" title="Range constainer. ">Range</a> constainer </td></tr>
+<tr id="row_107_161_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Clause.html" target="_self">tvm::relay::Clause</a></td><td class="desc"></td></tr>
+<tr id="row_107_162_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ConstructorValue.html" target="_self">tvm::relay::ConstructorValue</a></td><td class="desc"></td></tr>
+<tr id="row_107_163_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_163_" class="arrow" onclick="toggleFolder('107_163_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPattern.html" target="_self">tvm::relay::DFPattern</a></td><td class="desc">Managed reference to dataflow patterns </td></tr>
+<tr id="row_107_163_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1AltPattern.html" target="_self">tvm::relay::AltPattern</a></td><td class="desc">A pattern which matches either of two patterns </td></tr>
+<tr id="row_107_163_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1AttrPattern.html" target="_self">tvm::relay::AttrPattern</a></td><td class="desc">A pattern which matches attributes in another pattern </td></tr>
+<tr id="row_107_163_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1CallPattern.html" target="_self">tvm::relay::CallPattern</a></td><td class="desc"></td></tr>
+<tr id="row_107_163_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ConstantPattern.html" target="_self">tvm::relay::ConstantPattern</a></td><td class="desc"></td></tr>
+<tr id="row_107_163_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DataTypePattern.html" target="_self">tvm::relay::DataTypePattern</a></td><td class="desc">A pattern which matches a type in another pattern </td></tr>
+<tr id="row_107_163_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DominatorPattern.html" target="_self">tvm::relay::DominatorPattern</a></td><td class="desc">A pattern which matches a variable length dominator path </td></tr>
+<tr id="row_107_163_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ExprPattern.html" target="_self">tvm::relay::ExprPattern</a></td><td class="desc">A pattern which matches a literal expression </td></tr>
+<tr id="row_107_163_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1FunctionPattern.html" target="_self">tvm::relay::FunctionPattern</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1relay_1_1FunctionNode.html" title="Relay Function container. ">FunctionNode</a> </td></tr>
+<tr id="row_107_163_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1IfPattern.html" target="_self">tvm::relay::IfPattern</a></td><td class="desc"></td></tr>
+<tr id="row_107_163_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1LetPattern.html" target="_self">tvm::relay::LetPattern</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Let.html">Let</a> binding that binds a local var </td></tr>
+<tr id="row_107_163_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1ShapePattern.html" target="_self">tvm::relay::ShapePattern</a></td><td class="desc">A pattern which matches a type in another pattern </td></tr>
+<tr id="row_107_163_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TupleGetItemPattern.html" target="_self">tvm::relay::TupleGetItemPattern</a></td><td class="desc"></td></tr>
+<tr id="row_107_163_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TuplePattern.html" target="_self">tvm::relay::TuplePattern</a></td><td class="desc"></td></tr>
+<tr id="row_107_163_13_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1TypePattern.html" target="_self">tvm::relay::TypePattern</a></td><td class="desc">A pattern which matches a type in another pattern </td></tr>
+<tr id="row_107_163_14_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1VarPattern.html" target="_self">tvm::relay::VarPattern</a></td><td class="desc"></td></tr>
+<tr id="row_107_163_15_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1WildcardPattern.html" target="_self">tvm::relay::WildcardPattern</a></td><td class="desc">A pattern which matches anything </td></tr>
+<tr id="row_107_164_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1DFPatternCallback.html" target="_self">tvm::relay::DFPatternCallback</a></td><td class="desc">Managed reference to dataflow pattern callbacks </td></tr>
+<tr id="row_107_165_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Executor.html" target="_self">tvm::relay::Executor</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1relay_1_1ExecutorNode.html" title="Executor information. ">ExecutorNode</a> </td></tr>
+<tr id="row_107_166_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Id.html" target="_self">tvm::relay::Id</a></td><td class="desc"></td></tr>
+<tr id="row_107_167_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpImplementation.html" target="_self">tvm::relay::OpImplementation</a></td><td class="desc">Operator implementation class </td></tr>
+<tr id="row_107_168_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpSpecialization.html" target="_self">tvm::relay::OpSpecialization</a></td><td class="desc">Operator specialization class </td></tr>
+<tr id="row_107_169_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1OpStrategy.html" target="_self">tvm::relay::OpStrategy</a></td><td class="desc">Operator strategy class </td></tr>
+<tr id="row_107_170_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_170_" class="arrow" onclick="toggleFolder('107_170_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Pattern.html" target="_self">tvm::relay::Pattern</a></td><td class="desc"><a class="el" href="classtvm_1_1relay_1_1Pattern.html" title="Pattern is the base type for an ADT mat [...]
+<tr id="row_107_170_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternConstructor.html" target="_self">tvm::relay::PatternConstructor</a></td><td class="desc"></td></tr>
+<tr id="row_107_170_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternTuple.html" target="_self">tvm::relay::PatternTuple</a></td><td class="desc"></td></tr>
+<tr id="row_107_170_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternVar.html" target="_self">tvm::relay::PatternVar</a></td><td class="desc"></td></tr>
+<tr id="row_107_170_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternWildcard.html" target="_self">tvm::relay::PatternWildcard</a></td><td class="desc"></td></tr>
+<tr id="row_107_171_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RecClosure.html" target="_self">tvm::relay::RecClosure</a></td><td class="desc"></td></tr>
+<tr id="row_107_172_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1RefValue.html" target="_self">tvm::relay::RefValue</a></td><td class="desc"></td></tr>
+<tr id="row_107_173_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1Runtime.html" target="_self">tvm::relay::Runtime</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1relay_1_1RuntimeNode.html" title="Runtime information. ">RuntimeNode</a> </td></tr>
+<tr id="row_107_174_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ADT.html" target="_self">tvm::runtime::ADT</a></td><td class="desc">Reference to algebraic data type objects </td></tr>
+<tr id="row_107_175_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Array.html" target="_self">tvm::runtime::Array&lt; T, typename &gt;</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Array.html" title="Array, container representing a contiguous sequence of ObjectRefs. ">Array</a>, container representing a  [...]
+<tr id="row_107_176_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_176_" class="arrow" onclick="toggleFolder('107_176_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Closure.html" target="_self">tvm::runtime::Closure</a></td><td class="desc">Reference to closure </td></tr>
+<tr id="row_107_176_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1InterpreterClosure.html" target="_self">tvm::relay::InterpreterClosure</a></td><td class="desc"></td></tr>
+<tr id="row_107_176_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1vm_1_1VMClosure.html" target="_self">tvm::runtime::vm::VMClosure</a></td><td class="desc">Reference to closure </td></tr>
+<tr id="row_107_177_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Map.html" target="_self">tvm::runtime::Map&lt; K, V, typename, typename &gt;</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Map.html" title="Map container of NodeRef-&gt;NodeRef in DSL graph. Map implements copy on write semantics, which m [...]
+<tr id="row_107_178_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_178_" class="arrow" onclick="toggleFolder('107_178_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1metadata_1_1MetadataBase.html" target="_self">tvm::runtime::metadata::MetadataBase</a></td><td class="desc">Reference class for the common <a class="el" href="classtvm_1_1ru [...]
+<tr id="row_107_178_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1metadata_1_1MetadataArray.html" target="_self">tvm::runtime::metadata::MetadataArray</a></td><td class="desc">Reference class for <a class="el" href="classtvm_1_1runtime_1_1metadata_1_1MetadataArray.html" title="Reference class for MetadataArray. ">MetadataA [...]
+<tr id="row_107_179_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Module.html" target="_self">tvm::runtime::Module</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Module.html" title="Module container of TVM. ">Module</a> container of TVM </td></tr>
+<tr id="row_107_180_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1NDArray.html" target="_self">tvm::runtime::NDArray</a></td><td class="desc">Managed <a class="el" href="classtvm_1_1runtime_1_1NDArray.html" title="Managed NDArray. The array is backed by reference counted blocks. ">NDArray</a>. The array is backed by referenc [...]
+<tr id="row_107_181_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Optional.html" target="_self">tvm::runtime::Optional&lt; T &gt;</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Optional.html" title="Optional container that to represent to a Nullable variant of T. ">Optional</a> container that to represen [...]
+<tr id="row_107_182_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1PackedFunc.html" target="_self">tvm::runtime::PackedFunc</a></td><td class="desc">Packed function is a type-erased function. The arguments are passed by packed format </td></tr>
+<tr id="row_107_183_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1profiling_1_1DeviceWrapper.html" target="_self">tvm::runtime::profiling::DeviceWrapper</a></td><td class="desc">Wrapper for <code>Device</code> </td></tr>
+<tr id="row_107_184_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1profiling_1_1MetricCollector.html" target="_self">tvm::runtime::profiling::MetricCollector</a></td><td class="desc">Wrapper for <code><a class="el" href="classtvm_1_1runtime_1_1profiling_1_1MetricCollectorNode.html" title="Interface for user defined profiling  [...]
+<tr id="row_107_185_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1profiling_1_1Report.html" target="_self">tvm::runtime::profiling::Report</a></td><td class="desc"></td></tr>
+<tr id="row_107_186_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ShapeTuple.html" target="_self">tvm::runtime::ShapeTuple</a></td><td class="desc">Reference to shape tuple objects </td></tr>
+<tr id="row_107_187_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1String.html" target="_self">tvm::runtime::String</a></td><td class="desc">Reference to string objects </td></tr>
+<tr id="row_107_188_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Timer.html" target="_self">tvm::runtime::Timer</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Timer.html" title="Timer for a specific device. ">Timer</a> for a specific device </td></tr>
+<tr id="row_107_189_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1vm_1_1Storage.html" target="_self">tvm::runtime::vm::Storage</a></td><td class="desc">Reference to storage </td></tr>
+<tr id="row_107_190_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1SourceName.html" target="_self">tvm::SourceName</a></td><td class="desc">The source name of a file span </td></tr>
+<tr id="row_107_191_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Span.html" target="_self">tvm::Span</a></td><td class="desc"></td></tr>
+<tr id="row_107_192_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Target.html" target="_self">tvm::Target</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1TargetNode.html" title="Compilation target. ">TargetNode</a> </td></tr>
+<tr id="row_107_193_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TargetKind.html" target="_self">tvm::TargetKind</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1TargetKindNode.html" title="Target kind, specifies the kind of the target. ">TargetKindNode</a> </td></tr>
+<tr id="row_107_194_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TargetTag.html" target="_self">tvm::TargetTag</a></td><td class="desc">Managed reference class to <a class="el" href="classtvm_1_1TargetTagNode.html" title="A target tag. ">TargetTagNode</a> </td></tr>
+<tr id="row_107_195_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1IterVarAttr.html" target="_self">tvm::te::IterVarAttr</a></td><td class="desc">Additional scheduable attributes about IterVar </td></tr>
+<tr id="row_107_196_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_196_" class="arrow" onclick="toggleFolder('107_196_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1IterVarRelation.html" target="_self">tvm::te::IterVarRelation</a></td><td class="desc">The schedule relation between IterVars can be <a class="el" href="classtvm_1_1te_1_1Split.h [...]
+<tr id="row_107_196_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Fuse.html" target="_self">tvm::te::Fuse</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1FuseNode.html" title="Fuse two domains into one domain. ">FuseNode</a> </td></tr>
+<tr id="row_107_196_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Rebase.html" target="_self">tvm::te::Rebase</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1RebaseNode.html" title="Rebase the iteration to make min to be 0. This is useful to normalize the Schedule to make every leaf...">Rebas [...]
+<tr id="row_107_196_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Singleton.html" target="_self">tvm::te::Singleton</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1SingletonNode.html" title="Singleton iterator [0, 1) ">SingletonNode</a> </td></tr>
+<tr id="row_107_196_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Split.html" target="_self">tvm::te::Split</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1SplitNode.html" title="Split the parent domain into product of outer and iter. ">SplitNode</a> </td></tr>
+<tr id="row_107_196_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Transform.html" target="_self">tvm::te::Transform</a></td><td class="desc"></td></tr>
+<tr id="row_107_197_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_197_" class="arrow" onclick="toggleFolder('107_197_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Operation.html" target="_self">tvm::te::Operation</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Operation.html" title="Operation that produces tensors. ">Operati [...]
+<tr id="row_107_197_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ComputeOp.html" target="_self">tvm::te::ComputeOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1ComputeOpNode.html" title="A Compute op that compute a tensor on certain domain. ">ComputeOpNode</a> </td></tr>
+<tr id="row_107_197_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ExternOp.html" target="_self">tvm::te::ExternOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1ExternOpNode.html" title="External computation that cannot be splitted. ">ExternOpNode</a> </td></tr>
+<tr id="row_107_197_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1HybridOp.html" target="_self">tvm::te::HybridOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1HybridOpNode.html" title="A computation operator that generated by hybrid script. ">HybridOpNode</a> </td></tr>
+<tr id="row_107_197_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1PlaceholderOp.html" target="_self">tvm::te::PlaceholderOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1PlaceholderOpNode.html" title="A placeholder op represents an input placeholder. ">PlaceholderOpNode</a> </td></tr>
+<tr id="row_107_197_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1ScanOp.html" target="_self">tvm::te::ScanOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1ScanOpNode.html" title="Symbolic scan. ">ScanOpNode</a> </td></tr>
+<tr id="row_107_197_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorComputeOp.html" target="_self">tvm::te::TensorComputeOp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1TensorComputeOpNode.html" title="A TenorCompute op that compute a tensor with an tensor intrinsic. ">TensorComputeOpN [...]
+<tr id="row_107_198_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Schedule.html" target="_self">tvm::te::Schedule</a></td><td class="desc">Global schedule container For operations and all the operations they depend on. The schedule per <a class="el" href="classtvm_1_1te_1_1Operation.html" title="Operation that produces tensors. " [...]
+<tr id="row_107_199_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1SpecializedCondition.html" target="_self">tvm::te::SpecializedCondition</a></td><td class="desc">Specialized condition to enable op specialization </td></tr>
+<tr id="row_107_200_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Stage.html" target="_self">tvm::te::Stage</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Stage.html" title="Stage, contains scheduling for a stage of computation. ">Stage</a>, contains scheduling for a stage of computation </td></tr>
+<tr id="row_107_201_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorIntrin.html" target="_self">tvm::te::TensorIntrin</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1TensorIntrinNode.html" title="Node to represent a Tensor intrinsic operator. ">TensorIntrinNode</a> </td></tr>
+<tr id="row_107_202_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1TensorIntrinCall.html" target="_self">tvm::te::TensorIntrinCall</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1te_1_1TensorIntrinCallNode.html">TensorIntrinCallNode</a> </td></tr>
+<tr id="row_107_203_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BijectiveLayout.html" target="_self">tvm::tir::BijectiveLayout</a></td><td class="desc">Bijective function mapping for data layout transformation. Given two <a class="el" href="classtvm_1_1tir_1_1Layout.html" title="Managed reference to LayoutNode. ">Layout</a>, < [...]
+<tr id="row_107_204_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BlockRV.html" target="_self">tvm::tir::BlockRV</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BlockRVNode.html" title="A random variable that evaluates to a TensorIR block. ">BlockRVNode</a> </td></tr>
+<tr id="row_107_205_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BlockScope.html" target="_self">tvm::tir::BlockScope</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BlockScopeNode.html" title="An object with 1-to-1 correspondence with each block reference in the sref tree. This data structu [...]
+<tr id="row_107_206_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Buffer.html" target="_self">tvm::tir::Buffer</a></td><td class="desc"><a class="el" href="classtvm_1_1tir_1_1Buffer.html" title="Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types...">Buffer</a> is a symbolic n-darray structur [...]
+<tr id="row_107_207_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferRegion.html" target="_self">tvm::tir::BufferRegion</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferRegionNode.html" title="Representing the region of multi-dimensional buffer access. ">BufferRegionNode</a> </td></tr>
+<tr id="row_107_208_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1CommReducer.html" target="_self">tvm::tir::CommReducer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1CommReducerNode.html" title="A commutative reducer node to represent a commutative binary operator with identity element..." [...]
+<tr id="row_107_209_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_209_" class="arrow" onclick="toggleFolder('107_209_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1DataProducer.html" target="_self">tvm::tir::DataProducer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1DataProducerNode.html" title="Base  [...]
+<tr id="row_107_209_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1te_1_1Tensor.html" target="_self">tvm::te::Tensor</a></td><td class="desc"><a class="el" href="classtvm_1_1te_1_1Tensor.html" title="Tensor structure representing a possible input, or intermediate computation result. ">Tensor</a> structure representing a possible input [...]
+<tr id="row_107_210_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Dependency.html" target="_self">tvm::tir::Dependency</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1DependencyNode.html" title="A tuple (src, dst, kind) representing certain types of dependency. For example, (A, B, kRAW) means [...]
+<tr id="row_107_211_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IndexMap.html" target="_self">tvm::tir::IndexMap</a></td><td class="desc"></td></tr>
+<tr id="row_107_212_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Instruction.html" target="_self">tvm::tir::Instruction</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1InstructionNode.html" title="Schedule instructions each corresponds to a schedule primitive. ">InstructionNode</a> </td></tr>
+<tr id="row_107_213_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1InstructionKind.html" target="_self">tvm::tir::InstructionKind</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1InstructionKindNode.html" title="Kind of an instruction, e.g. Split, Reorder, etc. Besides the name, every kind of i [...]
+<tr id="row_107_214_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IterVar.html" target="_self">tvm::tir::IterVar</a></td><td class="desc">Iteration Variable, represents an iteration over an integer interval </td></tr>
+<tr id="row_107_215_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Layout.html" target="_self">tvm::tir::Layout</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LayoutNode.html" title="Layout is to describe how data is organized within an N-dimention tensor. It is composed of upper cas...">Layo [...]
+<tr id="row_107_216_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LoopRV.html" target="_self">tvm::tir::LoopRV</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LoopRVNode.html" title="A random variable that evaluates to a TensorIR for loop. ">LoopRVNode</a> </td></tr>
+<tr id="row_107_217_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1MatchBufferRegion.html" target="_self">tvm::tir::MatchBufferRegion</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1MatchBufferRegionNode.html" title="Match introduces a constraint that the source buffer region can be remapped t [...]
+<tr id="row_107_218_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Schedule.html" target="_self">tvm::tir::Schedule</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ScheduleNode.html" title="The user-facing schedule class. ">ScheduleNode</a> </td></tr>
+<tr id="row_107_219_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ScheduleState.html" target="_self">tvm::tir::ScheduleState</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ScheduleStateNode.html" title="The state of scheduling, which exposes a Replace method as the primary interface for all  [...]
+<tr id="row_107_220_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_220_" class="arrow" onclick="toggleFolder('107_220_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Stmt.html" target="_self">tvm::tir::Stmt</a></td><td class="desc">Container of all statements </td></tr>
+<tr id="row_107_220_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Allocate.html" target="_self">tvm::tir::Allocate</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AllocateNode.html" title="Allocate a buffer that can be used in body. ">AllocateNode</a> </td></tr>
+<tr id="row_107_220_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AllocateConst.html" target="_self">tvm::tir::AllocateConst</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AllocateConstNode.html" title="Allocate a buffer that can be used in body. ">AllocateConstNode</a> </td></tr>
+<tr id="row_107_220_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AssertStmt.html" target="_self">tvm::tir::AssertStmt</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AssertStmtNode.html" title="Assert condition, if an error occurs, return the error message. ">AssertStmtNode</a> </td></tr>
+<tr id="row_107_220_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1AttrStmt.html" target="_self">tvm::tir::AttrStmt</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1AttrStmtNode.html" title="Define certain auxiliary attribute for the body to be a symbolic value. This provide auxiliary inform. [...]
+<tr id="row_107_220_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Block.html" target="_self">tvm::tir::Block</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BlockNode.html" title="A block is a basic schedule unit in TIR. ">BlockNode</a> </td></tr>
+<tr id="row_107_220_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BlockRealize.html" target="_self">tvm::tir::BlockRealize</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BlockRealizeNode.html" title="A block realization node represents execution of the block at the binding values. ...">Blo [...]
+<tr id="row_107_220_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferRealize.html" target="_self">tvm::tir::BufferRealize</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferRealizeNode.html" title="Annotate the region where the buffer need to be read and write in the body. We only nee [...]
+<tr id="row_107_220_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1BufferStore.html" target="_self">tvm::tir::BufferStore</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1BufferStoreNode.html" title="Store value to the high dimension buffer. ">BufferStoreNode</a> </td></tr>
+<tr id="row_107_220_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Evaluate.html" target="_self">tvm::tir::Evaluate</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1EvaluateNode.html" title="Evaluates an expression. This is mostly used for putting a Call node into Stmt. ">EvaluateNode</a> </td></tr>
+<tr id="row_107_220_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1For.html" target="_self">tvm::tir::For</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ForNode.html" title="A for loop, with poissible type annotations. ">ForNode</a> </td></tr>
+<tr id="row_107_220_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1IfThenElse.html" target="_self">tvm::tir::IfThenElse</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1IfThenElseNode.html" title="IfThenElse statment. ">IfThenElseNode</a> </td></tr>
+<tr id="row_107_220_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1LetStmt.html" target="_self">tvm::tir::LetStmt</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1LetStmtNode.html" title="Let binding, bind var to value, then run body. ">LetStmtNode</a> </td></tr>
+<tr id="row_107_220_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Prefetch.html" target="_self">tvm::tir::Prefetch</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1PrefetchNode.html" title="A prefetch hint for a buffer. ">PrefetchNode</a> </td></tr>
+<tr id="row_107_220_13_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProducerRealize.html" target="_self">tvm::tir::ProducerRealize</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ProducerRealizeNode.html" title="Annotate the bounds where the data produced by the producer need to be written a [...]
+<tr id="row_107_220_14_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1ProducerStore.html" target="_self">tvm::tir::ProducerStore</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1ProducerStoreNode.html" title="Store value into mult-dimensional array that will be read by the consumer of the produ [...]
+<tr id="row_107_220_15_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1SeqStmt.html" target="_self">tvm::tir::SeqStmt</a></td><td class="desc">Sequence statement </td></tr>
+<tr id="row_107_220_16_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Store.html" target="_self">tvm::tir::Store</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1StoreNode.html" title="Store value to the buffer. ">StoreNode</a> </td></tr>
+<tr id="row_107_220_17_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1While.html" target="_self">tvm::tir::While</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1WhileNode.html" title="A While loop. ">WhileNode</a> </td></tr>
+<tr id="row_107_221_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1StmtSRef.html" target="_self">tvm::tir::StmtSRef</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1StmtSRefNode.html" title="An object that refers to schedulable elements (block/for-loop) in TensorIR, aka &quot;sref&quot;. ">Stmt [...]
+<tr id="row_107_222_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1TensorIntrin.html" target="_self">tvm::tir::TensorIntrin</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1TensorIntrinNode.html" title="Tensor intrinsics for tensorization. ">TensorIntrinNode</a> </td></tr>
+<tr id="row_107_223_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1Trace.html" target="_self">tvm::tir::Trace</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tir_1_1TraceNode.html" title="An execution trace of a scheduling program. ">TraceNode</a> </td></tr>
+<tr id="row_107_224_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1usmp_1_1AllocatedPoolInfo.html" target="_self">tvm::tir::usmp::AllocatedPoolInfo</a></td><td class="desc"></td></tr>
+<tr id="row_107_225_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1usmp_1_1BufferInfo.html" target="_self">tvm::tir::usmp::BufferInfo</a></td><td class="desc"></td></tr>
+<tr id="row_107_226_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1usmp_1_1BufferInfoAnalysis.html" target="_self">tvm::tir::usmp::BufferInfoAnalysis</a></td><td class="desc"></td></tr>
+<tr id="row_107_227_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tir_1_1usmp_1_1PoolAllocation.html" target="_self">tvm::tir::usmp::PoolAllocation</a></td><td class="desc"></td></tr>
+<tr id="row_107_228_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_228_" class="arrow" onclick="toggleFolder('107_228_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1transform_1_1Pass.html" target="_self">tvm::transform::Pass</a></td><td class="desc"></td></tr>
+<tr id="row_107_228_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1transform_1_1Sequential.html" target="_self">tvm::transform::Sequential</a></td><td class="desc"></td></tr>
+<tr id="row_107_229_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1transform_1_1PassContext.html" target="_self">tvm::transform::PassContext</a></td><td class="desc"><a class="el" href="classtvm_1_1transform_1_1PassContext.html" title="PassContext that is used to configure the pass behavior. ">PassContext</a> that is used to configure t [...]
+<tr id="row_107_230_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1transform_1_1PassInfo.html" target="_self">tvm::transform::PassInfo</a></td><td class="desc">Managed reference class for <a class="el" href="classtvm_1_1transform_1_1PassInfoNode.html" title="Meta data that will be used to help optimization and analysis. ">PassInfoNode</ [...]
+<tr id="row_107_231_" class="even" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_107_231_" class="arrow" onclick="toggleFolder('107_231_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1Type.html" target="_self">tvm::Type</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeNode.html" title="Type is the base type of all types. ">TypeNode</ [...]
+<tr id="row_107_231_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1BaseTensorType.html" target="_self">tvm::BaseTensorType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1BaseTensorTypeNode.html" title="Base of all Tensor types This container can hold TensorType or GenericTensorType. ...">BaseTensorTypeNo [...]
+<tr id="row_107_231_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1FuncType.html" target="_self">tvm::FuncType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1FuncTypeNode.html" title="Function type. ">FuncTypeNode</a> </td></tr>
+<tr id="row_107_231_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1GlobalTypeVar.html" target="_self">tvm::GlobalTypeVar</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1GlobalTypeVarNode.html" title="A global type variable that is used for defining new types or type aliases. ">GlobalTypeVarNode</a> </td></tr>
+<tr id="row_107_231_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1IncompleteType.html" target="_self">tvm::IncompleteType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1IncompleteTypeNode.html" title="Intermediate values that is used to indicate incomplete type during type inference. ">IncompleteTypeNod [...]
+<tr id="row_107_231_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1PointerType.html" target="_self">tvm::PointerType</a></td><td class="desc"></td></tr>
+<tr id="row_107_231_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1PrimType.html" target="_self">tvm::PrimType</a></td><td class="desc"></td></tr>
+<tr id="row_107_231_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1RelayRefType.html" target="_self">tvm::RelayRefType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1RelayRefTypeNode.html" title="Reference Type High-level Relay IR. ">RelayRefTypeNode</a> </td></tr>
+<tr id="row_107_231_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TensorType.html" target="_self">tvm::TensorType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TensorTypeNode.html" title="This is the most commonly used type in relay. TensorType have a fixed dimension, data type...">TensorTypeNode</a> < [...]
+<tr id="row_107_231_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TupleType.html" target="_self">tvm::TupleType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TupleTypeNode.html" title="The type of tuple values. ">TupleTypeNode</a> </td></tr>
+<tr id="row_107_231_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeCall.html" target="_self">tvm::TypeCall</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeCallNode.html" title="Type function application. ">TypeCallNode</a> </td></tr>
+<tr id="row_107_231_10_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_107_231_10_" class="arrow" onclick="toggleFolder('107_231_10_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeConstraint.html" target="_self">tvm::TypeConstraint</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeConstraintNode.html" title="Potential [...]
+<tr id="row_107_231_10_0_" class="even" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeRelation.html" target="_self">tvm::TypeRelation</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeRelationNode.html" title="User defined type relation, it is an input-output relation on types. ">TypeRelationNode</a> </td></tr>
+<tr id="row_107_231_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeData.html" target="_self">tvm::TypeData</a></td><td class="desc">Stores all data for an Algebraic Data <a class="el" href="classtvm_1_1Type.html" title="Managed reference to TypeNode. ">Type</a> (ADT) </td></tr>
+<tr id="row_107_231_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeVar.html" target="_self">tvm::TypeVar</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1TypeVarNode.html" title="Type parameter in functions. ">TypeVarNode</a> </td></tr>
+<tr id="row_107_232_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html" target="_self">tvm::TypedEnvFunc&lt; R(Args...)&gt;</a></td><td class="desc">A typed version of <a class="el" href="classtvm_1_1EnvFunc.html" title="Managed reference to EnvFuncNode. ">EnvFunc</a>. It is backed by a GlobalFuncNo [...]
+<tr id="row_107_233_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1TypeReporter.html" target="_self">tvm::TypeReporter</a></td><td class="desc">Container class of <a class="el" href="classtvm_1_1TypeReporter.html" title="Container class of TypeReporter. ">TypeReporter</a> </td></tr>
+<tr id="row_107_234_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1VirtualDevice.html" target="_self">tvm::VirtualDevice</a></td><td class="desc">Managed reference class to <code><a class="el" href="classtvm_1_1VirtualDeviceNode.html" title="Describes at compile time the constraints on where data is to be stored at runtime down to the ( [...]
+<tr id="row_107_235_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1WorkspaceMemoryPools.html" target="_self">tvm::WorkspaceMemoryPools</a></td><td class="desc"></td></tr>
 <tr id="row_108_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1ObjectTypeChecker.html" target="_self">tvm::runtime::ObjectTypeChecker&lt; T &gt;</a></td><td class="desc"><a class="el" href="classtvm_1_1Type.html" title="Managed reference to TypeNode. ">Type</a> traits for runtime type check during FFI conversion </td></tr>
 <tr id="row_109_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1ObjectTypeChecker_3_01Array_3_01T_01_4_01_4.html" target="_self">tvm::runtime::ObjectTypeChecker&lt; Array&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_110_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1runtime_1_1ObjectTypeChecker_3_01Map_3_01K_00_01V_01_4_01_4.html" target="_self">tvm::runtime::ObjectTypeChecker&lt; Map&lt; K, V &gt; &gt;</a></td><td class="desc"></td></tr>
@@ -1223,8 +1222,8 @@ This inheritance list is sorted roughly, but not completely, alphabetically:</di
 <tr id="row_122_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1relay_1_1PatternVisitor.html" target="_self">tvm::relay::PatternVisitor</a></td><td class="desc">A simple visitor wrapper around <a class="el" href="classtvm_1_1relay_1_1PatternFunctor.html" title="A dynamical functor on ADT patterns that dispatches on its first argument. You can use t [...]
 <tr id="row_123_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1profiling_1_1Profiler.html" target="_self">tvm::runtime::profiling::Profiler</a></td><td class="desc"></td></tr>
 <tr id="row_124_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1ReflectionVTable.html" target="_self">tvm::ReflectionVTable</a></td><td class="desc">Virtual function table to support IR/AST node reflection </td></tr>
-<tr id="row_125_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Registry.html" target="_self">tvm::runtime::Registry</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Registry.html" title="Registry for global function. ">Registry</a> for global function </td></tr>
-<tr id="row_126_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1ReflectionVTable_1_1Registry.html" target="_self">tvm::ReflectionVTable::Registry</a></td><td class="desc"><a class="el" href="classtvm_1_1ReflectionVTable_1_1Registry.html" title="Registry of a reflection table. ">Registry</a> of a reflection table </td></tr>
+<tr id="row_125_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1ReflectionVTable_1_1Registry.html" target="_self">tvm::ReflectionVTable::Registry</a></td><td class="desc"><a class="el" href="classtvm_1_1ReflectionVTable_1_1Registry.html" title="Registry of a reflection table. ">Registry</a> of a reflection table </td></tr>
+<tr id="row_126_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1Registry.html" target="_self">tvm::runtime::Registry</a></td><td class="desc"><a class="el" href="classtvm_1_1runtime_1_1Registry.html" title="Registry for global function. ">Registry</a> for global function </td></tr>
 <tr id="row_127_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1ReprPrinter.html" target="_self">tvm::ReprPrinter</a></td><td class="desc">A printer class to print the AST/IR nodes </td></tr>
 <tr id="row_128_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1runtime_1_1ReverseIterAdapter.html" target="_self">tvm::runtime::ReverseIterAdapter&lt; Converter, TIter &gt;</a></td><td class="desc">Iterator adapter that adapts TIter to return another type </td></tr>
 <tr id="row_129_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1arith_1_1RewriteSimplifier.html" target="_self">tvm::arith::RewriteSimplifier</a></td><td class="desc">Rewrite-rule based simplifier </td></tr>
diff --git a/docs/reference/api/doxygen/inherit_graph_10.svg b/docs/reference/api/doxygen/inherit_graph_10.svg
index 652640a35..23ae2ea0d 100644
--- a/docs/reference/api/doxygen/inherit_graph_10.svg
+++ b/docs/reference/api/doxygen/inherit_graph_10.svg
@@ -9,9 +9,9 @@
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 62)">
 <title>Graphical Class Hierarchy</title>
 <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-62 186,-62 186,4 -4,4"/>
-<!-- Node1207 -->
+<!-- Node1206 -->
 <g id="node1" class="node">
-<title>Node1207</title>
+<title>Node1206</title>
 <polygon fill="#ffffff" stroke="#bfbfbf" points="0,-19.5 0,-38.5 40,-38.5 40,-19.5 0,-19.5"/>
 <text text-anchor="middle" x="20" y="-26.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Error</text>
 </g>
@@ -24,24 +24,24 @@
 </a>
 </g>
 </g>
-<!-- Node1207&#45;&gt;Node0 -->
+<!-- Node1206&#45;&gt;Node0 -->
 <g id="edge1" class="edge">
-<title>Node1207&#45;&gt;Node0</title>
+<title>Node1206&#45;&gt;Node0</title>
 <path fill="none" stroke="#191970" d="M50.1726,-34.2594C61.6171,-36.2544 74.8623,-38.5631 87.1902,-40.712"/>
 <polygon fill="#191970" stroke="#191970" points="50.6991,-30.7985 40.2466,-32.5292 49.497,-37.6945 50.6991,-30.7985"/>
 </g>
-<!-- Node1209 -->
+<!-- Node1208 -->
 <g id="node3" class="node">
-<title>Node1209</title>
+<title>Node1208</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1CompileError.html" target="_top" xlink:title="Custom Error class to be thrown during compilation. ">
 <polygon fill="#ffffff" stroke="#000000" points="76,-.5 76,-19.5 182,-19.5 182,-.5 76,-.5"/>
 <text text-anchor="middle" x="129" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::CompileError</text>
 </a>
 </g>
 </g>
-<!-- Node1207&#45;&gt;Node1209 -->
+<!-- Node1206&#45;&gt;Node1208 -->
 <g id="edge2" class="edge">
-<title>Node1207&#45;&gt;Node1209</title>
+<title>Node1206&#45;&gt;Node1208</title>
 <path fill="none" stroke="#191970" d="M50.1333,-23.7474C58.0955,-22.3595 66.9315,-20.8193 75.7249,-19.2865"/>
 <polygon fill="#191970" stroke="#191970" points="49.497,-20.3055 40.2466,-25.4708 50.6991,-27.2015 49.497,-20.3055"/>
 </g>
diff --git a/docs/reference/api/doxygen/inherit_graph_107.svg b/docs/reference/api/doxygen/inherit_graph_107.svg
index 3641feff0..c04c5caad 100644
--- a/docs/reference/api/doxygen/inherit_graph_107.svg
+++ b/docs/reference/api/doxygen/inherit_graph_107.svg
@@ -9,9 +9,9 @@
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 11013)">
 <title>Graphical Class Hierarchy</title>
 <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-11013 1069,-11013 1069,4 -4,4"/>
-<!-- Node1217 -->
+<!-- Node1216 -->
 <g id="node1" class="node">
-<title>Node1217</title>
+<title>Node1216</title>
 <g id="a_node1"><a xlink:href="classtvm_1_1runtime_1_1NDArray_1_1ContainerBase.html" target="_top" xlink:title="The container base structure contains all the fields except for the Object header. ">
 <polygon fill="#ffffff" stroke="#000000" points="20,-9527 20,-9557 148,-9557 148,-9527 20,-9527"/>
 <text text-anchor="start" x="28" y="-9545" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::NDArray</text>
@@ -29,15 +29,15 @@
 </a>
 </g>
 </g>
-<!-- Node1217&#45;&gt;Node499 -->
+<!-- Node1216&#45;&gt;Node499 -->
 <g id="edge1" class="edge">
-<title>Node1217&#45;&gt;Node499</title>
+<title>Node1216&#45;&gt;Node499</title>
 <path fill="none" stroke="#191970" d="M158.2796,-9541.3278C184.9735,-9541.0862 214.8383,-9540.8159 240.6206,-9540.5826"/>
 <polygon fill="#191970" stroke="#191970" points="158.1871,-9537.8284 148.2192,-9541.4188 158.2505,-9544.8281 158.1871,-9537.8284"/>
 </g>
-<!-- Node1164 -->
+<!-- Node1163 -->
 <g id="node3" class="node">
-<title>Node1164</title>
+<title>Node1163</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1InplaceArrayBase.html" target="_top" xlink:title="Base template for classes with array like memory layout. ">
 <polygon fill="#ffffff" stroke="#000000" points="222.5,-2352 222.5,-2382 387.5,-2382 387.5,-2352 222.5,-2352"/>
 <text text-anchor="start" x="230.5" y="-2370" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::InplaceArray</text>
@@ -54,15 +54,15 @@
 </a>
 </g>
 </g>
-<!-- Node1164&#45;&gt;Node493 -->
+<!-- Node1163&#45;&gt;Node493 -->
 <g id="edge2" class="edge">
-<title>Node1164&#45;&gt;Node493</title>
+<title>Node1163&#45;&gt;Node493</title>
 <path fill="none" stroke="#191970" d="M396.3151,-2351.0394C399.8638,-2348.4209 403.1261,-2345.4247 406,-2342 481.4571,-2252.082 364.3105,-1902.9963 442,-1815 446.7938,-1809.5702 452.639,-1805.4107 459.0615,-1802.2508"/>
 <polygon fill="#191970" stroke="#191970" points="394.2028,-2348.2315 387.5631,-2356.4878 397.9023,-2354.1741 394.2028,-2348.2315"/>
 </g>
-<!-- Node1163 -->
+<!-- Node1162 -->
 <g id="node5" class="node">
-<title>Node1163</title>
+<title>Node1162</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1InplaceArrayBase.html" target="_top" xlink:title="tvm::runtime::InplaceArray\lBase\&lt; ADTObj, ObjectRef \&gt;">
 <polygon fill="#ffffff" stroke="#000000" points="7.5,-9478 7.5,-9508 160.5,-9508 160.5,-9478 7.5,-9478"/>
 <text text-anchor="start" x="15.5" y="-9496" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::InplaceArray</text>
@@ -79,15 +79,15 @@
 </a>
 </g>
 </g>
-<!-- Node1163&#45;&gt;Node486 -->
+<!-- Node1162&#45;&gt;Node486 -->
 <g id="edge3" class="edge">
-<title>Node1163&#45;&gt;Node486</title>
+<title>Node1162&#45;&gt;Node486</title>
 <path fill="none" stroke="#191970" d="M170.9456,-9493C195.1707,-9493 220.9797,-9493 243.4174,-9493"/>
 <polygon fill="#191970" stroke="#191970" points="170.6749,-9489.5001 160.6748,-9493 170.6748,-9496.5001 170.6749,-9489.5001"/>
 </g>
-<!-- Node1162 -->
+<!-- Node1161 -->
 <g id="node7" class="node">
-<title>Node1162</title>
+<title>Node1161</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1InplaceArrayBase.html" target="_top" xlink:title="tvm::runtime::InplaceArray\lBase\&lt; ArrayNode, ObjectRef \&gt;">
 <polygon fill="#ffffff" stroke="#000000" points="0,-9429 0,-9459 168,-9459 168,-9429 0,-9429"/>
 <text text-anchor="start" x="8" y="-9447" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::InplaceArray</text>
@@ -104,9 +104,9 @@
 </a>
 </g>
 </g>
-<!-- Node1162&#45;&gt;Node487 -->
+<!-- Node1161&#45;&gt;Node487 -->
 <g id="edge4" class="edge">
-<title>Node1162&#45;&gt;Node487</title>
+<title>Node1161&#45;&gt;Node487</title>
 <path fill="none" stroke="#191970" d="M178.2093,-9448.6892C197.5291,-9449.6508 217.5282,-9450.6462 235.774,-9451.5544"/>
 <polygon fill="#191970" stroke="#191970" points="178.3427,-9445.1916 168.1811,-9448.19 177.9947,-9452.1829 178.3427,-9445.1916"/>
 </g>
diff --git a/docs/reference/api/doxygen/inherit_graph_116.svg b/docs/reference/api/doxygen/inherit_graph_116.svg
index 3442c70a3..f88ea660f 100644
--- a/docs/reference/api/doxygen/inherit_graph_116.svg
+++ b/docs/reference/api/doxygen/inherit_graph_116.svg
@@ -4,17 +4,17 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: Graphical Class Hierarchy Pages: 1 -->
-<svg width="971pt" height="11318pt"
- viewBox="0.00 0.00 971.00 11317.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 11313.5)">
+<svg width="971pt" height="11269pt"
+ viewBox="0.00 0.00 971.00 11268.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 11264.5)">
 <title>Graphical Class Hierarchy</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-11313.5 967,-11313.5 967,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-11264.5 967,-11264.5 967,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
 <g id="a_node1"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-5107.5 0,-5126.5 134,-5126.5 134,-5107.5 0,-5107.5"/>
-<text text-anchor="middle" x="67" y="-5114.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polygon fill="#ffffff" stroke="#000000" points="0,-5082.5 0,-5101.5 134,-5101.5 134,-5082.5 0,-5082.5"/>
+<text text-anchor="middle" x="67" y="-5089.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
 </a>
 </g>
 </g>
@@ -22,6081 +22,6065 @@
 <g id="node2" class="node">
 <title>Node1</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; Range \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-11279 237,-11309 350,-11309 350,-11279 237,-11279"/>
-<text text-anchor="start" x="245" y="-11297" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-11286" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; Range &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-11230 237,-11260 350,-11260 350,-11230 237,-11230"/>
+<text text-anchor="start" x="245" y="-11248" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-11237" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; Range &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node0&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M67.1599,-5136.982C70.2245,-5517.5289 116.9197,-11206.6984 170,-11270 186.0692,-11289.1635 212.4697,-11295.9858 236.7453,-11297.6728"/>
-<polygon fill="#191970" stroke="#191970" points="70.659,-5136.8475 67.0787,-5126.876 63.6592,-5136.9038 70.659,-5136.8475"/>
+<path fill="none" stroke="#191970" d="M67.1606,-5111.9041C70.2382,-5490.9668 117.1246,-11157.947 170,-11221 186.0698,-11240.163 212.4704,-11246.9852 236.7459,-11248.6724"/>
+<polygon fill="#191970" stroke="#191970" points="70.66,-5111.8088 67.079,-5101.8375 63.6602,-5111.8655 70.66,-5111.8088"/>
 </g>
 <!-- Node2 -->
 <g id="node3" class="node">
 <title>Node2</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; Region \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-11230 237,-11260 350,-11260 350,-11230 237,-11230"/>
-<text text-anchor="start" x="245" y="-11248" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-11237" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; Region &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-11181 237,-11211 350,-11211 350,-11181 237,-11181"/>
+<text text-anchor="start" x="245" y="-11199" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-11188" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; Region &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node0&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M67.1613,-5136.8229C70.2525,-5514.3395 117.3381,-11158.2059 170,-11221 186.0705,-11240.1624 212.4712,-11246.9846 236.7465,-11248.6719"/>
-<polygon fill="#191970" stroke="#191970" points="70.661,-5136.7684 67.0794,-5126.7974 63.6613,-5136.8256 70.661,-5136.7684"/>
+<path fill="none" stroke="#191970" d="M67.1643,-5112.0242C70.2895,-5490.5504 117.5559,-11109.4699 170,-11172 186.0711,-11191.1619 212.4719,-11197.984 236.7471,-11199.6714"/>
+<polygon fill="#191970" stroke="#191970" points="70.6621,-5111.7296 67.0797,-5101.7588 63.6623,-5111.7873 70.6621,-5111.7296"/>
 </g>
 <!-- Node3 -->
 <g id="node4" class="node">
 <title>Node3</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::arith::IterSplitExpr \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="217,-11181 217,-11211 370,-11211 370,-11181 217,-11181"/>
-<text text-anchor="start" x="225" y="-11199" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-11188" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::arith::IterSplitExpr &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="217,-11132 217,-11162 370,-11162 370,-11132 217,-11132"/>
+<text text-anchor="start" x="225" y="-11150" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-11139" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::arith::IterSplitExpr &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node0&#45;&gt;Node3</title>
-<path fill="none" stroke="#191970" d="M67.165,-5136.9419C70.3039,-5513.9117 117.7693,-11109.7288 170,-11172 181.7205,-11185.9736 198.9341,-11193.3849 216.8105,-11197.0281"/>
-<polygon fill="#191970" stroke="#191970" points="70.6631,-5136.6893 67.0801,-5126.7187 63.6634,-5136.7475 70.6631,-5136.6893"/>
+<path fill="none" stroke="#191970" d="M67.1657,-5111.8628C70.3177,-5487.3386 117.9742,-11060.9773 170,-11123 181.7209,-11136.9732 198.9347,-11144.3843 216.8112,-11148.0276"/>
+<polygon fill="#191970" stroke="#191970" points="70.6641,-5111.6505 67.0804,-5101.6802 63.6644,-5111.7092 70.6641,-5111.6505"/>
 </g>
 <!-- Node4 -->
 <g id="node5" class="node">
 <title>Node4</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::AttrFieldInfo \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="231.5,-11132 231.5,-11162 355.5,-11162 355.5,-11132 231.5,-11132"/>
-<text text-anchor="start" x="239.5" y="-11150" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-11139" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::AttrFieldInfo &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="231.5,-11083 231.5,-11113 355.5,-11113 355.5,-11083 231.5,-11083"/>
+<text text-anchor="start" x="239.5" y="-11101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-11090" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::AttrFieldInfo &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node0&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M67.1673,-5136.7765C70.3489,-5510.6209 118.4371,-11060.0452 170,-11122 184.8336,-11139.8232 208.557,-11147.1727 231.265,-11149.6664"/>
-<polygon fill="#191970" stroke="#191970" points="70.6661,-5136.608 67.0812,-5126.6381 63.6663,-5136.6675 70.6661,-5136.608"/>
+<path fill="none" stroke="#191970" d="M67.168,-5111.6975C70.3626,-5484.0478 118.641,-11011.2945 170,-11073 184.8343,-11090.8227 208.5577,-11098.1721 231.2656,-11100.6659"/>
+<polygon fill="#191970" stroke="#191970" points="70.6671,-5111.5693 67.0816,-5101.5996 63.6673,-5111.6292 70.6671,-5111.5693"/>
 </g>
 <!-- Node5 -->
 <g id="node6" class="node">
 <title>Node5</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::auto_scheduler\l::Iterator \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-11071.5 229.5,-11112.5 357.5,-11112.5 357.5,-11071.5 229.5,-11071.5"/>
-<text text-anchor="start" x="237.5" y="-11100.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="237.5" y="-11089.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::auto_scheduler</text>
-<text text-anchor="middle" x="293.5" y="-11078.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::Iterator &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-11022.5 229.5,-11063.5 357.5,-11063.5 357.5,-11022.5 229.5,-11022.5"/>
+<text text-anchor="start" x="237.5" y="-11051.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="237.5" y="-11040.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::auto_scheduler</text>
+<text text-anchor="middle" x="293.5" y="-11029.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::Iterator &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node5 -->
 <g id="edge5" class="edge">
 <title>Node0&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M67.1731,-5136.5756C70.4635,-5506.6226 120.139,-10999.6954 170,-11062 184.269,-11079.8301 207.187,-11088.1466 229.4281,-11091.7276"/>
-<polygon fill="#191970" stroke="#191970" points="70.6727,-5136.5087 67.084,-5126.5402 63.673,-5136.5709 70.6727,-5136.5087"/>
+<path fill="none" stroke="#191970" d="M67.0048,-5111.836C67.1344,-5481.2806 70.7257,-10888.9591 170,-11013 184.2697,-11030.8296 207.1878,-11039.146 229.4288,-11042.7271"/>
+<polygon fill="#191970" stroke="#191970" points="70.5049,-5111.7897 67.0018,-5101.7908 63.5049,-5111.7919 70.5049,-5111.7897"/>
 </g>
 <!-- Node6 -->
 <g id="node7" class="node">
 <title>Node6</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::auto_scheduler\l::Stage \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-11011.5 229.5,-11052.5 357.5,-11052.5 357.5,-11011.5 229.5,-11011.5"/>
-<text text-anchor="start" x="237.5" y="-11040.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="237.5" y="-11029.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::auto_scheduler</text>
-<text text-anchor="middle" x="293.5" y="-11018.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::Stage &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-10962.5 229.5,-11003.5 357.5,-11003.5 357.5,-10962.5 229.5,-10962.5"/>
+<text text-anchor="start" x="237.5" y="-10991.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="237.5" y="-10980.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::auto_scheduler</text>
+<text text-anchor="middle" x="293.5" y="-10969.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::Stage &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node6 -->
 <g id="edge6" class="edge">
 <title>Node0&#45;&gt;Node6</title>
-<path fill="none" stroke="#191970" d="M67.007,-5136.9881C67.1772,-5506.566 71.3469,-10878.7488 170,-11002 184.2706,-11019.8288 207.1889,-11028.1451 229.4298,-11031.7263"/>
-<polygon fill="#191970" stroke="#191970" points="70.507,-5136.7298 67.0028,-5126.7313 63.507,-5136.7328 70.507,-5136.7298"/>
+<path fill="none" stroke="#191970" d="M67.0085,-5111.9066C67.2046,-5479.9775 71.7447,-10830.2548 170,-10953 184.2712,-10970.8283 207.1897,-10979.1445 229.4305,-10982.7257"/>
+<polygon fill="#191970" stroke="#191970" points="70.5085,-5111.6899 67.0035,-5101.6916 63.5085,-5111.6934 70.5085,-5111.6899"/>
 </g>
 <!-- Node7 -->
 <g id="node8" class="node">
 <title>Node7</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::auto_scheduler\l::Step \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-10951.5 229.5,-10992.5 357.5,-10992.5 357.5,-10951.5 229.5,-10951.5"/>
-<text text-anchor="start" x="237.5" y="-10980.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="237.5" y="-10969.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::auto_scheduler</text>
-<text text-anchor="middle" x="293.5" y="-10958.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::Step &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-10902.5 229.5,-10943.5 357.5,-10943.5 357.5,-10902.5 229.5,-10902.5"/>
+<text text-anchor="start" x="237.5" y="-10931.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="237.5" y="-10920.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::auto_scheduler</text>
+<text text-anchor="middle" x="293.5" y="-10909.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::Step &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node7 -->
 <g id="edge7" class="edge">
 <title>Node0&#45;&gt;Node7</title>
-<path fill="none" stroke="#191970" d="M67.0106,-5136.7844C67.2456,-5502.5948 72.3414,-10820.0138 170,-10942 184.2722,-10959.8275 207.1908,-10968.1435 229.4315,-10971.7249"/>
-<polygon fill="#191970" stroke="#191970" points="70.5106,-5136.63 67.0045,-5126.6321 63.5106,-5136.6342 70.5106,-5136.63"/>
+<path fill="none" stroke="#191970" d="M67.012,-5111.7029C67.273,-5476.0063 72.7392,-10771.5198 170,-10893 184.2729,-10910.827 207.1916,-10919.1429 229.4322,-10922.7244"/>
+<polygon fill="#191970" stroke="#191970" points="70.512,-5111.5901 67.0052,-5101.5924 63.512,-5111.5948 70.512,-5111.5901"/>
 </g>
 <!-- Node8 -->
 <g id="node9" class="node">
 <title>Node8</title>
 <g id="a_node9"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::Constructor \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="233,-10902 233,-10932 354,-10932 354,-10902 233,-10902"/>
-<text text-anchor="start" x="241" y="-10920" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10909" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Constructor &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="233,-10853 233,-10883 354,-10883 354,-10853 233,-10853"/>
+<text text-anchor="start" x="241" y="-10871" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-10860" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Constructor &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node8 -->
 <g id="edge8" class="edge">
 <title>Node0&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M67.1805,-5136.8368C70.5385,-5503.5921 120.1881,-10833.662 170,-10893 185.237,-10911.151 209.7427,-10918.2273 232.9232,-10920.356"/>
-<polygon fill="#191970" stroke="#191970" points="70.6789,-5136.6257 67.0876,-5126.6581 63.6792,-5136.6896 70.6789,-5136.6257"/>
+<path fill="none" stroke="#191970" d="M67.0051,-5111.5445C67.1386,-5472.9193 70.7856,-10725.8207 170,-10844 185.2377,-10862.1504 209.7434,-10869.2267 232.9239,-10871.3554"/>
+<polygon fill="#191970" stroke="#191970" points="70.5051,-5111.5142 67.0018,-5101.5154 63.5051,-5111.5165 70.5051,-5111.5142"/>
 </g>
 <!-- Node9 -->
 <g id="node10" class="node">
 <title>Node9</title>
 <g id="a_node10"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::Diagnostic \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="235.5,-10853 235.5,-10883 351.5,-10883 351.5,-10853 235.5,-10853"/>
-<text text-anchor="start" x="243.5" y="-10871" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10860" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Diagnostic &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="235.5,-10804 235.5,-10834 351.5,-10834 351.5,-10804 235.5,-10804"/>
+<text text-anchor="start" x="243.5" y="-10822" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-10811" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Diagnostic &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node9 -->
 <g id="edge9" class="edge">
 <title>Node0&#45;&gt;Node9</title>
-<path fill="none" stroke="#191970" d="M67.0068,-5137.0032C67.172,-5501.4953 71.2615,-10726.3969 170,-10844 185.8002,-10862.819 211.5637,-10869.7327 235.4824,-10871.5704"/>
-<polygon fill="#191970" stroke="#191970" points="70.5069,-5136.86 67.0027,-5126.8614 63.5069,-5136.8629 70.5069,-5136.86"/>
+<path fill="none" stroke="#191970" d="M67.0083,-5111.9194C67.2005,-5474.8843 71.6707,-10677.8933 170,-10795 185.8009,-10813.8184 211.5645,-10820.732 235.4831,-10822.5699"/>
+<polygon fill="#191970" stroke="#191970" points="70.5084,-5111.8184 67.0034,-5101.8201 63.5084,-5111.8218 70.5084,-5111.8184"/>
 </g>
 <!-- Node10 -->
 <g id="node11" class="node">
 <title>Node10</title>
 <g id="a_node11"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::FloatImm \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-10804 237,-10834 350,-10834 350,-10804 237,-10804"/>
-<text text-anchor="start" x="245" y="-10822" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10811" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::FloatImm &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-10755 237,-10785 350,-10785 350,-10755 237,-10755"/>
+<text text-anchor="start" x="245" y="-10773" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-10762" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::FloatImm &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node10 -->
 <g id="edge10" class="edge">
 <title>Node0&#45;&gt;Node10</title>
-<path fill="none" stroke="#191970" d="M67.0099,-5136.8321C67.2303,-5498.2061 72.097,-10678.4104 170,-10795 186.0826,-10814.1523 212.4846,-10820.9733 236.7576,-10822.6625"/>
-<polygon fill="#191970" stroke="#191970" points="70.5099,-5136.7751 67.0042,-5126.7771 63.5099,-5136.7791 70.5099,-5136.7751"/>
+<path fill="none" stroke="#191970" d="M67.0114,-5111.7483C67.2589,-5471.5951 72.5062,-10629.9067 170,-10746 186.0833,-10765.1516 212.4854,-10771.9727 236.7583,-10773.662"/>
+<polygon fill="#191970" stroke="#191970" points="70.5115,-5111.7335 67.005,-5101.7357 63.5115,-5111.738 70.5115,-5111.7335"/>
 </g>
 <!-- Node11 -->
 <g id="node12" class="node">
 <title>Node11</title>
 <g id="a_node12"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::instrument::PassInstrument \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="194,-10755 194,-10785 393,-10785 393,-10755 194,-10755"/>
-<text text-anchor="start" x="202" y="-10773" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10762" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::instrument::PassInstrument &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="194,-10706 194,-10736 393,-10736 393,-10706 194,-10706"/>
+<text text-anchor="start" x="202" y="-10724" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-10713" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::instrument::PassInstrument &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node11 -->
 <g id="edge11" class="edge">
 <title>Node0&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M67.0131,-5136.9271C67.2914,-5497.4514 72.9564,-10630.4523 170,-10746 176.532,-10753.7775 184.7657,-10759.5214 193.8674,-10763.7139"/>
-<polygon fill="#191970" stroke="#191970" points="70.5131,-5136.6901 67.0057,-5126.6927 63.5131,-5136.6953 70.5131,-5136.6901"/>
+<path fill="none" stroke="#191970" d="M67.0146,-5111.8421C67.3201,-5470.8295 73.3655,-10581.9486 170,-10697 176.5323,-10704.7772 184.7662,-10710.521 193.868,-10714.7134"/>
+<polygon fill="#191970" stroke="#191970" points="70.5146,-5111.6485 67.0065,-5101.6514 63.5146,-5111.6542 70.5146,-5111.6485"/>
 </g>
 <!-- Node12 -->
 <g id="node13" class="node">
 <title>Node12</title>
 <g id="a_node13"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::Integer \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-10706 237,-10736 350,-10736 350,-10706 237,-10706"/>
-<text text-anchor="start" x="245" y="-10724" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10713" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Integer &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-10657 237,-10687 350,-10687 350,-10657 237,-10657"/>
+<text text-anchor="start" x="245" y="-10675" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-10664" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Integer &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node12 -->
 <g id="edge12" class="edge">
 <title>Node0&#45;&gt;Node12</title>
-<path fill="none" stroke="#191970" d="M67.0162,-5136.7536C67.3501,-5494.1401 73.7917,-10582.4656 170,-10697 186.0856,-10716.1497 212.4879,-10722.9705 236.7604,-10724.6602"/>
-<polygon fill="#191970" stroke="#191970" points="70.5162,-5136.6052 67.0072,-5126.6083 63.5162,-5136.6115 70.5162,-5136.6052"/>
+<path fill="none" stroke="#191970" d="M67.0177,-5111.6687C67.3788,-5467.5183 74.2008,-10533.9618 170,-10648 186.0864,-10667.1491 212.4888,-10673.9698 236.7611,-10675.6596"/>
+<polygon fill="#191970" stroke="#191970" points="70.5177,-5111.5636 67.008,-5101.567 63.5177,-5111.5704 70.5177,-5111.5636"/>
 </g>
 <!-- Node13 -->
 <g id="node14" class="node">
 <title>Node13</title>
 <g id="a_node14"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::IntImm \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-10657 237,-10687 350,-10687 350,-10657 237,-10657"/>
-<text text-anchor="start" x="245" y="-10675" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10664" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::IntImm &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-10608 237,-10638 350,-10638 350,-10608 237,-10608"/>
+<text text-anchor="start" x="245" y="-10626" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-10615" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::IntImm &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node13 -->
 <g id="edge13" class="edge">
 <title>Node0&#45;&gt;Node13</title>
-<path fill="none" stroke="#191970" d="M67.0193,-5136.5802C67.4088,-5490.8288 74.627,-10534.4788 170,-10648 186.0872,-10667.1484 212.4897,-10673.9691 236.7618,-10675.659"/>
-<polygon fill="#191970" stroke="#191970" points="70.5193,-5136.5203 67.0087,-5126.524 63.5194,-5136.5277 70.5193,-5136.5203"/>
+<path fill="none" stroke="#191970" d="M67.0215,-5112.0284C67.4451,-5469.2325 75.0836,-10486.0316 170,-10599 186.088,-10618.1477 212.4905,-10624.9683 236.7626,-10626.6584"/>
+<polygon fill="#191970" stroke="#191970" points="70.5214,-5111.8585 67.0099,-5101.8625 63.5214,-5111.8665 70.5214,-5111.8585"/>
 </g>
 <!-- Node14 -->
 <g id="node15" class="node">
 <title>Node14</title>
 <g id="a_node15"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::IRModule \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-10608 237,-10638 350,-10638 350,-10608 237,-10608"/>
-<text text-anchor="start" x="245" y="-10626" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10615" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::IRModule &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-10559 237,-10589 350,-10589 350,-10559 237,-10559"/>
+<text text-anchor="start" x="245" y="-10577" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-10566" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::IRModule &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node14 -->
 <g id="edge14" class="edge">
 <title>Node0&#45;&gt;Node14</title>
-<path fill="none" stroke="#191970" d="M67.0248,-5136.9324C67.5079,-5492.4257 75.9653,-10485.2018 170,-10598 186.0389,-10617.2393 212.4363,-10624.2696 236.7176,-10626.1635"/>
-<polygon fill="#191970" stroke="#191970" points="70.5248,-5136.8107 67.0116,-5126.8153 63.5248,-5136.8199 70.5248,-5136.8107"/>
+<path fill="none" stroke="#191970" d="M67.0264,-5111.8452C67.5369,-5465.782 76.3722,-10436.6994 170,-10549 186.0397,-10568.2386 212.4371,-10575.2688 236.7183,-10577.1628"/>
+<polygon fill="#191970" stroke="#191970" points="70.5264,-5111.7674 67.0123,-5101.7723 63.5264,-5111.7772 70.5264,-5111.7674"/>
 </g>
 <!-- Node15 -->
 <g id="node16" class="node">
 <title>Node15</title>
 <g id="a_node16"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::meta_schedule\l::ArgInfo \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-10547.5 229.5,-10588.5 357.5,-10588.5 357.5,-10547.5 229.5,-10547.5"/>
-<text text-anchor="start" x="237.5" y="-10576.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="237.5" y="-10565.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule</text>
-<text text-anchor="middle" x="293.5" y="-10554.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ArgInfo &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-10498.5 229.5,-10539.5 357.5,-10539.5 357.5,-10498.5 229.5,-10498.5"/>
+<text text-anchor="start" x="237.5" y="-10527.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="237.5" y="-10516.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule</text>
+<text text-anchor="middle" x="293.5" y="-10505.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ArgInfo &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node15 -->
 <g id="edge15" class="edge">
 <title>Node0&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M67.0369,-5136.7075C67.7349,-5488.1903 79.1511,-10424.6729 170,-10538 184.2839,-10555.8181 207.2048,-10564.1323 229.444,-10567.7149"/>
-<polygon fill="#191970" stroke="#191970" points="70.537,-5136.6977 67.0175,-5126.7045 63.537,-5136.7113 70.537,-5136.6977"/>
+<path fill="none" stroke="#191970" d="M67.039,-5111.8803C67.769,-5463.9733 79.5707,-10376.2061 170,-10489 184.2847,-10506.8175 207.2057,-10515.1316 229.4448,-10518.7143"/>
+<polygon fill="#191970" stroke="#191970" points="70.5386,-5111.6544 67.0183,-5101.6616 63.5386,-5111.6687 70.5386,-5111.6544"/>
 </g>
 <!-- Node16 -->
 <g id="node17" class="node">
 <title>Node16</title>
 <g id="a_node17"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::meta_schedule\l::MeasureCallback \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-10487.5 229.5,-10528.5 357.5,-10528.5 357.5,-10487.5 229.5,-10487.5"/>
-<text text-anchor="start" x="237.5" y="-10516.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="237.5" y="-10505.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule</text>
-<text text-anchor="middle" x="293.5" y="-10494.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::MeasureCallback &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-10438.5 229.5,-10479.5 357.5,-10479.5 357.5,-10438.5 229.5,-10438.5"/>
+<text text-anchor="start" x="237.5" y="-10467.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="237.5" y="-10456.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule</text>
+<text text-anchor="middle" x="293.5" y="-10445.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::MeasureCallback &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node16 -->
 <g id="edge16" class="edge">
 <title>Node0&#45;&gt;Node16</title>
-<path fill="none" stroke="#191970" d="M67.0413,-5136.7477C67.8117,-5486.4925 80.1665,-10365.964 170,-10478 184.2858,-10495.8166 207.2071,-10504.1305 229.446,-10507.7133"/>
-<polygon fill="#191970" stroke="#191970" points="70.541,-5136.5895 67.0194,-5126.5971 63.5411,-5136.6047 70.541,-5136.5895"/>
+<path fill="none" stroke="#191970" d="M67.0428,-5111.6593C67.8402,-5459.8386 80.5637,-10317.4692 170,-10429 184.2866,-10446.816 207.208,-10455.1298 229.4468,-10458.7126"/>
+<polygon fill="#191970" stroke="#191970" points="70.5427,-5111.5463 67.0202,-5101.5542 63.5427,-5111.562 70.5427,-5111.5463"/>
 </g>
 <!-- Node17 -->
 <g id="node18" class="node">
 <title>Node17</title>
 <g id="a_node18"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::meta_schedule\l::Postproc \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-10427.5 229.5,-10468.5 357.5,-10468.5 357.5,-10427.5 229.5,-10427.5"/>
-<text text-anchor="start" x="237.5" y="-10456.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="237.5" y="-10445.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule</text>
-<text text-anchor="middle" x="293.5" y="-10434.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::Postproc &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-10378.5 229.5,-10419.5 357.5,-10419.5 357.5,-10378.5 229.5,-10378.5"/>
+<text text-anchor="start" x="237.5" y="-10407.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="237.5" y="-10396.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule</text>
+<text text-anchor="middle" x="293.5" y="-10385.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::Postproc &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node17 -->
 <g id="edge17" class="edge">
 <title>Node0&#45;&gt;Node17</title>
-<path fill="none" stroke="#191970" d="M67.0464,-5137.0496C67.8962,-5487.1887 81.204,-10307.2825 170,-10418 184.2878,-10435.8151 207.2094,-10444.1287 229.4481,-10447.7116"/>
-<polygon fill="#191970" stroke="#191970" points="70.546,-5136.8539 67.0221,-5126.8623 63.546,-5136.8706 70.546,-5136.8539"/>
+<path fill="none" stroke="#191970" d="M67.048,-5111.9588C67.9251,-5460.513 81.601,-10258.7875 170,-10369 184.2886,-10386.8144 207.2103,-10395.1279 229.4489,-10398.711"/>
+<polygon fill="#191970" stroke="#191970" points="70.5477,-5111.809 67.0229,-5101.8177 63.5477,-5111.8263 70.5477,-5111.809"/>
 </g>
 <!-- Node18 -->
 <g id="node19" class="node">
 <title>Node18</title>
 <g id="a_node19"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::meta_schedule\l::ScheduleRule \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-10367.5 229.5,-10408.5 357.5,-10408.5 357.5,-10367.5 229.5,-10367.5"/>
-<text text-anchor="start" x="237.5" y="-10396.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="237.5" y="-10385.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule</text>
-<text text-anchor="middle" x="293.5" y="-10374.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ScheduleRule &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-10318.5 229.5,-10359.5 357.5,-10359.5 357.5,-10318.5 229.5,-10318.5"/>
+<text text-anchor="start" x="237.5" y="-10347.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="237.5" y="-10336.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule</text>
+<text text-anchor="middle" x="293.5" y="-10325.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ScheduleRule &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node18 -->
 <g id="edge18" class="edge">
 <title>Node0&#45;&gt;Node18</title>
-<path fill="none" stroke="#191970" d="M67.0503,-5136.8227C67.9684,-5482.9994 82.1965,-10248.545 170,-10358 184.2898,-10375.8135 207.2117,-10384.1268 229.4502,-10387.7099"/>
-<polygon fill="#191970" stroke="#191970" points="70.5502,-5136.7415 67.0241,-5126.7507 63.5502,-5136.7598 70.5502,-5136.7415"/>
+<path fill="none" stroke="#191970" d="M67.0519,-5111.7319C67.9972,-5456.3236 82.5935,-10200.05 170,-10309 184.2906,-10326.8128 207.2127,-10335.126 229.451,-10338.7093"/>
+<polygon fill="#191970" stroke="#191970" points="70.5519,-5111.6965 67.0249,-5101.706 63.5519,-5111.7155 70.5519,-5111.6965"/>
 </g>
 <!-- Node19 -->
 <g id="node20" class="node">
 <title>Node19</title>
 <g id="a_node20"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::meta_schedule\l::TuneContext \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-10307.5 229.5,-10348.5 357.5,-10348.5 357.5,-10307.5 229.5,-10307.5"/>
-<text text-anchor="start" x="237.5" y="-10336.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="237.5" y="-10325.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule</text>
-<text text-anchor="middle" x="293.5" y="-10314.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::TuneContext &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-10258.5 229.5,-10299.5 357.5,-10299.5 357.5,-10258.5 229.5,-10258.5"/>
+<text text-anchor="start" x="237.5" y="-10287.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="237.5" y="-10276.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule</text>
+<text text-anchor="middle" x="293.5" y="-10265.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::TuneContext &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node19 -->
 <g id="edge19" class="edge">
 <title>Node0&#45;&gt;Node19</title>
-<path fill="none" stroke="#191970" d="M67.055,-5136.8501C68.048,-5481.1362 83.2105,-10189.8342 170,-10298 184.2918,-10315.8119 207.2141,-10324.1248 229.4523,-10327.7082"/>
-<polygon fill="#191970" stroke="#191970" points="70.5545,-5136.6291 67.026,-5126.6391 63.5545,-5136.649 70.5545,-5136.6291"/>
+<path fill="none" stroke="#191970" d="M67.0566,-5111.7581C68.077,-5454.4497 83.6074,-10141.339 170,-10249 184.2926,-10266.8112 207.2151,-10275.124 229.4532,-10278.7075"/>
+<polygon fill="#191970" stroke="#191970" points="70.5562,-5111.5841 67.0268,-5101.5944 63.5562,-5111.6047 70.5562,-5111.5841"/>
 </g>
 <!-- Node20 -->
 <g id="node21" class="node">
 <title>Node20</title>
 <g id="a_node21"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::PoolInfo \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-10258 237,-10288 350,-10288 350,-10258 237,-10258"/>
-<text text-anchor="start" x="245" y="-10276" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10265" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::PoolInfo &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-10209 237,-10239 350,-10239 350,-10209 237,-10209"/>
+<text text-anchor="start" x="245" y="-10227" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-10216" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::PoolInfo &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node20 -->
 <g id="edge20" class="edge">
 <title>Node0&#45;&gt;Node20</title>
-<path fill="none" stroke="#191970" d="M67.049,-5136.9241C67.934,-5480.1453 81.5826,-10143.9125 170,-10249 186.1011,-10268.1367 212.505,-10274.9562 236.7745,-10276.6483"/>
-<polygon fill="#191970" stroke="#191970" points="70.5482,-5136.543 67.0228,-5126.5519 63.5482,-5136.5607 70.5482,-5136.543"/>
+<path fill="none" stroke="#191970" d="M67.0507,-5111.8309C67.9641,-5453.4473 81.991,-10095.4079 170,-10200 186.102,-10219.136 212.506,-10225.9553 236.7754,-10227.6476"/>
+<polygon fill="#191970" stroke="#191970" points="70.5499,-5111.498 67.0236,-5101.5072 63.5499,-5111.5164 70.5499,-5111.498"/>
 </g>
 <!-- Node21 -->
 <g id="node22" class="node">
 <title>Node21</title>
 <g id="a_node22"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::PrimExpr \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-10209 237,-10239 350,-10239 350,-10209 237,-10209"/>
-<text text-anchor="start" x="245" y="-10227" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10216" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::PrimExpr &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-10160 237,-10190 350,-10190 350,-10160 237,-10160"/>
+<text text-anchor="start" x="245" y="-10178" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-10167" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::PrimExpr &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node21 -->
 <g id="edge21" class="edge">
 <title>Node0&#45;&gt;Node21</title>
-<path fill="none" stroke="#191970" d="M67.0531,-5136.9938C68.0028,-5479.0257 82.4386,-10095.9503 170,-10200 186.1029,-10219.1352 212.507,-10225.9545 236.7762,-10227.6469"/>
-<polygon fill="#191970" stroke="#191970" points="70.5527,-5136.8152 67.0254,-5126.8249 63.5528,-5136.8344 70.5527,-5136.8152"/>
+<path fill="none" stroke="#191970" d="M67.0555,-5112.1524C68.0403,-5454.5861 82.8684,-10047.4712 170,-10151 186.1038,-10170.1344 212.508,-10176.9536 236.7771,-10178.6462"/>
+<polygon fill="#191970" stroke="#191970" points="70.5546,-5111.7685 67.0262,-5101.7785 63.5546,-5111.7884 70.5546,-5111.7685"/>
 </g>
 <!-- Node22 -->
 <g id="node23" class="node">
 <title>Node22</title>
 <g id="a_node23"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::Range \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-10160 237,-10190 350,-10190 350,-10160 237,-10160"/>
-<text text-anchor="start" x="245" y="-10178" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10167" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Range &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-10111 237,-10141 350,-10141 350,-10111 237,-10111"/>
+<text text-anchor="start" x="245" y="-10129" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-10118" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Range &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node22 -->
 <g id="edge22" class="edge">
 <title>Node0&#45;&gt;Node22</title>
-<path fill="none" stroke="#191970" d="M67.0573,-5137.0529C68.0721,-5477.7946 83.2936,-10047.987 170,-10151 186.1048,-10170.1336 212.5091,-10176.9527 236.778,-10178.6454"/>
-<polygon fill="#191970" stroke="#191970" points="70.5564,-5136.7198 67.0271,-5126.7302 63.5565,-5136.7404 70.5564,-5136.7198"/>
+<path fill="none" stroke="#191970" d="M67.059,-5111.9573C68.1025,-5451.0748 83.7018,-9999.4821 170,-10102 186.1057,-10121.1328 212.5101,-10127.9518 236.7788,-10129.6447"/>
+<polygon fill="#191970" stroke="#191970" points="70.5583,-5111.6731 67.0279,-5101.6838 63.5583,-5111.6944 70.5583,-5111.6731"/>
 </g>
 <!-- Node23 -->
 <g id="node24" class="node">
 <title>Node23</title>
 <g id="a_node24"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::relay::Clause \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-10111 229.5,-10141 357.5,-10141 357.5,-10111 229.5,-10111"/>
-<text text-anchor="start" x="237.5" y="-10129" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10118" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::relay::Clause &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-10062 229.5,-10092 357.5,-10092 357.5,-10062 229.5,-10062"/>
+<text text-anchor="start" x="237.5" y="-10080" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-10069" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::relay::Clause &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node23 -->
 <g id="edge23" class="edge">
 <title>Node0&#45;&gt;Node23</title>
-<path fill="none" stroke="#191970" d="M67.0608,-5136.8577C68.1342,-5474.2833 84.127,-9999.9979 170,-10102 184.489,-10119.2104 207.3111,-10126.457 229.4153,-10128.9714"/>
-<polygon fill="#191970" stroke="#191970" points="70.5602,-5136.6244 67.0288,-5126.6355 63.5602,-5136.6464 70.5602,-5136.6244"/>
+<path fill="none" stroke="#191970" d="M67.0625,-5111.7621C68.1647,-5447.5635 84.5352,-9951.493 170,-10053 184.4899,-10070.2097 207.3122,-10077.4561 229.4163,-10079.9706"/>
+<polygon fill="#191970" stroke="#191970" points="70.562,-5111.5777 67.0296,-5101.5891 63.562,-5111.6004 70.562,-5111.5777"/>
 </g>
 <!-- Node24 -->
 <g id="node25" class="node">
 <title>Node24</title>
 <g id="a_node25"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::relay::DFPattern \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="222.5,-10062 222.5,-10092 364.5,-10092 364.5,-10062 222.5,-10062"/>
-<text text-anchor="start" x="230.5" y="-10080" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10069" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::relay::DFPattern &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="222.5,-10013 222.5,-10043 364.5,-10043 364.5,-10013 222.5,-10013"/>
+<text text-anchor="start" x="230.5" y="-10031" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-10020" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::relay::DFPattern &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node24 -->
 <g id="edge24" class="edge">
 <title>Node0&#45;&gt;Node24</title>
-<path fill="none" stroke="#191970" d="M67.0643,-5136.6625C68.1964,-5470.772 84.9604,-9952.0088 170,-10053 182.9432,-10068.3711 202.5336,-10075.7938 222.3218,-10078.9959"/>
-<polygon fill="#191970" stroke="#191970" points="70.5639,-5136.529 67.0305,-5126.5408 63.564,-5136.5524 70.5639,-5136.529"/>
+<path fill="none" stroke="#191970" d="M67.0677,-5112.07C68.244,-5448.5218 85.411,-9903.5543 170,-10004 182.944,-10019.3704 202.5346,-10026.793 222.3228,-10029.9951"/>
+<polygon fill="#191970" stroke="#191970" points="70.567,-5111.8407 67.0325,-5101.8528 63.5671,-5111.8648 70.567,-5111.8407"/>
 </g>
 <!-- Node25 -->
 <g id="node26" class="node">
 <title>Node25</title>
 <g id="a_node26"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::relay::OpImplementation \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="200.5,-10013 200.5,-10043 386.5,-10043 386.5,-10013 200.5,-10013"/>
-<text text-anchor="start" x="208.5" y="-10031" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-10020" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::relay::OpImplementation &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="200.5,-9964 200.5,-9994 386.5,-9994 386.5,-9964 200.5,-9964"/>
+<text text-anchor="start" x="208.5" y="-9982" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9971" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::relay::OpImplementation &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node25 -->
 <g id="edge25" class="edge">
 <title>Node0&#45;&gt;Node25</title>
-<path fill="none" stroke="#191970" d="M67.0695,-5136.9679C68.2761,-5471.7075 85.836,-9904.0698 170,-10004 178.0905,-10013.6061 188.7771,-10020.1077 200.4854,-10024.4149"/>
-<polygon fill="#191970" stroke="#191970" points="70.569,-5136.7902 67.0334,-5126.8027 63.5691,-5136.8151 70.569,-5136.7902"/>
+<path fill="none" stroke="#191970" d="M67.0713,-5111.8699C68.307,-5444.9659 86.2439,-9855.5647 170,-9955 178.091,-9964.6057 188.7779,-9971.1071 200.4863,-9975.4141"/>
+<polygon fill="#191970" stroke="#191970" points="70.5709,-5111.7416 67.0343,-5101.7546 63.571,-5111.7673 70.5709,-5111.7416"/>
 </g>
 <!-- Node26 -->
 <g id="node27" class="node">
 <title>Node26</title>
 <g id="a_node27"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::relay::OpSpecialization \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="205.5,-9964 205.5,-9994 381.5,-9994 381.5,-9964 205.5,-9964"/>
-<text text-anchor="start" x="213.5" y="-9982" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9971" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::relay::OpSpecialization &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="205.5,-9915 205.5,-9945 381.5,-9945 381.5,-9915 205.5,-9915"/>
+<text text-anchor="start" x="213.5" y="-9933" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9922" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::relay::OpSpecialization &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node26 -->
 <g id="edge26" class="edge">
 <title>Node0&#45;&gt;Node26</title>
-<path fill="none" stroke="#191970" d="M67.0731,-5136.7677C68.3391,-5468.1517 86.6689,-9856.0802 170,-9955 179.2173,-9965.9416 191.8028,-9972.8553 205.4294,-9977.086"/>
-<polygon fill="#191970" stroke="#191970" points="70.5729,-5136.6911 67.0352,-5126.7044 63.573,-5136.7176 70.5729,-5136.6911"/>
+<path fill="none" stroke="#191970" d="M67.0748,-5111.6697C68.3699,-5441.41 87.0769,-9807.5751 170,-9906 179.2179,-9916.9411 191.8036,-9923.8546 205.4304,-9928.0852"/>
+<polygon fill="#191970" stroke="#191970" points="70.5749,-5111.6426 67.036,-5101.6563 63.5749,-5111.6698 70.5749,-5111.6426"/>
 </g>
 <!-- Node27 -->
 <g id="node28" class="node">
 <title>Node27</title>
 <g id="a_node28"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::relay::Pattern \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229,-9915 229,-9945 358,-9945 358,-9915 229,-9915"/>
-<text text-anchor="start" x="237" y="-9933" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9922" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::relay::Pattern &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="229,-9866 229,-9896 358,-9896 358,-9866 229,-9866"/>
+<text text-anchor="start" x="237" y="-9884" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9873" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::relay::Pattern &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node27 -->
 <g id="edge27" class="edge">
 <title>Node0&#45;&gt;Node27</title>
-<path fill="none" stroke="#191970" d="M67.0786,-5137.0567C68.4209,-5468.8867 87.5426,-9808.139 170,-9906 184.3555,-9923.0373 206.8774,-9930.308 228.7792,-9932.8902"/>
-<polygon fill="#191970" stroke="#191970" points="70.5769,-5136.5921 67.0369,-5126.6061 63.577,-5136.6201 70.5769,-5136.5921"/>
+<path fill="none" stroke="#191970" d="M67.0804,-5111.9562C68.4521,-5442.1236 87.9504,-9759.6336 170,-9857 184.3565,-9874.0365 206.8786,-9881.3071 228.7802,-9883.8894"/>
+<polygon fill="#191970" stroke="#191970" points="70.5789,-5111.5435 67.0378,-5101.558 63.5789,-5111.5723 70.5789,-5111.5435"/>
 </g>
 <!-- Node28 -->
 <g id="node29" class="node">
 <title>Node28</title>
 <g id="a_node29"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::relay::Var \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-9866 237,-9896 350,-9896 350,-9866 237,-9866"/>
-<text text-anchor="start" x="245" y="-9884" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9873" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::relay::Var &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-9817 237,-9847 350,-9847 350,-9817 237,-9817"/>
+<text text-anchor="start" x="245" y="-9835" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9824" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::relay::Var &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node28 -->
 <g id="edge28" class="edge">
 <title>Node0&#45;&gt;Node28</title>
-<path fill="none" stroke="#191970" d="M67.0823,-5136.8515C68.4846,-5465.287 88.3751,-9760.1489 170,-9857 186.1169,-9876.1234 212.5225,-9882.9414 236.7891,-9884.6361"/>
-<polygon fill="#191970" stroke="#191970" points="70.5809,-5136.493 67.0387,-5126.5079 63.581,-5136.5226 70.5809,-5136.493"/>
+<path fill="none" stroke="#191970" d="M67.0863,-5112.2457C68.5361,-5442.8088 88.8236,-9711.6919 170,-9808 186.118,-9827.1225 212.5237,-9833.9404 236.7901,-9835.6352"/>
+<polygon fill="#191970" stroke="#191970" points="70.5844,-5111.7948 67.0411,-5101.8101 63.5845,-5111.8252 70.5844,-5111.7948"/>
 </g>
 <!-- Node29 -->
 <g id="node30" class="node">
 <title>Node29</title>
 <g id="a_node30"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::RelayExpr \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-9817 237,-9847 350,-9847 350,-9817 237,-9817"/>
-<text text-anchor="start" x="245" y="-9835" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9824" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::RelayExpr &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-9768 237,-9798 350,-9798 350,-9768 237,-9768"/>
+<text text-anchor="start" x="245" y="-9786" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9775" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::RelayExpr &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node29 -->
 <g id="edge29" class="edge">
 <title>Node0&#45;&gt;Node29</title>
-<path fill="none" stroke="#191970" d="M67.0899,-5137.1326C68.5993,-5465.8507 89.6388,-9710.9137 170,-9807 186.0694,-9826.2138 212.4699,-9833.2414 236.7455,-9835.1401"/>
-<polygon fill="#191970" stroke="#191970" points="70.5883,-5136.7394 67.0428,-5126.7554 63.5883,-5136.7712 70.5883,-5136.7394"/>
+<path fill="none" stroke="#191970" d="M67.0918,-5112.0296C68.6307,-5439.0659 90.0445,-9662.4097 170,-9758 186.0704,-9777.2129 212.4711,-9784.2404 236.7465,-9786.1393"/>
+<polygon fill="#191970" stroke="#191970" points="70.5903,-5111.689 67.0437,-5101.7055 63.5904,-5111.7217 70.5903,-5111.689"/>
 </g>
 <!-- Node30 -->
 <g id="node31" class="node">
 <title>Node30</title>
 <g id="a_node31"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::runtime::Array\l\&lt; tvm::Integer \&gt; \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="231.5,-9756.5 231.5,-9797.5 355.5,-9797.5 355.5,-9756.5 231.5,-9756.5"/>
-<text text-anchor="start" x="239.5" y="-9785.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="239.5" y="-9774.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9763.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Integer &gt; &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="231.5,-9707.5 231.5,-9748.5 355.5,-9748.5 355.5,-9707.5 231.5,-9707.5"/>
+<text text-anchor="start" x="239.5" y="-9736.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="239.5" y="-9725.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9714.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Integer &gt; &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node30 -->
 <g id="edge30" class="edge">
 <title>Node0&#45;&gt;Node30</title>
-<path fill="none" stroke="#191970" d="M67.1028,-5136.8683C68.8207,-5461.2715 92.4966,-9650.6412 170,-9747 184.7277,-9765.3107 208.5755,-9773.5784 231.4063,-9776.9902"/>
-<polygon fill="#191970" stroke="#191970" points="70.6016,-5136.6088 67.0491,-5126.6273 63.6017,-5136.6455 70.6016,-5136.6088"/>
+<path fill="none" stroke="#191970" d="M67.1046,-5111.7654C68.8513,-5434.4873 92.8926,-9602.1449 170,-9698 184.7288,-9716.3099 208.5768,-9724.5774 231.4074,-9727.9893"/>
+<polygon fill="#191970" stroke="#191970" points="70.6036,-5111.5584 67.05,-5101.5774 63.6037,-5111.596 70.6036,-5111.5584"/>
 </g>
 <!-- Node31 -->
 <g id="node32" class="node">
 <title>Node31</title>
 <g id="a_node32"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::runtime::Array\l\&lt; tvm::PrimExpr \&gt; \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="231.5,-9696.5 231.5,-9737.5 355.5,-9737.5 355.5,-9696.5 231.5,-9696.5"/>
-<text text-anchor="start" x="239.5" y="-9725.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="239.5" y="-9714.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9703.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::PrimExpr &gt; &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="231.5,-9647.5 231.5,-9688.5 355.5,-9688.5 355.5,-9647.5 231.5,-9647.5"/>
+<text text-anchor="start" x="239.5" y="-9676.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="239.5" y="-9665.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9654.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::PrimExpr &gt; &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node31 -->
 <g id="edge31" class="edge">
 <title>Node0&#45;&gt;Node31</title>
-<path fill="none" stroke="#191970" d="M67.1072,-5136.6109C68.8974,-5456.8109 93.4866,-9591.9004 170,-9687 184.7304,-9705.3086 208.5786,-9713.5759 231.4091,-9716.988"/>
-<polygon fill="#191970" stroke="#191970" points="70.6067,-5136.483 67.0513,-5126.5025 63.6068,-5136.5218 70.6067,-5136.483"/>
+<path fill="none" stroke="#191970" d="M67.1118,-5111.9903C68.9531,-5434.1535 93.9208,-9543.4516 170,-9638 184.7315,-9656.3077 208.5799,-9664.5749 231.4102,-9667.9871"/>
+<polygon fill="#191970" stroke="#191970" points="70.6107,-5111.7763 67.0541,-5101.7963 63.6108,-5111.816 70.6107,-5111.7763"/>
 </g>
 <!-- Node32 -->
 <g id="node33" class="node">
 <title>Node32</title>
 <g id="a_node33"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::runtime::Map\l\&lt; tvm::runtime::String,\l tvm::runtime::ObjectRef \&gt; \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="214,-9625 214,-9677 373,-9677 373,-9625 214,-9625"/>
-<text text-anchor="start" x="222" y="-9665" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="222" y="-9654" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Map</text>
-<text text-anchor="start" x="222" y="-9643" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String,</text>
-<text text-anchor="middle" x="293.5" y="-9632" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::ObjectRef &gt; &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="214,-9576 214,-9628 373,-9628 373,-9576 214,-9576"/>
+<text text-anchor="start" x="222" y="-9616" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="222" y="-9605" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Map</text>
+<text text-anchor="start" x="222" y="-9594" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String,</text>
+<text text-anchor="middle" x="293.5" y="-9583" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::ObjectRef &gt; &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node32 -->
 <g id="edge32" class="edge">
 <title>Node0&#45;&gt;Node32</title>
-<path fill="none" stroke="#191970" d="M67.1236,-5136.7771C69.1539,-5455.5062 96.4804,-9521.0289 170,-9616 180.8452,-9630.0096 196.8648,-9638.6933 213.799,-9644.0079"/>
-<polygon fill="#191970" stroke="#191970" points="70.6231,-5136.6695 67.0599,-5126.6918 63.6232,-5136.7138 70.6231,-5136.6695"/>
+<path fill="none" stroke="#191970" d="M67.1254,-5111.6716C69.1841,-5428.7008 96.8666,-9472.5397 170,-9567 180.8461,-9581.0089 196.866,-9589.6924 213.8003,-9595.007"/>
+<polygon fill="#191970" stroke="#191970" points="70.6252,-5111.6173 67.0608,-5101.6401 63.6253,-5111.6625 70.6252,-5111.6173"/>
 </g>
 <!-- Node33 -->
 <g id="node34" class="node">
 <title>Node33</title>
 <g id="a_node34"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::runtime::ObjectRef \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="215.5,-9576 215.5,-9606 371.5,-9606 371.5,-9576 215.5,-9576"/>
-<text text-anchor="start" x="223.5" y="-9594" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9583" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::ObjectRef &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="215.5,-9527 215.5,-9557 371.5,-9557 371.5,-9527 215.5,-9527"/>
+<text text-anchor="start" x="223.5" y="-9545" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9534" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::ObjectRef &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node33 -->
 <g id="edge33" class="edge">
 <title>Node0&#45;&gt;Node33</title>
-<path fill="none" stroke="#191970" d="M67.1137,-5137.0409C68.9643,-5455.9444 93.788,-9474.9848 170,-9566 181.3759,-9579.5856 197.917,-9587.0768 215.2157,-9590.9703"/>
-<polygon fill="#191970" stroke="#191970" points="70.6112,-5136.5703 67.0537,-5126.5906 63.6113,-5136.6106 70.6112,-5136.5703"/>
+<path fill="none" stroke="#191970" d="M67.1156,-5111.9328C68.9964,-5429.1164 94.1932,-9426.4803 170,-9517 181.3768,-9530.5848 197.9181,-9538.0758 215.2169,-9541.9693"/>
+<polygon fill="#191970" stroke="#191970" points="70.6134,-5111.5181 67.0546,-5101.5389 63.6135,-5111.5593 70.6134,-5111.5181"/>
 </g>
 <!-- Node34 -->
 <g id="node35" class="node">
 <title>Node34</title>
 <g id="a_node35"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::runtime::Optional\l\&lt; tvm::Integer \&gt; \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="224,-9515.5 224,-9556.5 363,-9556.5 363,-9515.5 224,-9515.5"/>
-<text text-anchor="start" x="232" y="-9544.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="232" y="-9533.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-9522.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Integer &gt; &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="224,-9466.5 224,-9507.5 363,-9507.5 363,-9466.5 224,-9466.5"/>
+<text text-anchor="start" x="232" y="-9495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="232" y="-9484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Optional</text>
+<text text-anchor="middle" x="293.5" y="-9473.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Integer &gt; &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node34 -->
 <g id="edge34" class="edge">
 <title>Node0&#45;&gt;Node34</title>
-<path fill="none" stroke="#191970" d="M67.1299,-5137.2403C69.2107,-5455.2389 96.5831,-9414.8359 170,-9506 183.1474,-9522.3255 203.5442,-9530.6657 223.9994,-9534.6991"/>
-<polygon fill="#191970" stroke="#191970" points="70.627,-5136.7727 67.0621,-5126.7956 63.6272,-5136.8182 70.627,-5136.7727"/>
+<path fill="none" stroke="#191970" d="M67.1318,-5112.1297C69.2425,-5428.3897 96.9785,-9366.3388 170,-9457 183.0792,-9473.2387 203.331,-9481.5767 223.6777,-9485.634"/>
+<polygon fill="#191970" stroke="#191970" points="70.6292,-5111.7187 67.063,-5101.7421 63.6294,-5111.765 70.6292,-5111.7187"/>
 </g>
 <!-- Node35 -->
 <g id="node36" class="node">
 <title>Node35</title>
 <g id="a_node36"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::runtime::String \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="225,-9466 225,-9496 362,-9496 362,-9466 225,-9466"/>
-<text text-anchor="start" x="233" y="-9484" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9473" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="225,-9417 225,-9447 362,-9447 362,-9417 225,-9417"/>
+<text text-anchor="start" x="233" y="-9435" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9424" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node35 -->
 <g id="edge35" class="edge">
 <title>Node0&#45;&gt;Node35</title>
-<path fill="none" stroke="#191970" d="M67.1238,-5137.0227C69.1093,-5451.6006 95.3207,-9368.5698 170,-9457 183.5289,-9473.02 204.2783,-9480.4001 224.9304,-9483.3672"/>
-<polygon fill="#191970" stroke="#191970" points="70.6217,-5136.6682 67.0591,-5126.6903 63.6219,-5136.712 70.6217,-5136.6682"/>
+<path fill="none" stroke="#191970" d="M67.1257,-5111.912C69.142,-5424.7507 95.7276,-9320.0635 170,-9408 183.53,-9424.0191 204.2797,-9431.3989 224.9316,-9434.3662"/>
+<polygon fill="#191970" stroke="#191970" points="70.624,-5111.6141 67.0601,-5101.6367 63.6241,-5111.6589 70.624,-5111.6141"/>
 </g>
 <!-- Node36 -->
 <g id="node37" class="node">
 <title>Node36</title>
 <g id="a_node37"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::Target \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-9417 237,-9447 350,-9447 350,-9417 237,-9417"/>
-<text text-anchor="start" x="245" y="-9435" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9424" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Target &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-9368 237,-9398 350,-9398 350,-9368 237,-9368"/>
+<text text-anchor="start" x="245" y="-9386" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9375" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Target &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node36 -->
 <g id="edge36" class="edge">
 <title>Node0&#45;&gt;Node36</title>
-<path fill="none" stroke="#191970" d="M67.1278,-5136.7967C69.176,-5447.8237 96.1515,-9320.5777 170,-9408 186.1387,-9427.1051 212.5465,-9433.9212 236.809,-9435.6193"/>
-<polygon fill="#191970" stroke="#191970" points="70.6264,-5136.5578 67.0611,-5126.5809 63.6266,-5136.6036 70.6264,-5136.5578"/>
+<path fill="none" stroke="#191970" d="M67.1298,-5111.686C69.2087,-5420.9737 96.5585,-9272.0713 170,-9359 186.1399,-9378.104 212.5479,-9384.92 236.8102,-9386.6183"/>
+<polygon fill="#191970" stroke="#191970" points="70.6287,-5111.5038 67.0621,-5101.5273 63.6289,-5111.5505 70.6287,-5111.5038"/>
 </g>
 <!-- Node37 -->
 <g id="node38" class="node">
 <title>Node37</title>
 <g id="a_node38"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::te::IterVarRelation \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="217.5,-9368 217.5,-9398 369.5,-9398 369.5,-9368 217.5,-9368"/>
-<text text-anchor="start" x="225.5" y="-9386" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9375" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::te::IterVarRelation &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="217.5,-9319 217.5,-9349 369.5,-9349 369.5,-9319 217.5,-9319"/>
+<text text-anchor="start" x="225.5" y="-9337" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9326" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::te::IterVarRelation &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node37 -->
 <g id="edge37" class="edge">
 <title>Node0&#45;&gt;Node37</title>
-<path fill="none" stroke="#191970" d="M67.135,-5137.0366C69.2707,-5447.8916 97.019,-9272.6289 170,-9359 181.8417,-9373.0143 199.209,-9380.4157 217.2008,-9384.035"/>
-<polygon fill="#191970" stroke="#191970" points="70.6334,-5136.7795 67.0653,-5126.8036 63.6336,-5136.8272 70.6334,-5136.7795"/>
+<path fill="none" stroke="#191970" d="M67.137,-5111.9233C69.3037,-5421.0199 97.4258,-9224.1223 170,-9310 181.8426,-9324.0135 199.2103,-9331.4146 217.2021,-9335.0339"/>
+<polygon fill="#191970" stroke="#191970" points="70.6358,-5111.7235 67.0663,-5101.7481 63.636,-5111.7722 70.6358,-5111.7235"/>
 </g>
 <!-- Node38 -->
 <g id="node39" class="node">
 <title>Node38</title>
 <g id="a_node39"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::te::Operation \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-9319 229.5,-9349 357.5,-9349 357.5,-9319 229.5,-9319"/>
-<text text-anchor="start" x="237.5" y="-9337" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9326" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::te::Operation &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-9270 229.5,-9300 357.5,-9300 357.5,-9270 229.5,-9270"/>
+<text text-anchor="start" x="237.5" y="-9288" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9277" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::te::Operation &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node38 -->
 <g id="edge38" class="edge">
 <title>Node0&#45;&gt;Node38</title>
-<path fill="none" stroke="#191970" d="M67.1391,-5136.8052C69.3382,-5444.0702 97.8495,-9224.6362 170,-9310 184.5226,-9327.1821 207.3512,-9334.4231 229.4513,-9336.9411"/>
-<polygon fill="#191970" stroke="#191970" points="70.6383,-5136.6652 67.0673,-5126.6903 63.6385,-5136.715 70.6383,-5136.6652"/>
+<path fill="none" stroke="#191970" d="M67.1411,-5111.6919C69.3713,-5417.1985 98.2562,-9176.1296 170,-9261 184.5238,-9278.1811 207.3527,-9285.4219 229.4526,-9287.94"/>
+<polygon fill="#191970" stroke="#191970" points="70.6407,-5111.6092 67.0683,-5101.6349 63.6409,-5111.66 70.6407,-5111.6092"/>
 </g>
 <!-- Node39 -->
 <g id="node40" class="node">
 <title>Node39</title>
 <g id="a_node40"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::te::Stage \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-9270 237,-9300 350,-9300 350,-9270 237,-9270"/>
-<text text-anchor="start" x="245" y="-9288" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9277" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::te::Stage &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-9221 237,-9251 350,-9251 350,-9221 237,-9221"/>
+<text text-anchor="start" x="245" y="-9239" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9228" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::te::Stage &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node39 -->
 <g id="edge39" class="edge">
 <title>Node0&#45;&gt;Node39</title>
-<path fill="none" stroke="#191970" d="M67.1466,-5137.0269C69.4347,-5443.9436 98.7151,-9176.6853 170,-9261 186.1468,-9280.0982 212.5555,-9286.9136 236.8164,-9288.613"/>
-<polygon fill="#191970" stroke="#191970" points="70.6433,-5136.5509 67.0693,-5126.5771 63.6435,-5136.6028 70.6433,-5136.5509"/>
+<path fill="none" stroke="#191970" d="M67.1487,-5111.9109C69.4681,-5417.0505 99.1217,-9128.1784 170,-9212 186.1482,-9231.097 212.557,-9237.9123 236.8177,-9239.6119"/>
+<polygon fill="#191970" stroke="#191970" points="70.6457,-5111.495 67.0703,-5101.5217 63.6459,-5111.5478 70.6457,-5111.495"/>
 </g>
 <!-- Node40 -->
 <g id="node41" class="node">
 <title>Node40</title>
 <g id="a_node41"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::te::Tensor \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-9221 237,-9251 350,-9251 350,-9221 237,-9221"/>
-<text text-anchor="start" x="245" y="-9239" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9228" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::te::Tensor &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-9172 237,-9202 350,-9202 350,-9172 237,-9172"/>
+<text text-anchor="start" x="245" y="-9190" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9179" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::te::Tensor &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node40 -->
 <g id="edge40" class="edge">
 <title>Node0&#45;&gt;Node40</title>
-<path fill="none" stroke="#191970" d="M67.1509,-5136.7974C69.5034,-5440.1372 99.5457,-9128.6928 170,-9212 186.1496,-9231.0958 212.5586,-9237.9109 236.819,-9239.6108"/>
-<polygon fill="#191970" stroke="#191970" points="70.6508,-5136.7626 67.0739,-5126.7898 63.651,-5136.8165 70.6508,-5136.7626"/>
+<path fill="none" stroke="#191970" d="M67.1565,-5112.1313C69.567,-5416.87 99.9869,-9080.2268 170,-9163 186.151,-9182.0946 212.5602,-9188.9096 236.8203,-9190.6097"/>
+<polygon fill="#191970" stroke="#191970" points="70.6534,-5111.7047 67.0749,-5101.7325 63.6536,-5111.7597 70.6534,-5111.7047"/>
 </g>
 <!-- Node41 -->
 <g id="node42" class="node">
 <title>Node41</title>
 <g id="a_node42"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::TensorAffineType \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="220,-9172 220,-9202 367,-9202 367,-9172 220,-9172"/>
-<text text-anchor="start" x="228" y="-9190" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9179" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::TensorAffineType &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="220,-9123 220,-9153 367,-9153 367,-9123 220,-9123"/>
+<text text-anchor="start" x="228" y="-9141" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9130" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::TensorAffineType &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node41 -->
 <g id="edge41" class="edge">
 <title>Node0&#45;&gt;Node41</title>
-<path fill="none" stroke="#191970" d="M67.1587,-5137.0077C69.6022,-5439.8754 100.4101,-9080.7403 170,-9163 182.4142,-9177.6743 200.8869,-9185.096 219.7859,-9188.5172"/>
-<polygon fill="#191970" stroke="#191970" points="70.656,-5136.6443 67.0759,-5126.6727 63.6562,-5136.7005 70.656,-5136.6443"/>
+<path fill="none" stroke="#191970" d="M67.1608,-5111.889C69.636,-5412.9606 100.8164,-9032.2331 170,-9114 182.4153,-9128.6734 200.8883,-9136.0948 219.7874,-9139.516"/>
+<polygon fill="#191970" stroke="#191970" points="70.6586,-5111.5864 67.077,-5101.6154 63.6588,-5111.6436 70.6586,-5111.5864"/>
 </g>
 <!-- Node42 -->
 <g id="node43" class="node">
 <title>Node42</title>
 <g id="a_node43"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::tir::Buffer \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-9123 237,-9153 350,-9153 350,-9123 237,-9123"/>
-<text text-anchor="start" x="245" y="-9141" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9130" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::Buffer &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-9074 237,-9104 350,-9104 350,-9074 237,-9074"/>
+<text text-anchor="start" x="245" y="-9092" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9081" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::Buffer &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node42 -->
 <g id="edge42" class="edge">
 <title>Node0&#45;&gt;Node42</title>
-<path fill="none" stroke="#191970" d="M67.163,-5136.7654C69.6712,-5435.966 101.2397,-9032.7466 170,-9114 186.1555,-9133.0908 212.5652,-9139.9054 236.8244,-9141.6062"/>
-<polygon fill="#191970" stroke="#191970" points="70.6613,-5136.5261 67.078,-5126.5556 63.6615,-5136.5844 70.6613,-5136.5261"/>
+<path fill="none" stroke="#191970" d="M67.169,-5112.0978C69.7372,-5412.6452 101.6803,-8984.28 170,-9065 186.157,-9084.0895 212.5668,-9090.904 236.8258,-9092.605"/>
+<polygon fill="#191970" stroke="#191970" points="70.6666,-5111.7896 67.0818,-5101.8197 63.6668,-5111.8491 70.6666,-5111.7896"/>
 </g>
 <!-- Node43 -->
 <g id="node44" class="node">
 <title>Node43</title>
 <g id="a_node44"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::tir::BufferRegion \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="222,-9074 222,-9104 365,-9104 365,-9074 222,-9074"/>
-<text text-anchor="start" x="230" y="-9092" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9081" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::BufferRegion &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="222,-9025 222,-9055 365,-9055 365,-9025 222,-9025"/>
+<text text-anchor="start" x="230" y="-9043" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-9032" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::BufferRegion &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node43 -->
 <g id="edge43" class="edge">
 <title>Node0&#45;&gt;Node43</title>
-<path fill="none" stroke="#191970" d="M67.1712,-5136.9714C69.7728,-5435.628 102.1034,-8984.7932 170,-9065 182.8422,-9080.1706 202.1596,-9087.5884 221.726,-9090.8483"/>
-<polygon fill="#191970" stroke="#191970" points="70.6694,-5136.7273 67.0829,-5126.758 63.6696,-5136.7879 70.6694,-5136.7273"/>
+<path fill="none" stroke="#191970" d="M67.1734,-5111.85C69.807,-5408.6915 102.5095,-8936.2858 170,-9016 182.8434,-9031.1695 202.1611,-9038.5871 221.7275,-9041.847"/>
+<polygon fill="#191970" stroke="#191970" points="70.672,-5111.6674 67.0839,-5101.6986 63.6723,-5111.7291 70.672,-5111.6674"/>
 </g>
 <!-- Node44 -->
 <g id="node45" class="node">
 <title>Node44</title>
 <g id="a_node45"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::tir::IndexMap \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-9025 229.5,-9055 357.5,-9055 357.5,-9025 229.5,-9025"/>
-<text text-anchor="start" x="237.5" y="-9043" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-9032" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::IndexMap &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-8976 229.5,-9006 357.5,-9006 357.5,-8976 229.5,-8976"/>
+<text text-anchor="start" x="237.5" y="-8994" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-8983" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::IndexMap &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node44 -->
 <g id="edge44" class="edge">
 <title>Node0&#45;&gt;Node44</title>
-<path fill="none" stroke="#191970" d="M67.1756,-5136.7235C69.8426,-5431.6743 102.9325,-8936.799 170,-9016 184.5385,-9033.1687 207.3702,-9040.4071 229.4683,-9042.9267"/>
-<polygon fill="#191970" stroke="#191970" points="70.6748,-5136.605 67.085,-5126.6369 63.6751,-5136.6679 70.6748,-5136.605"/>
+<path fill="none" stroke="#191970" d="M67.1778,-5111.6022C69.8768,-5404.7377 103.3386,-8888.2916 170,-8967 184.5399,-8984.1675 207.3719,-8991.4057 229.4698,-8993.9254"/>
+<polygon fill="#191970" stroke="#191970" points="70.6775,-5111.5451 67.0861,-5101.5776 63.6778,-5111.6092 70.6775,-5111.5451"/>
 </g>
 <!-- Node45 -->
 <g id="node46" class="node">
 <title>Node45</title>
 <g id="a_node46"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::tir::Instruction \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="227,-8976 227,-9006 360,-9006 360,-8976 227,-8976"/>
-<text text-anchor="start" x="235" y="-8994" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-8983" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::Instruction &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="227,-8927 227,-8957 360,-8957 360,-8927 227,-8927"/>
+<text text-anchor="start" x="235" y="-8945" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-8934" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::Instruction &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node45 -->
 <g id="edge45" class="edge">
 <title>Node0&#45;&gt;Node45</title>
-<path fill="none" stroke="#191970" d="M67.1841,-5136.9104C69.9459,-5431.1448 103.7944,-8888.8434 170,-8967 183.9766,-8983.4996 205.6128,-8990.827 226.8941,-8993.6088"/>
-<polygon fill="#191970" stroke="#191970" points="70.6804,-5136.4827 67.0872,-5126.5158 63.6807,-5136.548 70.6804,-5136.4827"/>
+<path fill="none" stroke="#191970" d="M67.1864,-5111.7935C69.981,-5404.2434 104.2009,-8840.3365 170,-8918 183.978,-8934.4984 205.6145,-8941.8256 226.8957,-8944.6075"/>
+<polygon fill="#191970" stroke="#191970" points="70.6861,-5111.7374 67.0912,-5101.7711 63.6864,-5111.8039 70.6861,-5111.7374"/>
 </g>
 <!-- Node46 -->
 <g id="node47" class="node">
 <title>Node46</title>
 <g id="a_node47"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::tir::IterVar \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-8927 237,-8957 350,-8957 350,-8927 237,-8927"/>
-<text text-anchor="start" x="245" y="-8945" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-8934" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::IterVar &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-8878 237,-8908 350,-8908 350,-8878 237,-8878"/>
+<text text-anchor="start" x="245" y="-8896" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-8885" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::IterVar &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node46 -->
 <g id="edge46" class="edge">
 <title>Node0&#45;&gt;Node46</title>
-<path fill="none" stroke="#191970" d="M67.1929,-5137.0978C70.0513,-5430.581 104.656,-8840.8875 170,-8918 186.1682,-8937.0801 212.5792,-8943.8935 236.8361,-8945.5964"/>
-<polygon fill="#191970" stroke="#191970" points="70.6891,-5136.6729 67.0924,-5126.7073 63.6894,-5136.7407 70.6891,-5136.6729"/>
+<path fill="none" stroke="#191970" d="M67.1952,-5111.9709C70.0862,-5403.6014 105.0617,-8792.3796 170,-8869 186.1698,-8888.0787 212.581,-8894.892 236.8376,-8896.5951"/>
+<polygon fill="#191970" stroke="#191970" points="70.6919,-5111.611 67.0935,-5101.646 63.6922,-5111.68 70.6919,-5111.611"/>
 </g>
 <!-- Node47 -->
 <g id="node48" class="node">
 <title>Node47</title>
 <g id="a_node48"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::tir::MatchBufferRegion \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="207,-8878 207,-8908 380,-8908 380,-8878 207,-8878"/>
-<text text-anchor="start" x="215" y="-8896" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-8885" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::MatchBufferRegion &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="207,-8829 207,-8859 380,-8859 380,-8829 207,-8829"/>
+<text text-anchor="start" x="215" y="-8847" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-8836" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::MatchBufferRegion &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node47 -->
 <g id="edge47" class="edge">
 <title>Node0&#45;&gt;Node47</title>
-<path fill="none" stroke="#191970" d="M67.1975,-5136.8387C70.1226,-5426.5394 105.4843,-8792.8923 170,-8869 179.5334,-8880.2464 192.6256,-8887.2306 206.7369,-8891.4184"/>
-<polygon fill="#191970" stroke="#191970" points="70.6949,-5136.5465 67.0946,-5126.5822 63.6952,-5136.6168 70.6949,-5136.5465"/>
+<path fill="none" stroke="#191970" d="M67.1998,-5111.7119C70.1575,-5399.5599 105.89,-8744.3844 170,-8820 179.5344,-8831.2456 192.627,-8838.2294 206.7385,-8842.4171"/>
+<polygon fill="#191970" stroke="#191970" points="70.6977,-5111.4846 67.0957,-5101.5209 63.6981,-5111.5562 70.6977,-5111.4846"/>
 </g>
 <!-- Node48 -->
 <g id="node49" class="node">
 <title>Node48</title>
 <g id="a_node49"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::tir::Stmt \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-8829 237,-8859 350,-8859 350,-8829 237,-8829"/>
-<text text-anchor="start" x="245" y="-8847" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-8836" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::Stmt &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-8780 237,-8810 350,-8810 350,-8780 237,-8780"/>
+<text text-anchor="start" x="245" y="-8798" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-8787" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::Stmt &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node48 -->
 <g id="edge48" class="edge">
 <title>Node0&#45;&gt;Node48</title>
-<path fill="none" stroke="#191970" d="M67.2067,-5137.0137C70.2303,-5425.8412 106.3446,-8744.9348 170,-8820 186.175,-8839.0743 212.5867,-8845.8871 236.8423,-8847.5911"/>
-<polygon fill="#191970" stroke="#191970" points="70.704,-5136.7295 67.1,-5126.7665 63.7044,-5136.8024 70.704,-5136.7295"/>
+<path fill="none" stroke="#191970" d="M67.209,-5111.884C70.2656,-5398.84 106.7501,-8696.4267 170,-8771 186.1767,-8790.0728 212.5886,-8796.8855 236.8439,-8798.5897"/>
+<polygon fill="#191970" stroke="#191970" points="70.707,-5111.6655 67.1012,-5101.7032 63.7074,-5111.7397 70.707,-5111.6655"/>
 </g>
 <!-- Node49 -->
 <g id="node50" class="node">
 <title>Node49</title>
 <g id="a_node50"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::tir::Var \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-8780 237,-8810 350,-8810 350,-8780 237,-8780"/>
-<text text-anchor="start" x="245" y="-8798" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-8787" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::Var &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-8731 237,-8761 350,-8761 350,-8731 237,-8731"/>
+<text text-anchor="start" x="245" y="-8749" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-8738" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::tir::Var &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node49 -->
 <g id="edge49" class="edge">
 <title>Node0&#45;&gt;Node49</title>
-<path fill="none" stroke="#191970" d="M67.2114,-5136.7489C70.3023,-5421.7554 107.1725,-8696.939 170,-8771 186.1786,-8790.0713 212.5906,-8796.8838 236.8456,-8798.5883"/>
-<polygon fill="#191970" stroke="#191970" points="70.7101,-5136.5989 67.1023,-5126.6373 63.7105,-5136.6744 70.7101,-5136.5989"/>
+<path fill="none" stroke="#191970" d="M67.2137,-5111.6193C70.3377,-5394.7542 107.578,-8648.4309 170,-8722 186.1803,-8741.0698 212.5926,-8747.8821 236.8472,-8749.5869"/>
+<polygon fill="#191970" stroke="#191970" points="70.7131,-5111.5349 67.1035,-5101.574 63.7135,-5111.6118 70.7131,-5111.5349"/>
 </g>
 <!-- Node50 -->
 <g id="node51" class="node">
 <title>Node50</title>
 <g id="a_node51"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::transform::Pass \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="223.5,-8731 223.5,-8761 363.5,-8761 363.5,-8731 223.5,-8731"/>
-<text text-anchor="start" x="231.5" y="-8749" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-8738" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::transform::Pass &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="223.5,-8682 223.5,-8712 363.5,-8712 363.5,-8682 223.5,-8682"/>
+<text text-anchor="start" x="231.5" y="-8700" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-8689" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::transform::Pass &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node50 -->
 <g id="edge50" class="edge">
 <title>Node0&#45;&gt;Node50</title>
-<path fill="none" stroke="#191970" d="M67.2208,-5136.9039C70.4117,-5420.8681 108.0311,-8648.9794 170,-8722 183.2143,-8737.5709 203.2504,-8744.9693 223.3624,-8748.0878"/>
-<polygon fill="#191970" stroke="#191970" points="70.7163,-5136.4683 67.1046,-5126.5081 63.7167,-5136.5466 70.7163,-5136.4683"/>
+<path fill="none" stroke="#191970" d="M67.2232,-5111.7786C70.448,-5393.9 108.4369,-8600.4717 170,-8673 183.2158,-8688.5697 203.2523,-8695.9677 223.3642,-8699.0863"/>
+<polygon fill="#191970" stroke="#191970" points="70.7228,-5111.7082 67.1092,-5101.7487 63.7232,-5111.7879 70.7228,-5111.7082"/>
 </g>
 <!-- Node51 -->
 <g id="node52" class="node">
 <title>Node51</title>
 <g id="a_node52"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::Type \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-8682 237,-8712 350,-8712 350,-8682 237,-8682"/>
-<text text-anchor="start" x="245" y="-8700" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-8689" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Type &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-8633 237,-8663 350,-8663 350,-8633 237,-8633"/>
+<text text-anchor="start" x="245" y="-8651" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-8640" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Type &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node51 -->
 <g id="edge51" class="edge">
 <title>Node0&#45;&gt;Node51</title>
-<path fill="none" stroke="#191970" d="M67.2306,-5137.0588C70.5232,-5419.9447 108.8893,-8601.0194 170,-8673 186.186,-8692.065 212.5988,-8698.8769 236.8524,-8700.5825"/>
-<polygon fill="#191970" stroke="#191970" points="70.726,-5136.6394 67.1104,-5126.6806 63.7265,-5136.7205 70.726,-5136.6394"/>
+<path fill="none" stroke="#191970" d="M67.233,-5111.9234C70.5592,-5392.9006 109.2944,-8552.5108 170,-8624 186.1878,-8643.0634 212.6009,-8649.8751 236.8541,-8651.5811"/>
+<polygon fill="#191970" stroke="#191970" points="70.7292,-5111.5734 67.1116,-5101.6153 63.7297,-5111.6559 70.7292,-5111.5734"/>
 </g>
 <!-- Node52 -->
 <g id="node53" class="node">
 <title>Node52</title>
 <g id="a_node53"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::TypeConstraint \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="225,-8633 225,-8663 362,-8663 362,-8633 225,-8633"/>
-<text text-anchor="start" x="233" y="-8651" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-8640" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::TypeConstraint &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="225,-8584 225,-8614 362,-8614 362,-8584 225,-8584"/>
+<text text-anchor="start" x="233" y="-8602" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-8591" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::TypeConstraint &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node52 -->
 <g id="edge52" class="edge">
 <title>Node0&#45;&gt;Node52</title>
-<path fill="none" stroke="#191970" d="M67.2355,-5136.7825C70.5967,-5415.7713 109.7163,-8553.0226 170,-8624 183.574,-8639.9819 204.3347,-8647.3523 224.9832,-8650.3225"/>
-<polygon fill="#191970" stroke="#191970" points="70.7325,-5136.5046 67.1128,-5126.5473 63.733,-5136.5885 70.7325,-5136.5046"/>
+<path fill="none" stroke="#191970" d="M67.243,-5112.068C70.6726,-5391.8657 110.1515,-8504.5495 170,-8575 183.5756,-8590.9805 204.3367,-8598.3506 224.9851,-8601.3209"/>
+<polygon fill="#191970" stroke="#191970" points="70.7394,-5111.7387 67.1176,-5101.7822 63.7399,-5111.8241 70.7394,-5111.7387"/>
 </g>
 <!-- Node53 -->
 <g id="node54" class="node">
 <title>Node53</title>
 <g id="a_node54"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="tvm::runtime::Array\l\&lt; tvm::TypeVar \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="237,-8584 237,-8614 350,-8614 350,-8584 237,-8584"/>
-<text text-anchor="start" x="245" y="-8602" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-8591" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::TypeVar &gt;</text>
+<polygon fill="#ffffff" stroke="#000000" points="237,-8535 237,-8565 350,-8565 350,-8535 237,-8535"/>
+<text text-anchor="start" x="245" y="-8553" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-8542" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::TypeVar &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node53 -->
 <g id="edge53" class="edge">
 <title>Node0&#45;&gt;Node53</title>
-<path fill="none" stroke="#191970" d="M67.2456,-5136.924C70.7105,-5414.7139 110.5733,-8505.0611 170,-8575 186.1938,-8594.0583 212.6075,-8600.8695 236.8595,-8602.5765"/>
-<polygon fill="#191970" stroke="#191970" points="70.7428,-5136.6677 67.1189,-5126.712 63.7433,-5136.7547 70.7428,-5136.6677"/>
+<path fill="none" stroke="#191970" d="M67.2498,-5111.7786C70.7728,-5387.5415 111.2659,-8455.3433 170,-8525 186.1464,-8544.1491 212.5551,-8551.1699 236.8161,-8553.0808"/>
+<polygon fill="#191970" stroke="#191970" points="70.7479,-5111.5957 67.1209,-5101.6411 63.7484,-5111.6848 70.7479,-5111.5957"/>
 </g>
 <!-- Node54 -->
 <g id="node55" class="node">
 <title>Node54</title>
-<g id="a_node55"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l Integer, Target \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="236,-8535 236,-8565 351,-8565 351,-8535 236,-8535"/>
-<text text-anchor="start" x="244" y="-8553" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="middle" x="293.5" y="-8542" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> Integer, Target &gt;</text>
+<g id="a_node55"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::GlobalTypeVar,\l tvm::TypeData \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="234.5,-8474.5 234.5,-8515.5 352.5,-8515.5 352.5,-8474.5 234.5,-8474.5"/>
+<text text-anchor="start" x="242.5" y="-8503.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="242.5" y="-8492.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::GlobalTypeVar,</text>
+<text text-anchor="middle" x="293.5" y="-8481.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::TypeData &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node54 -->
 <g id="edge54" class="edge">
 <title>Node0&#45;&gt;Node54</title>
-<path fill="none" stroke="#191970" d="M67.2523,-5136.6346C70.8105,-5410.3898 111.6856,-8455.8566 170,-8525 185.937,-8543.8965 211.8673,-8550.9819 235.8635,-8553.0014"/>
-<polygon fill="#191970" stroke="#191970" points="70.7513,-5136.5248 67.1222,-5126.5709 63.7519,-5136.6154 70.7513,-5136.5248"/>
+<path fill="none" stroke="#191970" d="M67.2696,-5111.838C71.026,-5385.3152 113.6318,-8395.5096 170,-8465 185.4289,-8484.0207 210.6965,-8492.187 234.3701,-8495.3357"/>
+<polygon fill="#191970" stroke="#191970" points="70.7684,-5111.7155 67.1319,-5101.7644 63.769,-5111.8113 70.7684,-5111.7155"/>
 </g>
 <!-- Node55 -->
 <g id="node56" class="node">
 <title>Node55</title>
-<g id="a_node56"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::GlobalTypeVar,\l tvm::TypeData \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="234.5,-8474.5 234.5,-8515.5 352.5,-8515.5 352.5,-8474.5 234.5,-8474.5"/>
-<text text-anchor="start" x="242.5" y="-8503.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="242.5" y="-8492.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::GlobalTypeVar,</text>
-<text text-anchor="middle" x="293.5" y="-8481.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::TypeData &gt;</text>
+<g id="a_node56"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::GlobalVar, tvm\l::BaseFunc \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="234.5,-8414.5 234.5,-8455.5 352.5,-8455.5 352.5,-8414.5 234.5,-8414.5"/>
+<text text-anchor="start" x="242.5" y="-8443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="242.5" y="-8432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::GlobalVar, tvm</text>
+<text text-anchor="middle" x="293.5" y="-8421.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::BaseFunc &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node55 -->
 <g id="edge55" class="edge">
 <title>Node0&#45;&gt;Node55</title>
-<path fill="none" stroke="#191970" d="M67.2778,-5137.0963C71.1058,-5411.1008 114.0691,-8396.0647 170,-8465 185.4311,-8484.0189 210.699,-8492.185 234.3722,-8495.334"/>
-<polygon fill="#191970" stroke="#191970" points="70.772,-5136.6423 67.1331,-5126.692 63.7726,-5136.7398 70.772,-5136.6423"/>
+<path fill="none" stroke="#191970" d="M67.2815,-5111.8863C71.1584,-5383.0271 114.6422,-8336.7937 170,-8405 185.4342,-8424.0164 210.7025,-8432.1821 234.3752,-8435.3316"/>
+<polygon fill="#191970" stroke="#191970" points="70.777,-5111.5399 67.1349,-5101.5907 63.7777,-5111.6396 70.777,-5111.5399"/>
 </g>
 <!-- Node56 -->
 <g id="node57" class="node">
 <title>Node56</title>
-<g id="a_node57"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::GlobalVar, tvm\l::BaseFunc \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="234.5,-8414.5 234.5,-8455.5 352.5,-8455.5 352.5,-8414.5 234.5,-8414.5"/>
-<text text-anchor="start" x="242.5" y="-8443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="242.5" y="-8432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::GlobalVar, tvm</text>
-<text text-anchor="middle" x="293.5" y="-8421.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::BaseFunc &gt;</text>
+<g id="a_node57"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::meta_schedule\l::Mutator, tvm::FloatImm \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="219,-8354.5 219,-8395.5 368,-8395.5 368,-8354.5 219,-8354.5"/>
+<text text-anchor="start" x="227" y="-8383.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="227" y="-8372.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::meta_schedule</text>
+<text text-anchor="middle" x="293.5" y="-8361.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::Mutator, tvm::FloatImm &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node56 -->
 <g id="edge56" class="edge">
 <title>Node0&#45;&gt;Node56</title>
-<path fill="none" stroke="#191970" d="M67.284,-5136.7363C71.196,-5405.8315 115.0515,-8337.3144 170,-8405 185.4364,-8424.0146 210.705,-8432.1801 234.3773,-8435.3299"/>
-<polygon fill="#191970" stroke="#191970" points="70.7806,-5136.4666 67.1362,-5126.5184 63.7813,-5136.568 70.7806,-5136.4666"/>
+<path fill="none" stroke="#191970" d="M67.2937,-5111.931C71.2934,-5380.6822 115.652,-8278.0771 170,-8345 182.1013,-8359.9013 200.241,-8368.1392 218.9172,-8372.5217"/>
+<polygon fill="#191970" stroke="#191970" points="70.7901,-5111.6529 67.1422,-5101.7059 63.7908,-5111.7567 70.7901,-5111.6529"/>
 </g>
 <!-- Node57 -->
 <g id="node58" class="node">
 <title>Node57</title>
-<g id="a_node58"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::meta_schedule\l::Mutator, tvm::FloatImm \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="219,-8354.5 219,-8395.5 368,-8395.5 368,-8354.5 219,-8354.5"/>
-<text text-anchor="start" x="227" y="-8383.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="227" y="-8372.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::meta_schedule</text>
-<text text-anchor="middle" x="293.5" y="-8361.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::Mutator, tvm::FloatImm &gt;</text>
+<g id="a_node58"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::relay::Var, tvm\l::runtime::ObjectRef \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="231,-8294.5 231,-8335.5 356,-8335.5 356,-8294.5 231,-8294.5"/>
+<text text-anchor="start" x="239" y="-8323.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="239" y="-8312.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::relay::Var, tvm</text>
+<text text-anchor="middle" x="293.5" y="-8301.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::runtime::ObjectRef &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node57 -->
 <g id="edge57" class="edge">
 <title>Node0&#45;&gt;Node57</title>
-<path fill="none" stroke="#191970" d="M67.2963,-5136.7779C71.3314,-5403.4641 116.0611,-8278.5975 170,-8345 182.1031,-8359.8998 200.2434,-8368.1372 218.9196,-8372.5197"/>
-<polygon fill="#191970" stroke="#191970" points="70.7938,-5136.5774 67.1435,-5126.6313 63.7946,-5136.6829 70.7938,-5136.5774"/>
+<path fill="none" stroke="#191970" d="M67.3,-5111.5635C71.3845,-5375.3589 116.6339,-8219.326 170,-8285 184.68,-8303.0656 208.2349,-8311.3362 230.8568,-8314.8169"/>
+<polygon fill="#191970" stroke="#191970" points="70.7991,-5111.4717 67.1453,-5101.5269 63.8,-5111.5797 70.7991,-5111.4717"/>
 </g>
 <!-- Node58 -->
 <g id="node59" class="node">
 <title>Node58</title>
-<g id="a_node59"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::relay::Var, tvm\l::runtime::ObjectRef \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="231,-8294.5 231,-8335.5 356,-8335.5 356,-8294.5 231,-8294.5"/>
-<text text-anchor="start" x="239" y="-8323.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="239" y="-8312.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::relay::Var, tvm</text>
-<text text-anchor="middle" x="293.5" y="-8301.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::runtime::ObjectRef &gt;</text>
+<g id="a_node59"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::runtime::String,\l tvm::GlobalTypeVar \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="230.5,-8234.5 230.5,-8275.5 356.5,-8275.5 356.5,-8234.5 230.5,-8234.5"/>
+<text text-anchor="start" x="238.5" y="-8263.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="238.5" y="-8252.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::String,</text>
+<text text-anchor="middle" x="293.5" y="-8241.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::GlobalTypeVar &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node58 -->
 <g id="edge58" class="edge">
 <title>Node0&#45;&gt;Node58</title>
-<path fill="none" stroke="#191970" d="M67.3089,-5136.8085C71.4685,-5400.9875 117.0697,-8219.8793 170,-8285 184.6823,-8303.0637 208.2376,-8311.334 230.8592,-8314.815"/>
-<polygon fill="#191970" stroke="#191970" points="70.8075,-5136.6816 67.151,-5126.7377 63.8083,-5136.7914 70.8075,-5136.6816"/>
+<path fill="none" stroke="#191970" d="M67.319,-5111.98C71.5679,-5375.6131 117.6681,-8160.6394 170,-8225 184.5463,-8242.8899 207.7957,-8251.1732 230.2191,-8254.7119"/>
+<polygon fill="#191970" stroke="#191970" points="70.813,-5111.5727 67.1529,-5101.6302 63.8139,-5111.6851 70.813,-5111.5727"/>
 </g>
 <!-- Node59 -->
 <g id="node60" class="node">
 <title>Node59</title>
-<g id="a_node60"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::runtime::String,\l tvm::GlobalTypeVar \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="230.5,-8234.5 230.5,-8275.5 356.5,-8275.5 356.5,-8234.5 230.5,-8234.5"/>
-<text text-anchor="start" x="238.5" y="-8263.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="238.5" y="-8252.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::String,</text>
-<text text-anchor="middle" x="293.5" y="-8241.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::GlobalTypeVar &gt;</text>
+<g id="a_node60"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::runtime::String,\l tvm::GlobalVar \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="233,-8174.5 233,-8215.5 354,-8215.5 354,-8174.5 233,-8174.5"/>
+<text text-anchor="start" x="241" y="-8203.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="241" y="-8192.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::String,</text>
+<text text-anchor="middle" x="293.5" y="-8181.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::GlobalVar &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node59 -->
 <g id="edge59" class="edge">
 <title>Node0&#45;&gt;Node59</title>
-<path fill="none" stroke="#191970" d="M67.3218,-5136.8206C71.6066,-5398.3506 118.0768,-8161.1593 170,-8225 184.5487,-8242.888 207.7985,-8251.171 230.2216,-8254.7099"/>
-<polygon fill="#191970" stroke="#191970" points="70.817,-5136.4949 67.1542,-5126.5533 63.8179,-5136.6091 70.817,-5136.4949"/>
+<path fill="none" stroke="#191970" d="M67.3322,-5111.9909C71.7083,-5372.9403 118.6749,-8101.919 170,-8165 185.1091,-8183.5698 209.5952,-8191.7877 232.7958,-8195.0929"/>
+<polygon fill="#191970" stroke="#191970" points="70.8274,-5111.6668 67.1608,-5101.7267 63.8284,-5111.7837 70.8274,-5111.6668"/>
 </g>
 <!-- Node60 -->
 <g id="node61" class="node">
 <title>Node60</title>
-<g id="a_node61"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::runtime::String,\l tvm::GlobalVar \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="233,-8174.5 233,-8215.5 354,-8215.5 354,-8174.5 233,-8174.5"/>
-<text text-anchor="start" x="241" y="-8203.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="241" y="-8192.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::String,</text>
-<text text-anchor="middle" x="293.5" y="-8181.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::GlobalVar &gt;</text>
+<g id="a_node61"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::runtime::String,\l tvm::runtime::Map\&lt; tvm\l::runtime::String, tvm::\lruntime::ObjectRef \&gt; \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="223.5,-8092.5 223.5,-8155.5 363.5,-8155.5 363.5,-8092.5 223.5,-8092.5"/>
+<text text-anchor="start" x="231.5" y="-8143.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="231.5" y="-8132.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::String,</text>
+<text text-anchor="start" x="231.5" y="-8121.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::Map&lt; tvm</text>
+<text text-anchor="start" x="231.5" y="-8110.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::runtime::String, tvm::</text>
+<text text-anchor="middle" x="293.5" y="-8099.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">runtime::ObjectRef &gt; &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node60 -->
 <g id="edge60" class="edge">
 <title>Node0&#45;&gt;Node60</title>
-<path fill="none" stroke="#191970" d="M67.335,-5136.8283C71.7473,-5395.6553 119.0834,-8102.4386 170,-8165 185.1116,-8183.5677 209.5981,-8191.7853 232.7983,-8195.0908"/>
-<polygon fill="#191970" stroke="#191970" points="70.8315,-5136.5866 67.1621,-5126.6475 63.8325,-5136.7056 70.8315,-5136.5866"/>
+<path fill="none" stroke="#191970" d="M67.035,-5111.7608C67.5603,-5364.3849 75.2549,-7956.3676 170,-8083 182.7897,-8100.0941 202.9656,-8110.1548 223.332,-8116.0454"/>
+<polygon fill="#191970" stroke="#191970" points="70.5346,-5111.5116 67.0151,-5101.5185 63.5347,-5111.5253 70.5346,-5111.5116"/>
 </g>
 <!-- Node61 -->
 <g id="node62" class="node">
 <title>Node61</title>
-<g id="a_node62"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::runtime::String,\l tvm::runtime::Map\&lt; tvm\l::runtime::String, tvm::\lruntime::ObjectRef \&gt; \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="223.5,-8092.5 223.5,-8155.5 363.5,-8155.5 363.5,-8092.5 223.5,-8092.5"/>
-<text text-anchor="start" x="231.5" y="-8143.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="231.5" y="-8132.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::String,</text>
-<text text-anchor="start" x="231.5" y="-8121.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::Map&lt; tvm</text>
-<text text-anchor="start" x="231.5" y="-8110.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::runtime::String, tvm::</text>
-<text text-anchor="middle" x="293.5" y="-8099.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">runtime::ObjectRef &gt; &gt;</text>
+<g id="a_node62"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::runtime::String,\l tvm::runtime::ObjectRef \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="219.5,-8032.5 219.5,-8073.5 367.5,-8073.5 367.5,-8032.5 219.5,-8032.5"/>
+<text text-anchor="start" x="227.5" y="-8061.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="227.5" y="-8050.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::String,</text>
+<text text-anchor="middle" x="293.5" y="-8039.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::ObjectRef &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node61 -->
 <g id="edge61" class="edge">
 <title>Node0&#45;&gt;Node61</title>
-<path fill="none" stroke="#191970" d="M67.0415,-5136.9772C67.6442,-5389.7064 76.0751,-7957.5019 170,-8083 182.7921,-8100.0923 202.9688,-8110.1525 223.335,-8116.0432"/>
-<polygon fill="#191970" stroke="#191970" points="70.5409,-5136.7035 67.0184,-5126.7114 63.541,-5136.7193 70.5409,-5136.7035"/>
+<path fill="none" stroke="#191970" d="M67.0128,-5111.7702C67.2562,-5361.8765 72.1377,-7902.9215 170,-8023 182.1969,-8037.9658 200.484,-8046.2058 219.2731,-8050.5694"/>
+<polygon fill="#191970" stroke="#191970" points="70.5127,-5111.6079 67.0043,-5101.6108 63.5127,-5111.6138 70.5127,-5111.6079"/>
 </g>
 <!-- Node62 -->
 <g id="node63" class="node">
 <title>Node62</title>
-<g id="a_node63"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::runtime::String,\l tvm::runtime::ObjectRef \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="219.5,-8032.5 219.5,-8073.5 367.5,-8073.5 367.5,-8032.5 219.5,-8032.5"/>
-<text text-anchor="start" x="227.5" y="-8061.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="227.5" y="-8050.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::String,</text>
-<text text-anchor="middle" x="293.5" y="-8039.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::ObjectRef &gt;</text>
+<g id="a_node63"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::SourceName, tvm\l::parser::Source \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="227,-7972.5 227,-8013.5 360,-8013.5 360,-7972.5 227,-7972.5"/>
+<text text-anchor="start" x="235" y="-8001.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="235" y="-7990.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::SourceName, tvm</text>
+<text text-anchor="middle" x="293.5" y="-7979.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::parser::Source &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node62 -->
 <g id="edge62" class="edge">
 <title>Node0&#45;&gt;Node62</title>
-<path fill="none" stroke="#191970" d="M67.0187,-5136.6017C67.3366,-5384.5759 72.9534,-7903.9591 170,-8023 182.1991,-8037.9639 200.4869,-8046.2034 219.276,-8050.567"/>
-<polygon fill="#191970" stroke="#191970" points="70.5187,-5136.5249 67.0072,-5126.5289 63.5187,-5136.5329 70.5187,-5136.5249"/>
+<path fill="none" stroke="#191970" d="M67.0277,-5111.739C67.4559,-5358.8712 74.1439,-7845.4712 170,-7963 183.8061,-7979.9276 205.4037,-7988.2493 226.7017,-7992.0897"/>
+<polygon fill="#191970" stroke="#191970" points="70.5277,-5111.6763 67.0117,-5101.682 63.5277,-5111.6875 70.5277,-5111.6763"/>
 </g>
 <!-- Node63 -->
 <g id="node64" class="node">
 <title>Node63</title>
-<g id="a_node64"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::SourceName, tvm\l::parser::Source \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="227,-7972.5 227,-8013.5 360,-8013.5 360,-7972.5 227,-7972.5"/>
-<text text-anchor="start" x="235" y="-8001.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="235" y="-7990.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::SourceName, tvm</text>
-<text text-anchor="middle" x="293.5" y="-7979.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::parser::Source &gt;</text>
+<g id="a_node64"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::Target, tvm::Integer \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="217.5,-7923 217.5,-7953 369.5,-7953 369.5,-7923 217.5,-7923"/>
+<text text-anchor="start" x="225.5" y="-7941" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="middle" x="293.5" y="-7930" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::Target, tvm::Integer &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node63 -->
 <g id="edge63" class="edge">
 <title>Node0&#45;&gt;Node63</title>
-<path fill="none" stroke="#191970" d="M67.0345,-5136.9334C67.5444,-5383.9935 75.0063,-7846.566 170,-7963 183.8088,-7979.9255 205.4069,-7988.2467 226.7047,-7992.0873"/>
-<polygon fill="#191970" stroke="#191970" points="70.5339,-5136.5909 67.0147,-5126.5977 63.5339,-5136.6044 70.5339,-5136.5909"/>
+<path fill="none" stroke="#191970" d="M67.0239,-5111.7723C67.4045,-5356.8341 73.6135,-7799.4401 170,-7913 181.891,-7927.0097 199.2753,-7934.5171 217.2677,-7938.2811"/>
+<polygon fill="#191970" stroke="#191970" points="70.5237,-5111.5152 67.0096,-5101.5202 63.5237,-5111.5251 70.5237,-5111.5152"/>
 </g>
 <!-- Node64 -->
 <g id="node65" class="node">
 <title>Node64</title>
-<g id="a_node65"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::Target, tvm::Integer \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="217.5,-7923 217.5,-7953 369.5,-7953 369.5,-7923 217.5,-7923"/>
-<text text-anchor="start" x="225.5" y="-7941" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="middle" x="293.5" y="-7930" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::Target, tvm::Integer &gt;</text>
+<g id="a_node65"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::Target, tvm::runtime\l::String \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="221,-7862.5 221,-7903.5 366,-7903.5 366,-7862.5 221,-7862.5"/>
+<text text-anchor="start" x="229" y="-7891.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="229" y="-7880.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::Target, tvm::runtime</text>
+<text text-anchor="middle" x="293.5" y="-7869.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::String &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node64 -->
 <g id="edge64" class="edge">
 <title>Node0&#45;&gt;Node64</title>
-<path fill="none" stroke="#191970" d="M67.031,-5136.9675C67.4954,-5381.9371 74.4965,-7800.5176 170,-7913 181.8933,-7927.0077 199.2784,-7934.5145 217.2707,-7938.2785"/>
-<polygon fill="#191970" stroke="#191970" points="70.5306,-5136.6942 67.013,-5126.7004 63.5306,-5136.7065 70.5306,-5136.6942"/>
+<path fill="none" stroke="#191970" d="M67.0566,-5111.7038C67.8328,-5353.4403 77.8235,-7740.1473 170,-7853 182.562,-7868.3798 201.5555,-7876.6536 220.9057,-7880.9168"/>
+<polygon fill="#191970" stroke="#191970" points="70.5563,-5111.5614 67.0256,-5101.5722 63.5563,-5111.5829 70.5563,-5111.5614"/>
 </g>
 <!-- Node65 -->
 <g id="node66" class="node">
 <title>Node65</title>
-<g id="a_node66"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::Target, tvm::runtime\l::String \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="221,-7862.5 221,-7903.5 366,-7903.5 366,-7862.5 221,-7862.5"/>
-<text text-anchor="start" x="229" y="-7891.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="229" y="-7880.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::Target, tvm::runtime</text>
-<text text-anchor="middle" x="293.5" y="-7869.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::String &gt;</text>
+<g id="a_node66"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::te::Operation,\l tvm::te::Stage \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="236,-7802.5 236,-7843.5 351,-7843.5 351,-7802.5 236,-7802.5"/>
+<text text-anchor="start" x="244" y="-7831.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="244" y="-7820.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::te::Operation,</text>
+<text text-anchor="middle" x="293.5" y="-7809.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::te::Stage &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node65 -->
 <g id="edge65" class="edge">
 <title>Node0&#45;&gt;Node65</title>
-<path fill="none" stroke="#191970" d="M67.0642,-5136.8908C67.9262,-5378.4677 78.6842,-7741.2398 170,-7853 182.5646,-7868.3777 201.5589,-7876.6508 220.909,-7880.9141"/>
-<polygon fill="#191970" stroke="#191970" points="70.5638,-5136.7357 67.0295,-5126.7478 63.5638,-5136.7597 70.5638,-5136.7357"/>
+<path fill="none" stroke="#191970" d="M67.0732,-5111.6365C68.0429,-5350.125 79.8238,-7682.6894 170,-7793 185.7803,-7812.3037 211.6922,-7820.411 235.7168,-7823.4451"/>
+<polygon fill="#191970" stroke="#191970" points="70.5732,-5111.6093 67.0339,-5101.6231 63.5732,-5111.6368 70.5732,-5111.6093"/>
 </g>
 <!-- Node66 -->
 <g id="node67" class="node">
 <title>Node66</title>
-<g id="a_node67"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::te::Operation,\l tvm::te::Stage \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="236,-7802.5 236,-7843.5 351,-7843.5 351,-7802.5 236,-7802.5"/>
-<text text-anchor="start" x="244" y="-7831.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="244" y="-7820.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::te::Operation,</text>
-<text text-anchor="middle" x="293.5" y="-7809.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::te::Stage &gt;</text>
+<g id="a_node67"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::tir::Instruction,\l tvm::runtime::ObjectRef \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="219.5,-7742.5 219.5,-7783.5 367.5,-7783.5 367.5,-7742.5 219.5,-7742.5"/>
+<text text-anchor="start" x="227.5" y="-7771.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="227.5" y="-7760.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::Instruction,</text>
+<text text-anchor="middle" x="293.5" y="-7749.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::ObjectRef &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node66 -->
 <g id="edge66" class="edge">
 <title>Node0&#45;&gt;Node66</title>
-<path fill="none" stroke="#191970" d="M67.0811,-5136.8082C68.1387,-5375.0305 80.6821,-7683.7791 170,-7793 185.7837,-7812.3009 211.696,-7820.4079 235.72,-7823.4425"/>
-<polygon fill="#191970" stroke="#191970" points="70.58,-5136.519 67.0371,-5126.5341 63.5801,-5136.5491 70.58,-5136.519"/>
+<path fill="none" stroke="#191970" d="M67.092,-5111.908C68.2701,-5348.9646 81.8658,-7625.2825 170,-7733 182.2257,-7747.9422 200.5219,-7756.1748 219.3106,-7760.5388"/>
+<polygon fill="#191970" stroke="#191970" points="70.5909,-5111.6489 67.0427,-5101.6659 63.591,-5111.6827 70.5909,-5111.6489"/>
 </g>
 <!-- Node67 -->
 <g id="node68" class="node">
 <title>Node67</title>
-<g id="a_node68"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::tir::Instruction,\l tvm::runtime::ObjectRef \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="219.5,-7742.5 219.5,-7783.5 367.5,-7783.5 367.5,-7742.5 219.5,-7742.5"/>
-<text text-anchor="start" x="227.5" y="-7771.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="227.5" y="-7760.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::Instruction,</text>
-<text text-anchor="middle" x="293.5" y="-7749.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::runtime::ObjectRef &gt;</text>
+<g id="a_node68"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::tir::IterVar,\l tvm::te::IterVarAttr \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="232.5,-7682.5 232.5,-7723.5 354.5,-7723.5 354.5,-7682.5 232.5,-7682.5"/>
+<text text-anchor="start" x="240.5" y="-7711.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="240.5" y="-7700.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::IterVar,</text>
+<text text-anchor="middle" x="293.5" y="-7689.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::te::IterVarAttr &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node67 -->
 <g id="edge67" class="edge">
 <title>Node0&#45;&gt;Node67</title>
-<path fill="none" stroke="#191970" d="M67.0987,-5136.7196C68.3549,-5371.5337 82.679,-7626.3168 170,-7733 182.2285,-7747.94 200.5256,-7756.1718 219.3142,-7760.5358"/>
-<polygon fill="#191970" stroke="#191970" points="70.598,-5136.5561 67.0459,-5126.5745 63.598,-5136.5926 70.598,-5136.5561"/>
+<path fill="none" stroke="#191970" d="M67.11,-5111.8096C68.4891,-5345.3838 83.861,-7567.8182 170,-7673 185.0285,-7691.3508 209.2127,-7699.5798 232.2132,-7702.9519"/>
+<polygon fill="#191970" stroke="#191970" points="70.6094,-5111.68 67.0519,-5101.7003 63.6096,-5111.7203 70.6094,-5111.68"/>
 </g>
 <!-- Node68 -->
 <g id="node69" class="node">
 <title>Node68</title>
-<g id="a_node69"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::tir::IterVar,\l tvm::te::IterVarAttr \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="232.5,-7682.5 232.5,-7723.5 354.5,-7723.5 354.5,-7682.5 232.5,-7682.5"/>
-<text text-anchor="start" x="240.5" y="-7711.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="240.5" y="-7700.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::IterVar,</text>
-<text text-anchor="middle" x="293.5" y="-7689.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::te::IterVarAttr &gt;</text>
+<g id="a_node69"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::tir::usmp::BufferInfo,\l tvm::tir::Stmt \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="220.5,-7622.5 220.5,-7663.5 366.5,-7663.5 366.5,-7622.5 220.5,-7622.5"/>
+<text text-anchor="start" x="228.5" y="-7651.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="228.5" y="-7640.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::usmp::BufferInfo,</text>
+<text text-anchor="middle" x="293.5" y="-7629.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::Stmt &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node68 -->
 <g id="edge68" class="edge">
 <title>Node0&#45;&gt;Node68</title>
-<path fill="none" stroke="#191970" d="M67.1168,-5136.6178C68.5747,-5367.9311 84.6738,-7568.852 170,-7673 185.032,-7691.3479 209.2168,-7699.5764 232.2168,-7702.949"/>
-<polygon fill="#191970" stroke="#191970" points="70.6167,-5136.5847 67.0552,-5126.6064 63.6169,-5136.6278 70.6167,-5136.5847"/>
+<path fill="none" stroke="#191970" d="M67.131,-5112.0418C68.7288,-5343.8503 85.896,-7510.4024 170,-7613 182.4494,-7628.1869 201.1693,-7636.4401 220.2952,-7640.7451"/>
+<polygon fill="#191970" stroke="#191970" points="70.6289,-5111.7023 67.0615,-5101.7262 63.629,-5111.7495 70.6289,-5111.7023"/>
 </g>
 <!-- Node69 -->
 <g id="node70" class="node">
 <title>Node69</title>
-<g id="a_node70"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::tir::usmp::BufferInfo,\l tvm::tir::Stmt \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="220.5,-7622.5 220.5,-7663.5 366.5,-7663.5 366.5,-7622.5 220.5,-7622.5"/>
-<text text-anchor="start" x="228.5" y="-7651.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="228.5" y="-7640.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::usmp::BufferInfo,</text>
-<text text-anchor="middle" x="293.5" y="-7629.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::Stmt &gt;</text>
+<g id="a_node70"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::tir::Var, tvm\l::PrimExpr \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="236,-7562.5 236,-7603.5 351,-7603.5 351,-7562.5 236,-7562.5"/>
+<text text-anchor="start" x="244" y="-7591.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="244" y="-7580.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::Var, tvm</text>
+<text text-anchor="middle" x="293.5" y="-7569.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::PrimExpr &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node69 -->
 <g id="edge69" class="edge">
 <title>Node0&#45;&gt;Node69</title>
-<path fill="none" stroke="#191970" d="M67.138,-5136.8432C68.8158,-5366.3544 86.7079,-7511.4351 170,-7613 182.4525,-7628.1843 201.1734,-7636.4367 220.2992,-7640.7418"/>
-<polygon fill="#191970" stroke="#191970" points="70.6365,-5136.6044 67.0649,-5126.6298 63.6366,-5136.6546 70.6365,-5136.6044"/>
+<path fill="none" stroke="#191970" d="M67.1533,-5112.2595C68.976,-5342.1482 87.9279,-7452.9824 170,-7553 185.8161,-7572.2743 211.7322,-7580.3782 235.7503,-7583.4177"/>
+<polygon fill="#191970" stroke="#191970" points="70.6512,-5111.9671 67.0735,-5101.9946 63.6514,-5112.0215 70.6512,-5111.9671"/>
 </g>
 <!-- Node70 -->
 <g id="node71" class="node">
 <title>Node70</title>
-<g id="a_node71"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::tir::Var, tvm\l::PrimExpr \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="236,-7562.5 236,-7603.5 351,-7603.5 351,-7562.5 236,-7562.5"/>
-<text text-anchor="start" x="244" y="-7591.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="244" y="-7580.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::Var, tvm</text>
-<text text-anchor="middle" x="293.5" y="-7569.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::PrimExpr &gt;</text>
+<g id="a_node71"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::tir::Var, tvm\l::Range \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="236,-7502.5 236,-7543.5 351,-7543.5 351,-7502.5 236,-7502.5"/>
+<text text-anchor="start" x="244" y="-7531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="244" y="-7520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::Var, tvm</text>
+<text text-anchor="middle" x="293.5" y="-7509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::Range &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node70 -->
 <g id="edge70" class="edge">
 <title>Node0&#45;&gt;Node70</title>
-<path fill="none" stroke="#191970" d="M67.1605,-5137.0538C69.0644,-5364.6088 88.7389,-7454.0141 170,-7553 185.8202,-7572.2709 211.7368,-7580.3744 235.7542,-7583.4145"/>
-<polygon fill="#191970" stroke="#191970" points="70.6592,-5136.864 67.0771,-5126.8931 63.6594,-5136.9216 70.6592,-5136.864"/>
+<path fill="none" stroke="#191970" d="M67.1706,-5111.7659C69.1882,-5336.0536 89.8743,-7395.4584 170,-7493 185.8261,-7512.2661 211.7434,-7520.369 235.7597,-7523.41"/>
+<polygon fill="#191970" stroke="#191970" points="70.6704,-5111.7197 67.0821,-5101.7511 63.6707,-5111.7817 70.6704,-5111.7197"/>
 </g>
 <!-- Node71 -->
 <g id="node72" class="node">
 <title>Node71</title>
-<g id="a_node72"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::tir::Var, tvm\l::Range \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="236,-7502.5 236,-7543.5 351,-7543.5 351,-7502.5 236,-7502.5"/>
-<text text-anchor="start" x="244" y="-7531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="244" y="-7520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::Var, tvm</text>
-<text text-anchor="middle" x="293.5" y="-7509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::Range &gt;</text>
+<g id="a_node72"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::tir::Var, tvm\l::tir::Buffer \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="236,-7442.5 236,-7483.5 351,-7483.5 351,-7442.5 236,-7442.5"/>
+<text text-anchor="start" x="244" y="-7471.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="244" y="-7460.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::Var, tvm</text>
+<text text-anchor="middle" x="293.5" y="-7449.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::tir::Buffer &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node71 -->
 <g id="edge71" class="edge">
 <title>Node0&#45;&gt;Node71</title>
-<path fill="none" stroke="#191970" d="M67.181,-5136.8924C69.298,-5360.5385 90.7248,-7396.538 170,-7493 185.8305,-7512.2625 211.7483,-7520.365 235.7638,-7523.4066"/>
-<polygon fill="#191970" stroke="#191970" points="70.6787,-5136.6166 67.0857,-5126.6496 63.679,-5136.6818 70.6787,-5136.6166"/>
+<path fill="none" stroke="#191970" d="M67.1913,-5111.5995C69.4228,-5331.9535 91.8596,-7337.9815 170,-7433 185.8367,-7452.2574 211.7553,-7460.3593 235.7696,-7463.4018"/>
+<polygon fill="#191970" stroke="#191970" points="70.6903,-5111.4722 67.0907,-5101.5076 63.6906,-5111.542 70.6903,-5111.4722"/>
 </g>
 <!-- Node72 -->
 <g id="node73" class="node">
 <title>Node72</title>
-<g id="a_node73"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title="tvm::runtime::Map\&lt;\l tvm::tir::Var, tvm\l::tir::Buffer \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="236,-7442.5 236,-7483.5 351,-7483.5 351,-7442.5 236,-7442.5"/>
-<text text-anchor="start" x="244" y="-7471.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="244" y="-7460.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> tvm::tir::Var, tvm</text>
-<text text-anchor="middle" x="293.5" y="-7449.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::tir::Buffer &gt;</text>
+<g id="a_node73"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::DiagnosticContext \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="216,-7393 216,-7423 371,-7423 371,-7393 216,-7393"/>
+<text text-anchor="start" x="224" y="-7411" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="293.5" y="-7400" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::DiagnosticContext &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node72 -->
 <g id="edge72" class="edge">
 <title>Node0&#45;&gt;Node72</title>
-<path fill="none" stroke="#191970" d="M67.2058,-5137.0598C69.559,-5358.4205 92.7487,-7339.108 170,-7433 185.8413,-7452.2536 211.7604,-7460.3551 235.7739,-7463.3983"/>
-<polygon fill="#191970" stroke="#191970" points="70.7039,-5136.851 67.0993,-5126.8882 63.7042,-5136.9244 70.7039,-5136.851"/>
+<path fill="none" stroke="#191970" d="M67.193,-5111.869C69.4073,-5331.1217 91.3933,-7292.8943 170,-7384 181.6289,-7397.478 198.3705,-7404.8067 215.7908,-7408.5355"/>
+<polygon fill="#191970" stroke="#191970" points="70.6922,-5111.7589 67.0929,-5101.7942 63.6926,-5111.8285 70.6922,-5111.7589"/>
 </g>
 <!-- Node73 -->
 <g id="node74" class="node">
 <title>Node73</title>
-<g id="a_node74"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::DiagnosticContext \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="216,-7393 216,-7423 371,-7423 371,-7393 216,-7393"/>
-<text text-anchor="start" x="224" y="-7411" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-7400" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::DiagnosticContext &gt;</text>
+<g id="a_node74"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::FloatImm \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-7344 229.5,-7374 357.5,-7374 357.5,-7344 229.5,-7344"/>
+<text text-anchor="start" x="237.5" y="-7362" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="293.5" y="-7351" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::FloatImm &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node73 -->
 <g id="edge73" class="edge">
 <title>Node0&#45;&gt;Node73</title>
-<path fill="none" stroke="#191970" d="M67.2043,-5136.977C69.5232,-5355.4437 92.2653,-7293.95 170,-7384 181.6322,-7397.4751 198.375,-7404.8028 215.7955,-7408.5315"/>
-<polygon fill="#191970" stroke="#191970" points="70.7012,-5136.6503 67.0968,-5126.6875 63.7016,-5136.7235 70.7012,-5136.6503"/>
+<path fill="none" stroke="#191970" d="M67.2119,-5111.7657C69.6134,-5327.9213 93.065,-7245.92 170,-7335 184.6336,-7351.9436 207.3475,-7359.1666 229.3252,-7361.7368"/>
+<polygon fill="#191970" stroke="#191970" points="70.7098,-5111.5461 67.1006,-5101.585 63.7103,-5111.6227 70.7098,-5111.5461"/>
 </g>
 <!-- Node74 -->
 <g id="node75" class="node">
 <title>Node74</title>
-<g id="a_node75"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::FloatImm \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-7344 229.5,-7374 357.5,-7374 357.5,-7344 229.5,-7344"/>
-<text text-anchor="start" x="237.5" y="-7362" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-7351" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::FloatImm &gt;</text>
+<g id="a_node75"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::Integer \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-7295 229.5,-7325 357.5,-7325 357.5,-7295 229.5,-7295"/>
+<text text-anchor="start" x="237.5" y="-7313" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="293.5" y="-7302" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Integer &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node74 -->
 <g id="edge74" class="edge">
 <title>Node0&#45;&gt;Node74</title>
-<path fill="none" stroke="#191970" d="M67.2275,-5137.2024C69.7566,-5354.1468 93.9752,-7247.0199 170,-7335 184.638,-7351.9399 207.3527,-7359.1621 229.3299,-7361.7327"/>
-<polygon fill="#191970" stroke="#191970" points="70.7245,-5136.9107 67.1098,-5126.9516 63.725,-5136.9911 70.7245,-5136.9107"/>
+<path fill="none" stroke="#191970" d="M67.2354,-5111.984C69.8483,-5326.5827 94.774,-7198.9889 170,-7286 184.6422,-7302.9361 207.3579,-7310.1576 229.3345,-7312.7287"/>
+<polygon fill="#191970" stroke="#191970" points="70.7336,-5111.8012 67.1137,-5101.844 63.7341,-5111.8853 70.7336,-5111.8012"/>
 </g>
 <!-- Node75 -->
 <g id="node76" class="node">
 <title>Node75</title>
-<g id="a_node76"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::Integer \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-7295 229.5,-7325 357.5,-7325 357.5,-7295 229.5,-7295"/>
-<text text-anchor="start" x="237.5" y="-7313" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-7302" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Integer &gt;</text>
+<g id="a_node76"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::IRModule \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-7246 229.5,-7276 357.5,-7276 357.5,-7246 229.5,-7246"/>
+<text text-anchor="start" x="237.5" y="-7264" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="293.5" y="-7253" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::IRModule &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node75 -->
 <g id="edge75" class="edge">
 <title>Node0&#45;&gt;Node75</title>
-<path fill="none" stroke="#191970" d="M67.2437,-5136.7565C69.9438,-5348.9118 95.6061,-7199.9983 170,-7286 184.6468,-7302.9322 207.3634,-7310.1529 229.3395,-7312.7245"/>
-<polygon fill="#191970" stroke="#191970" points="70.7432,-5136.6871 67.1178,-5126.7319 63.7437,-5136.7751 70.7432,-5136.6871"/>
+<path fill="none" stroke="#191970" d="M67.2594,-5111.8401C70.1039,-5323.0271 96.8062,-7150.7641 170,-7236 184.608,-7253.0114 207.3168,-7260.4082 229.2976,-7263.1624"/>
+<polygon fill="#191970" stroke="#191970" points="70.7562,-5111.5709 67.1235,-5101.6184 63.7568,-5111.6641 70.7562,-5111.5709"/>
 </g>
 <!-- Node76 -->
 <g id="node77" class="node">
 <title>Node76</title>
-<g id="a_node77"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::IRModule \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-7246 229.5,-7276 357.5,-7276 357.5,-7246 229.5,-7246"/>
-<text text-anchor="start" x="237.5" y="-7264" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-7253" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::IRModule &gt;</text>
+<g id="a_node77"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::meta_schedule::\lCostModel \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="226.5,-7185.5 226.5,-7226.5 360.5,-7226.5 360.5,-7185.5 226.5,-7185.5"/>
+<text text-anchor="start" x="234.5" y="-7214.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="start" x="234.5" y="-7203.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule::</text>
+<text text-anchor="middle" x="293.5" y="-7192.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">CostModel &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node76 -->
 <g id="edge76" class="edge">
 <title>Node0&#45;&gt;Node76</title>
-<path fill="none" stroke="#191970" d="M67.2677,-5136.609C70.1997,-5345.3353 97.6339,-7151.7762 170,-7236 184.6128,-7253.0072 207.3226,-7260.4032 229.3028,-7263.158"/>
-<polygon fill="#191970" stroke="#191970" points="70.766,-5136.4568 67.1275,-5126.5063 63.7667,-5136.5539 70.766,-5136.4568"/>
+<path fill="none" stroke="#191970" d="M67.3054,-5111.9026C70.5809,-5320.0202 100.4734,-7091.9209 170,-7176 183.7797,-7192.6639 205.1076,-7200.9658 226.1854,-7204.8659"/>
+<polygon fill="#191970" stroke="#191970" points="70.8034,-5111.7419 67.1481,-5101.7977 63.8043,-5111.851 70.8034,-5111.7419"/>
 </g>
 <!-- Node77 -->
 <g id="node78" class="node">
 <title>Node77</title>
-<g id="a_node78"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::meta_schedule::\lCostModel \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="226.5,-7185.5 226.5,-7226.5 360.5,-7226.5 360.5,-7185.5 226.5,-7185.5"/>
-<text text-anchor="start" x="234.5" y="-7214.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="start" x="234.5" y="-7203.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule::</text>
-<text text-anchor="middle" x="293.5" y="-7192.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">CostModel &gt;</text>
+<g id="a_node78"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::meta_schedule::\lSearchStrategy \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="226.5,-7125.5 226.5,-7166.5 360.5,-7166.5 360.5,-7125.5 226.5,-7125.5"/>
+<text text-anchor="start" x="234.5" y="-7154.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="start" x="234.5" y="-7143.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule::</text>
+<text text-anchor="middle" x="293.5" y="-7132.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">SearchStrategy &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node77 -->
 <g id="edge77" class="edge">
 <title>Node0&#45;&gt;Node77</title>
-<path fill="none" stroke="#191970" d="M67.3188,-5136.9721C70.7063,-5344.0285 101.3148,-7092.9889 170,-7176 183.7846,-7192.6597 205.1138,-7200.9607 226.1911,-7204.8612"/>
-<polygon fill="#191970" stroke="#191970" points="70.8137,-5136.6222 67.1522,-5126.6802 63.8146,-5136.7356 70.8137,-5136.6222"/>
+<path fill="none" stroke="#191970" d="M67.3307,-5111.6329C70.8402,-5315.1724 102.4442,-7034.4256 170,-7116 183.7918,-7132.6538 205.1226,-7140.9534 226.1993,-7144.8544"/>
+<polygon fill="#191970" stroke="#191970" points="70.8283,-5111.4546 67.158,-5101.5158 63.8293,-5111.5741 70.8283,-5111.4546"/>
 </g>
 <!-- Node78 -->
 <g id="node79" class="node">
 <title>Node78</title>
-<g id="a_node79"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::meta_schedule::\lSearchStrategy \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="226.5,-7125.5 226.5,-7166.5 360.5,-7166.5 360.5,-7125.5 226.5,-7125.5"/>
-<text text-anchor="start" x="234.5" y="-7154.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="start" x="234.5" y="-7143.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule::</text>
-<text text-anchor="middle" x="293.5" y="-7132.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">SearchStrategy &gt;</text>
+<g id="a_node79"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::meta_schedule::\lSpaceGenerator \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="226.5,-7065.5 226.5,-7106.5 360.5,-7106.5 360.5,-7065.5 226.5,-7065.5"/>
+<text text-anchor="start" x="234.5" y="-7094.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="start" x="234.5" y="-7083.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule::</text>
+<text text-anchor="middle" x="293.5" y="-7072.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">SpaceGenerator &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node78 -->
 <g id="edge78" class="edge">
 <title>Node0&#45;&gt;Node78</title>
-<path fill="none" stroke="#191970" d="M67.3503,-5137.0094C71.0017,-5340.8747 103.3188,-7035.5337 170,-7116 183.7971,-7132.6494 205.1292,-7140.948 226.2053,-7144.8494"/>
-<polygon fill="#191970" stroke="#191970" points="70.8469,-5136.7811 67.17,-5126.8448 63.848,-5136.9053 70.8469,-5136.7811"/>
+<path fill="none" stroke="#191970" d="M67.3682,-5111.9595C71.1707,-5313.6152 104.4797,-6977.0082 170,-7056 183.8047,-7072.6431 205.1386,-7080.9402 226.214,-7084.8422"/>
+<polygon fill="#191970" stroke="#191970" points="70.8623,-5111.6054 67.1761,-5101.6726 63.8636,-5111.7362 70.8623,-5111.6054"/>
 </g>
 <!-- Node79 -->
 <g id="node80" class="node">
 <title>Node79</title>
-<g id="a_node80"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::meta_schedule::\lSpaceGenerator \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="226.5,-7065.5 226.5,-7106.5 360.5,-7106.5 360.5,-7065.5 226.5,-7065.5"/>
-<text text-anchor="start" x="234.5" y="-7094.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="start" x="234.5" y="-7083.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule::</text>
-<text text-anchor="middle" x="293.5" y="-7072.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">SpaceGenerator &gt;</text>
+<g id="a_node80"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::PrimExpr \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-7016 229.5,-7046 357.5,-7046 357.5,-7016 229.5,-7016"/>
+<text text-anchor="start" x="237.5" y="-7034" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="293.5" y="-7023" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::PrimExpr &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node79 -->
 <g id="edge79" class="edge">
 <title>Node0&#45;&gt;Node79</title>
-<path fill="none" stroke="#191970" d="M67.3771,-5136.7056C71.2685,-5335.7966 105.2851,-6978.0327 170,-7056 183.8103,-7072.6384 205.1455,-7080.9344 226.2204,-7084.8369"/>
-<polygon fill="#191970" stroke="#191970" points="70.8735,-5136.4799 67.1805,-5126.5496 63.8748,-5136.6155 70.8735,-5136.4799"/>
+<path fill="none" stroke="#191970" d="M67.3778,-5112.0848C71.2154,-5311.5809 104.3581,-6931.5959 170,-7007 184.6999,-7023.8861 207.4271,-7031.0976 229.3967,-7033.6747"/>
+<polygon fill="#191970" stroke="#191970" points="70.8733,-5111.8087 67.1833,-5101.8772 63.8746,-5111.9421 70.8733,-5111.8087"/>
 </g>
 <!-- Node80 -->
 <g id="node81" class="node">
 <title>Node80</title>
-<g id="a_node81"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::PrimExpr \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-7016 229.5,-7046 357.5,-7046 357.5,-7016 229.5,-7016"/>
-<text text-anchor="start" x="237.5" y="-7034" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-7023" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::PrimExpr &gt;</text>
+<g id="a_node81"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Array\l\&lt; tvm::auto_scheduler::\lMeasureCallback \&gt; \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="226.5,-6945 226.5,-6997 360.5,-6997 360.5,-6945 226.5,-6945"/>
+<text text-anchor="start" x="234.5" y="-6985" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="start" x="234.5" y="-6974" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
+<text text-anchor="start" x="234.5" y="-6963" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::auto_scheduler::</text>
+<text text-anchor="middle" x="293.5" y="-6952" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">MeasureCallback &gt; &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node80 -->
 <g id="edge80" class="edge">
 <title>Node0&#45;&gt;Node80</title>
-<path fill="none" stroke="#191970" d="M67.3873,-5136.8228C71.3176,-5333.7168 105.1862,-6932.6004 170,-7007 184.7059,-7023.8809 207.4342,-7031.0914 229.4032,-7033.6691"/>
-<polygon fill="#191970" stroke="#191970" points="70.8852,-5136.6772 67.188,-5126.7484 63.8865,-5136.8157 70.8852,-5136.6772"/>
+<path fill="none" stroke="#191970" d="M67.4643,-5112.1804C72.0436,-5307.7065 110.2237,-6859.7801 170,-6935 183.6864,-6952.2224 205.1242,-6961.5212 226.3222,-6966.4442"/>
+<polygon fill="#191970" stroke="#191970" points="70.9574,-5111.836 67.2259,-5101.92 63.9593,-5111.9987 70.9574,-5111.836"/>
 </g>
 <!-- Node81 -->
 <g id="node82" class="node">
 <title>Node81</title>
-<g id="a_node82"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Array\l\&lt; tvm::auto_scheduler::\lMeasureCallback \&gt; \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="226.5,-6945 226.5,-6997 360.5,-6997 360.5,-6945 226.5,-6945"/>
-<text text-anchor="start" x="234.5" y="-6985" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="start" x="234.5" y="-6974" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
-<text text-anchor="start" x="234.5" y="-6963" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::auto_scheduler::</text>
-<text text-anchor="middle" x="293.5" y="-6952" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">MeasureCallback &gt; &gt;</text>
+<g id="a_node82"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Array\l\&lt; tvm::FloatImm \&gt; \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-6884.5 229.5,-6925.5 357.5,-6925.5 357.5,-6884.5 229.5,-6884.5"/>
+<text text-anchor="start" x="237.5" y="-6913.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="start" x="237.5" y="-6902.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-6891.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::FloatImm &gt; &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node81 -->
 <g id="edge81" class="edge">
 <title>Node0&#45;&gt;Node81</title>
-<path fill="none" stroke="#191970" d="M67.4736,-5136.9069C72.142,-5329.7829 111.0036,-6860.8198 170,-6935 183.693,-6952.2171 205.1323,-6961.5147 226.3297,-6966.4382"/>
-<polygon fill="#191970" stroke="#191970" points="70.9697,-5136.6986 67.2305,-5126.7856 63.9718,-5136.8668 70.9697,-5136.6986"/>
+<path fill="none" stroke="#191970" d="M67.4741,-5111.8239C72.1119,-5302.355 110.4914,-6803.6422 170,-6875 184.5554,-6892.4537 207.3905,-6900.719 229.4865,-6904.3643"/>
+<polygon fill="#191970" stroke="#191970" points="70.9678,-5111.5178 67.2273,-5101.6052 63.9699,-5111.6869 70.9678,-5111.5178"/>
 </g>
 <!-- Node82 -->
 <g id="node83" class="node">
 <title>Node82</title>
-<g id="a_node83"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Array\l\&lt; tvm::FloatImm \&gt; \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-6884.5 229.5,-6925.5 357.5,-6925.5 357.5,-6884.5 229.5,-6884.5"/>
-<text text-anchor="start" x="237.5" y="-6913.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="start" x="237.5" y="-6902.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-6891.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::FloatImm &gt; &gt;</text>
+<g id="a_node83"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Array\l\&lt; tvm::Integer \&gt; \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-6824.5 229.5,-6865.5 357.5,-6865.5 357.5,-6824.5 229.5,-6824.5"/>
+<text text-anchor="start" x="237.5" y="-6853.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="start" x="237.5" y="-6842.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-6831.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Integer &gt; &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node82 -->
 <g id="edge82" class="edge">
 <title>Node0&#45;&gt;Node82</title>
-<path fill="none" stroke="#191970" d="M67.4984,-5137.1259C72.2938,-5327.4307 111.3542,-6804.7353 170,-6875 184.5626,-6892.4477 207.3991,-6900.7119 229.4942,-6904.3579"/>
-<polygon fill="#191970" stroke="#191970" points="70.9914,-5136.7991 67.2424,-5126.8898 63.9936,-5136.9742 70.9914,-5136.7991"/>
+<path fill="none" stroke="#191970" d="M67.5124,-5111.7256C72.4387,-5298.245 112.4769,-6746.1634 170,-6815 184.5022,-6832.3544 207.1899,-6840.6211 229.1834,-6844.2952"/>
+<polygon fill="#191970" stroke="#191970" points="71.0104,-5111.5979 67.2493,-5101.6931 64.0128,-5111.7814 71.0104,-5111.5979"/>
 </g>
 <!-- Node83 -->
 <g id="node84" class="node">
 <title>Node83</title>
-<g id="a_node84"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Array\l\&lt; tvm::Integer \&gt; \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-6824.5 229.5,-6865.5 357.5,-6865.5 357.5,-6824.5 229.5,-6824.5"/>
-<text text-anchor="start" x="237.5" y="-6853.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="start" x="237.5" y="-6842.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-6831.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Integer &gt; &gt;</text>
+<g id="a_node84"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Array\l\&lt; tvm::meta_schedule::BuilderResult \&gt; \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="183,-6764.5 183,-6805.5 404,-6805.5 404,-6764.5 183,-6764.5"/>
+<text text-anchor="start" x="191" y="-6793.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="start" x="191" y="-6782.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-6771.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule::BuilderResult &gt; &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node83 -->
 <g id="edge83" class="edge">
 <title>Node0&#45;&gt;Node83</title>
-<path fill="none" stroke="#191970" d="M67.53,-5136.7154C72.5827,-5321.6776 113.3071,-6747.2173 170,-6815 184.5098,-6832.348 207.199,-6840.6135 229.1916,-6844.2884"/>
-<polygon fill="#191970" stroke="#191970" points="71.0243,-5136.4539 67.2543,-5126.5526 64.0268,-5136.6438 71.0243,-5136.4539"/>
+<path fill="none" stroke="#191970" d="M67.5602,-5111.8689C72.8138,-5295.3163 114.4859,-6688.7125 170,-6755 173.7542,-6759.4827 178.0545,-6763.3588 182.7476,-6766.7059"/>
+<polygon fill="#191970" stroke="#191970" points="71.0557,-5111.657 67.2727,-5101.7606 64.0585,-5111.8561 71.0557,-5111.657"/>
 </g>
 <!-- Node84 -->
 <g id="node85" class="node">
 <title>Node84</title>
-<g id="a_node85"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Array\l\&lt; tvm::meta_schedule::BuilderResult \&gt; \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="183,-6764.5 183,-6805.5 404,-6805.5 404,-6764.5 183,-6764.5"/>
-<text text-anchor="start" x="191" y="-6793.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="start" x="191" y="-6782.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-6771.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule::BuilderResult &gt; &gt;</text>
+<g id="a_node85"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Array\l\&lt; tvm::meta_schedule::MeasureCandidate \&gt; \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="170,-6704.5 170,-6745.5 417,-6745.5 417,-6704.5 170,-6704.5"/>
+<text text-anchor="start" x="178" y="-6733.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="start" x="178" y="-6722.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-6711.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule::MeasureCandidate &gt; &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node84 -->
 <g id="edge84" class="edge">
 <title>Node0&#45;&gt;Node84</title>
-<path fill="none" stroke="#191970" d="M67.5787,-5136.8418C72.9617,-5318.6315 115.3138,-6689.7635 170,-6755 173.7563,-6759.4809 178.0582,-6763.3557 182.7527,-6766.7016"/>
-<polygon fill="#191970" stroke="#191970" points="71.0704,-5136.5068 67.2778,-5126.614 64.0735,-5136.7127 71.0704,-5136.5068"/>
+<path fill="none" stroke="#191970" d="M67.6106,-5111.9682C73.1991,-5292.0728 116.4889,-6631.2538 170,-6695 172.9082,-6698.4644 176.1425,-6701.5663 179.6322,-6704.3416"/>
+<polygon fill="#191970" stroke="#191970" points="71.1039,-5111.6944 67.2973,-5101.807 64.1072,-5111.9102 71.1039,-5111.6944"/>
 </g>
 <!-- Node85 -->
 <g id="node86" class="node">
 <title>Node85</title>
-<g id="a_node86"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Array\l\&lt; tvm::meta_schedule::MeasureCandidate \&gt; \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="170,-6704.5 170,-6745.5 417,-6745.5 417,-6704.5 170,-6704.5"/>
-<text text-anchor="start" x="178" y="-6733.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="start" x="178" y="-6722.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-6711.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule::MeasureCandidate &gt; &gt;</text>
+<g id="a_node86"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Array\l\&lt; tvm::meta_schedule::RunnerFuture \&gt; \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="183.5,-6644.5 183.5,-6685.5 403.5,-6685.5 403.5,-6644.5 183.5,-6644.5"/>
+<text text-anchor="start" x="191.5" y="-6673.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="start" x="191.5" y="-6662.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
+<text text-anchor="middle" x="293.5" y="-6651.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule::RunnerFuture &gt; &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node85 -->
 <g id="edge85" class="edge">
 <title>Node0&#45;&gt;Node85</title>
-<path fill="none" stroke="#191970" d="M67.6214,-5136.657C73.3068,-5313.9556 117.2881,-6632.2705 170,-6695 172.9099,-6698.4629 176.1457,-6701.5636 179.6366,-6704.3379"/>
-<polygon fill="#191970" stroke="#191970" points="71.1195,-5136.5376 67.3026,-5126.6542 64.1231,-5136.7607 71.1195,-5136.5376"/>
+<path fill="none" stroke="#191970" d="M67.6635,-5112.0214C73.5945,-5288.5154 118.4856,-6573.7873 170,-6635 173.907,-6639.6425 178.3997,-6643.6338 183.3072,-6647.0602"/>
+<polygon fill="#191970" stroke="#191970" points="71.1551,-5111.7088 67.3231,-5101.8313 64.159,-5111.9426 71.1551,-5111.7088"/>
 </g>
 <!-- Node86 -->
 <g id="node87" class="node">
 <title>Node86</title>
-<g id="a_node87"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Array\l\&lt; tvm::meta_schedule::RunnerFuture \&gt; \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="183.5,-6644.5 183.5,-6685.5 403.5,-6685.5 403.5,-6644.5 183.5,-6644.5"/>
-<text text-anchor="start" x="191.5" y="-6673.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="start" x="191.5" y="-6662.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Array</text>
-<text text-anchor="middle" x="293.5" y="-6651.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::meta_schedule::RunnerFuture &gt; &gt;</text>
+<g id="a_node87"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Map\&lt; tvm\l::runtime::String, tvm::\lruntime::NDArray \&gt; \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="219,-6573 219,-6625 368,-6625 368,-6573 219,-6573"/>
+<text text-anchor="start" x="227" y="-6613" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="start" x="227" y="-6602" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Map&lt; tvm</text>
+<text text-anchor="start" x="227" y="-6591" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::runtime::String, tvm::</text>
+<text text-anchor="middle" x="293.5" y="-6580" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">runtime::NDArray &gt; &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node86 -->
 <g id="edge86" class="edge">
 <title>Node0&#45;&gt;Node86</title>
-<path fill="none" stroke="#191970" d="M67.6749,-5136.6974C73.7042,-5310.3346 119.2836,-6574.8024 170,-6635 173.9095,-6639.6404 178.4042,-6643.63 183.3133,-6647.0551"/>
-<polygon fill="#191970" stroke="#191970" points="71.1718,-5136.5454 67.3288,-5126.6722 64.176,-5136.787 71.1718,-5136.5454"/>
+<path fill="none" stroke="#191970" d="M67.7408,-5111.8649C74.205,-5283.0884 121.9381,-6504.8386 170,-6564 182.1548,-6578.9619 200.1956,-6587.8087 218.7571,-6592.9648"/>
+<polygon fill="#191970" stroke="#191970" points="71.234,-5111.6145 67.3611,-5101.753 64.2389,-5111.8773 71.234,-5111.6145"/>
 </g>
 <!-- Node87 -->
 <g id="node88" class="node">
 <title>Node87</title>
-<g id="a_node88"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::Map\&lt; tvm\l::runtime::String, tvm::\lruntime::NDArray \&gt; \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="219,-6573 219,-6625 368,-6625 368,-6573 219,-6573"/>
-<text text-anchor="start" x="227" y="-6613" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="start" x="227" y="-6602" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Map&lt; tvm</text>
-<text text-anchor="start" x="227" y="-6591" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::runtime::String, tvm::</text>
-<text text-anchor="middle" x="293.5" y="-6580" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">runtime::NDArray &gt; &gt;</text>
+<g id="a_node88"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::NDArray \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="218.5,-6524 218.5,-6554 368.5,-6554 368.5,-6524 218.5,-6524"/>
+<text text-anchor="start" x="226.5" y="-6542" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="293.5" y="-6531" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::NDArray &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node87 -->
 <g id="edge87" class="edge">
 <title>Node0&#45;&gt;Node87</title>
-<path fill="none" stroke="#191970" d="M67.0572,-5136.6588C67.7078,-5301.342 75.6222,-6447.9691 170,-6564 182.1638,-6578.9546 200.2075,-6587.7991 218.7689,-6592.9552"/>
-<polygon fill="#191970" stroke="#191970" points="70.5569,-5136.5139 67.0219,-5126.5262 63.5569,-5136.5384 70.5569,-5136.5139"/>
+<path fill="none" stroke="#191970" d="M67.7675,-5112.2535C74.2773,-5281.8012 121.1961,-6459.9754 170,-6515 182.3193,-6528.8896 200.0731,-6536.2015 218.2943,-6539.7725"/>
+<polygon fill="#191970" stroke="#191970" points="71.2481,-5111.6776 67.3691,-5101.8184 64.2532,-5111.9447 71.2481,-5111.6776"/>
 </g>
 <!-- Node88 -->
 <g id="node89" class="node">
 <title>Node88</title>
-<g id="a_node89"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::NDArray \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="218.5,-6524 218.5,-6554 368.5,-6554 368.5,-6524 218.5,-6524"/>
-<text text-anchor="start" x="226.5" y="-6542" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-6531" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::NDArray &gt;</text>
+<g id="a_node89"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::ObjectRef \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="215.5,-6475 215.5,-6505 371.5,-6505 371.5,-6475 215.5,-6475"/>
+<text text-anchor="start" x="223.5" y="-6493" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="293.5" y="-6482" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::ObjectRef &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node88 -->
 <g id="edge88" class="edge">
 <title>Node0&#45;&gt;Node88</title>
-<path fill="none" stroke="#191970" d="M67.7802,-5136.898C74.3952,-5303.4704 122.0142,-6460.9679 170,-6515 182.3283,-6528.8817 200.085,-6536.1909 218.3063,-6539.7619"/>
-<polygon fill="#191970" stroke="#191970" points="71.2673,-5136.5002 67.3754,-5126.6461 64.2728,-5136.7765 71.2673,-5136.5002"/>
+<path fill="none" stroke="#191970" d="M67.063,-5112.1929C67.7535,-5274.2823 75.8872,-6360.1653 170,-6466 181.684,-6479.1393 198.2317,-6486.3883 215.4288,-6490.1523"/>
+<polygon fill="#191970" stroke="#191970" points="70.5616,-5111.7762 67.0239,-5101.7895 63.5616,-5111.8026 70.5616,-5111.7762"/>
 </g>
 <!-- Node89 -->
 <g id="node90" class="node">
 <title>Node89</title>
-<g id="a_node90"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::ObjectRef \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="215.5,-6475 215.5,-6505 371.5,-6505 371.5,-6475 215.5,-6475"/>
-<text text-anchor="start" x="223.5" y="-6493" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-6482" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::ObjectRef &gt;</text>
+<g id="a_node90"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::String \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="225,-6426 225,-6456 362,-6456 362,-6426 225,-6426"/>
+<text text-anchor="start" x="233" y="-6444" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="293.5" y="-6433" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
 </a>
 </g>
 </g>
 <!-- Node0&#45;&gt;Node89 -->
 <g id="edge89" class="edge">
 <title>Node0&#45;&gt;Node89</title>
-<path fill="none" stroke="#191970" d="M67.0905,-5136.8264C67.9978,-5295.9736 77.5182,-6362.144 170,-6466 181.6931,-6479.1312 198.2441,-6486.3773 215.4416,-6490.1409"/>
-<polygon fill="#191970" stroke="#191970" points="70.5894,-5136.5934 67.0374,-5126.6118 63.5895,-5136.6299 70.5894,-5136.5934"/>
+<path fill="none" stroke="#191970" d="M67.1203,-5111.9603C68.2548,-5269.9532 79.1775,-6315.1483 170,-6417 183.81,-6432.487 204.3776,-6439.7848 224.7857,-6442.8386"/>
+<polygon fill="#191970" stroke="#191970" points="70.6192,-5111.7709 67.0524,-5101.7945 63.6194,-5111.8177 70.6192,-5111.7709"/>
 </g>
 <!-- Node90 -->
 <g id="node91" class="node">
 <title>Node90</title>
-<g id="a_node91"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::runtime::String \&gt;">
-<polygon fill="#ffffff" stroke="#000000" points="225,-6426 225,-6456 362,-6456 362,-6426 225,-6426"/>
-<text text-anchor="start" x="233" y="-6444" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-6433" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
+<g id="a_node91"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="tvm::runtime::Optional\l\&lt; tvm::Target \&gt;">
+<polygon fill="#ffffff" stroke="#000000" points="229.5,-6377 229.5,-6407 357.5,-6407 357.5,-6377 229.5,-6377"/>
+<text text-anchor="start" x="237.5" y="-6395" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="293.5" y="-6384" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::Target &gt;</text>
 </a>
 </g>
 </g>
... 12111 lines suppressed ...