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/03/16 23:05:19 UTC

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

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

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


The following commit(s) were added to refs/heads/asf-site2 by this push:
     new 6146bc7  deploying docs (apache/tvm@15c1f75b84dde60df3f7f957ab2f1827ff6a76ef)
6146bc7 is described below

commit 6146bc7087d673772181d92a39ce68d2222359c3
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Wed Mar 16 22:59:40 2022 +0000

    deploying docs (apache/tvm@15c1f75b84dde60df3f7f957ab2f1827ff6a76ef)
---
 .../using_relay_viz.ipynb                          |    2 +-
 .../deploy_prequantized.ipynb                      |    2 +-
 .../using_relay_viz.py                             |    2 +
 .../deploy_prequantized.py                         |    3 +-
 docs/_sources/contribute/ci.rst.txt                |    5 +-
 .../how_to/compile_models/from_mxnet.rst.txt       |    2 +-
 .../how_to/compile_models/from_onnx.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        |   13 +-
 .../deploy_models/deploy_prequantized.rst.txt      |    9 +-
 .../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 +-
 .../extend_tvm/low_level_custom_pass.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 |   32 +-
 .../how_to/optimize_operators/opt_gemm.rst.txt     |  123 +-
 .../optimize_operators/sg_execution_times.rst.txt  |    8 +-
 .../sg_execution_times.rst.txt                     |   16 +-
 .../tune_conv2d_layer_cuda.rst.txt                 | 2410 +++++++-
 .../tune_network_cuda.rst.txt                      |    2 +-
 .../tune_network_x86.rst.txt                       |    4 +-
 .../tune_sparse_x86.rst.txt                        |   43 +-
 .../tune_with_autotvm/sg_execution_times.rst.txt   |   12 +-
 .../tune_with_autotvm/tune_conv2d_cuda.rst.txt     | 2176 ++++++-
 .../tune_with_autotvm/tune_relay_cuda.rst.txt      |    2 +-
 .../work_with_microtvm/micro_autotune.rst.txt      |   16 +-
 .../how_to/work_with_microtvm/micro_tflite.rst.txt |   10 +-
 .../work_with_microtvm/sg_execution_times.rst.txt  |   12 +-
 .../work_with_relay/sg_execution_times.rst.txt     |    8 +-
 .../how_to/work_with_relay/using_relay_viz.rst.txt |    2 +
 .../how_to/work_with_schedules/intrin_math.rst.txt |   20 +-
 .../how_to/work_with_schedules/reduction.rst.txt   |   84 +-
 .../how_to/work_with_schedules/scan.rst.txt        |   40 +-
 .../schedule_primitives.rst.txt                    |   90 +-
 .../work_with_schedules/sg_execution_times.rst.txt |   18 +-
 .../how_to/work_with_schedules/tensorize.rst.txt   |   36 +-
 .../work_with_schedules/tuple_inputs.rst.txt       |   46 +-
 docs/_sources/reference/api/python/contrib.rst.txt |    4 +-
 .../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 +-
 .../topic/vta/tutorials/matrix_multiply.rst.txt    |   38 +-
 .../vta/tutorials/optimize/convolution_opt.rst.txt |   62 +-
 .../tutorials/optimize/matrix_multiply_opt.rst.txt |   50 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |    6 +-
 .../topic/vta/tutorials/sg_execution_times.rst.txt |    6 +-
 .../topic/vta/tutorials/vta_get_started.rst.txt    |   20 +-
 .../tutorial/auto_scheduler_matmul_x86.rst.txt     |   30 +-
 docs/_sources/tutorial/autotvm_relay_x86.rst.txt   |   56 +-
 .../tutorial/cross_compilation_and_rpc.rst.txt     |    2 +-
 docs/_sources/tutorial/intro_topi.rst.txt          |  331 +-
 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       |  165 +-
 docs/commit_hash                                   |    1 +
 docs/contribute/ci.html                            |    7 +-
 docs/genindex.html                                 |   67 +-
 docs/how_to/compile_models/from_caffe2.html        |    4 +-
 docs/how_to/compile_models/from_darknet.html       |    4 +-
 docs/how_to/compile_models/from_keras.html         |    4 +-
 docs/how_to/compile_models/from_mxnet.html         |    6 +-
 docs/how_to/compile_models/from_onnx.html          |    6 +-
 docs/how_to/compile_models/from_paddle.html        |    2 +-
 docs/how_to/compile_models/from_pytorch.html       |    7 +-
 docs/how_to/compile_models/from_tensorflow.html    |    2 +-
 docs/how_to/compile_models/from_tflite.html        |    4 +-
 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           |   48 +-
 docs/how_to/deploy_models/deploy_prequantized.html |   13 +-
 .../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  |   39 +-
 docs/how_to/deploy_models/sg_execution_times.html  |   18 +-
 .../extend_tvm/bring_your_own_datatypes.html       |    4 +-
 docs/how_to/extend_tvm/low_level_custom_pass.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    |   32 +-
 docs/how_to/optimize_operators/opt_gemm.html       |  123 +-
 .../optimize_operators/sg_execution_times.html     |    8 +-
 .../sg_execution_times.html                        |   14 +-
 .../tune_conv2d_layer_cuda.html                    | 2410 +++++++-
 .../tune_with_autoscheduler/tune_network_cuda.html |    2 +-
 .../tune_with_autoscheduler/tune_network_x86.html  |    4 +-
 .../tune_with_autoscheduler/tune_sparse_x86.html   |   43 +-
 .../tune_with_autotvm/sg_execution_times.html      |   12 +-
 .../how_to/tune_with_autotvm/tune_conv2d_cuda.html | 2176 ++++++-
 docs/how_to/tune_with_autotvm/tune_relay_cuda.html |    2 +-
 docs/how_to/work_with_microtvm/micro_autotune.html |   16 +-
 docs/how_to/work_with_microtvm/micro_tflite.html   |   10 +-
 .../work_with_microtvm/sg_execution_times.html     |   12 +-
 .../how_to/work_with_relay/sg_execution_times.html |    8 +-
 docs/how_to/work_with_relay/using_relay_viz.html   |    1 +
 docs/how_to/work_with_schedules/intrin_math.html   |   20 +-
 docs/how_to/work_with_schedules/reduction.html     |   84 +-
 docs/how_to/work_with_schedules/scan.html          |   40 +-
 .../work_with_schedules/schedule_primitives.html   |   90 +-
 .../work_with_schedules/sg_execution_times.html    |   18 +-
 docs/how_to/work_with_schedules/tensorize.html     |   36 +-
 docs/how_to/work_with_schedules/tuple_inputs.html  |   46 +-
 docs/objects.inv                                   |  Bin 22072 -> 22171 bytes
 docs/py-modindex.html                              |    5 +
 docs/reference/api/doxygen/affine__type_8h.html    |    2 +-
 .../api/doxygen/affine__type_8h_source.html        |    2 +-
 docs/reference/api/doxygen/algorithm_8h.html       |    2 +-
 .../reference/api/doxygen/algorithm_8h_source.html |    4 +-
 docs/reference/api/doxygen/algorithms_8h.html      |    2 +-
 .../api/doxygen/algorithms_8h_source.html          |    2 +-
 docs/reference/api/doxygen/analyzer_8h.html        |    2 +-
 docs/reference/api/doxygen/analyzer_8h_source.html |    2 +-
 docs/reference/api/doxygen/annotated.html          |  210 +-
 docs/reference/api/doxygen/annotation_8h.html      |    2 +-
 .../api/doxygen/annotation_8h_source.html          |    4 +-
 docs/reference/api/doxygen/arg__info_8h.html       |    2 +-
 .../reference/api/doxygen/arg__info_8h_source.html |    6 +-
 docs/reference/api/doxygen/array_8h.html           |    4 +-
 docs/reference/api/doxygen/array_8h__dep__incl.svg | 1074 ++--
 docs/reference/api/doxygen/array_8h_source.html    |    2 +-
 docs/reference/api/doxygen/array__utils_8h.html    |    4 +-
 .../api/doxygen/array__utils_8h__dep__incl.svg     |   44 +-
 .../api/doxygen/array__utils_8h__incl.svg          | 1445 ++---
 .../api/doxygen/array__utils_8h_source.html        |    2 +-
 .../api/doxygen/attr__registry__map_8h.html        |    2 +-
 .../api/doxygen/attr__registry__map_8h_source.html |    2 +-
 docs/reference/api/doxygen/auto__schedule_8h.html  |    4 +-
 .../api/doxygen/auto__schedule_8h__incl.svg        | 1618 +++--
 .../api/doxygen/auto__schedule_8h_source.html      |    2 +-
 .../doxygen/auto__scheduler_2cost__model_8h.html   |    4 +-
 .../auto__scheduler_2cost__model_8h__incl.svg      | 1305 ++--
 .../auto__scheduler_2cost__model_8h_source.html    |    2 +-
 .../api/doxygen/auto__scheduler_2feature_8h.html   |   11 +-
 .../doxygen/auto__scheduler_2feature_8h__incl.svg  | 2133 +++----
 .../auto__scheduler_2feature_8h_source.html        |    5 +-
 docs/reference/api/doxygen/autodiff_8h.html        |    2 +-
 docs/reference/api/doxygen/autodiff_8h_source.html |    2 +-
 docs/reference/api/doxygen/bias__add_8h.html       |    4 +-
 docs/reference/api/doxygen/bias__add_8h__incl.svg  | 1760 +++---
 .../reference/api/doxygen/bias__add_8h_source.html |    2 +-
 docs/reference/api/doxygen/bitserial_8h.html       |    2 +-
 .../reference/api/doxygen/bitserial_8h_source.html |    4 +-
 docs/reference/api/doxygen/block__scope_8h.html    |    2 +-
 .../api/doxygen/block__scope_8h_source.html        |    2 +-
 docs/reference/api/doxygen/bound_8h.html           |    2 +-
 docs/reference/api/doxygen/bound_8h_source.html    |    2 +-
 docs/reference/api/doxygen/broadcast_8h.html       |   20 +-
 .../api/doxygen/broadcast_8h__dep__incl.svg        |   92 +-
 docs/reference/api/doxygen/broadcast_8h__incl.svg  | 1410 ++---
 .../reference/api/doxygen/broadcast_8h_source.html |   32 +-
 docs/reference/api/doxygen/buffer_8h.html          |    8 +-
 docs/reference/api/doxygen/buffer_8h_source.html   |   53 +-
 docs/reference/api/doxygen/builder_8h.html         |    2 +-
 docs/reference/api/doxygen/builder_8h_source.html  |    2 +-
 docs/reference/api/doxygen/builtin_8h.html         |   16 +-
 docs/reference/api/doxygen/builtin_8h_source.html  |   38 +-
 docs/reference/api/doxygen/bytecode_8h.html        |    2 +-
 docs/reference/api/doxygen/bytecode_8h_source.html |    4 +-
 .../api/doxygen/c__backend__api_8h_source.html     |    4 +-
 docs/reference/api/doxygen/c__runtime__api_8h.html |    2 +-
 .../api/doxygen/c__runtime__api_8h__dep__incl.svg  | 1302 ++--
 .../api/doxygen/c__runtime__api_8h_source.html     |    8 +-
 docs/reference/api/doxygen/call_8h.html            |    2 +-
 docs/reference/api/doxygen/call_8h_source.html     |    4 +-
 docs/reference/api/doxygen/classes.html            |  402 +-
 .../api/doxygen/classtvm_1_1BaseFuncNode.html      |    2 +-
 .../classtvm_1_1BaseFuncNode__inherit__graph.svg   |  207 +-
 .../api/doxygen/classtvm_1_1RelayExprNode.html     |    2 +-
 .../classtvm_1_1RelayExprNode__inherit__graph.svg  |  635 +-
 ...meta__schedule_1_1ApplyHistoryBest-members.html |    2 +-
 ...stvm_1_1meta__schedule_1_1ApplyHistoryBest.html |    6 +-
 ...__schedule_1_1ApplyHistoryBestNode-members.html |    2 +-
 ..._1_1meta__schedule_1_1ApplyHistoryBestNode.html |   16 +-
 ...a__schedule_1_1MetaScheduleContext-members.html |    2 +-
 ...m_1_1meta__schedule_1_1MetaScheduleContext.html |   16 +-
 ...chedule_1_1MetaScheduleContextNode-members.html |    2 +-
 ...1meta__schedule_1_1MetaScheduleContextNode.html |   18 +-
 ...ule_1_1MetaScheduleContextNode__coll__graph.svg |   16 +-
 ..._1_1MetaScheduleContextNode__inherit__graph.svg |  129 +-
 ...chedule_1_1MetaScheduleContext__coll__graph.svg |   20 +-
 ...dule_1_1MetaScheduleContext__inherit__graph.svg |  131 +-
 ...asstvm_1_1meta__schedule_1_1TaskExtraction.html |  252 -
 ...schedule_1_1TaskExtractionNode__coll__graph.svg |  201 -
 ...ta__schedule_1_1TaskExtraction__coll__graph.svg |  120 -
 ..._schedule_1_1TaskExtraction__inherit__graph.svg |   90 -
 .../api/doxygen/classtvm_1_1runtime_1_1Object.html |    2 +-
 .../doxygen/classtvm_1_1runtime_1_1ObjectRef.html  |    2 +-
 ...asstvm_1_1runtime_1_1ObjectRef__coll__graph.svg |   12 +-
 .../classtvm_1_1runtime_1_1Object__coll__graph.svg |    8 +-
 ...untime_1_1threading_1_1ThreadGroup-members.html |    4 +-
 ...tvm_1_1runtime_1_1threading_1_1ThreadGroup.html |   29 +-
 ...lasstvm_1_1te_1_1BaseComputeOpNode-members.html |   35 +-
 .../classtvm_1_1te_1_1BaseComputeOpNode.html       |    7 +-
 ...tvm_1_1te_1_1BaseComputeOpNode__coll__graph.svg |  255 +-
 ..._1_1te_1_1BaseComputeOpNode__inherit__graph.svg |   97 +-
 .../classtvm_1_1te_1_1ComputeOp-members.html       |    7 +-
 .../api/doxygen/classtvm_1_1te_1_1ComputeOp.html   |   24 +-
 .../classtvm_1_1te_1_1ComputeOpNode-members.html   |   39 +-
 .../doxygen/classtvm_1_1te_1_1ComputeOpNode.html   |    7 +-
 ...lasstvm_1_1te_1_1ComputeOpNode__coll__graph.svg |  339 +-
 ...stvm_1_1te_1_1ComputeOpNode__inherit__graph.svg |   97 +-
 .../classtvm_1_1te_1_1ComputeOp__coll__graph.svg   |  124 +-
 ...classtvm_1_1te_1_1ComputeOp__inherit__graph.svg |   94 +-
 .../classtvm_1_1te_1_1ExternOpNode-members.html    |   35 +-
 .../doxygen/classtvm_1_1te_1_1ExternOpNode.html    |    7 +-
 ...classtvm_1_1te_1_1ExternOpNode__coll__graph.svg |  425 +-
 ...sstvm_1_1te_1_1ExternOpNode__inherit__graph.svg |   97 +-
 .../classtvm_1_1te_1_1HybridOpNode-members.html    |   25 +-
 .../doxygen/classtvm_1_1te_1_1HybridOpNode.html    |   19 +-
 ...classtvm_1_1te_1_1HybridOpNode__coll__graph.svg |  425 +-
 ...sstvm_1_1te_1_1HybridOpNode__inherit__graph.svg |   99 +-
 .../doxygen/classtvm_1_1te_1_1IterVarRelation.html |    2 +-
 .../classtvm_1_1te_1_1IterVarRelationNode.html     |    2 +-
 ...m_1_1te_1_1IterVarRelationNode__coll__graph.svg |   16 +-
 ..._1te_1_1IterVarRelationNode__inherit__graph.svg |  136 +-
 ...sstvm_1_1te_1_1IterVarRelation__coll__graph.svg |   20 +-
 ...vm_1_1te_1_1IterVarRelation__inherit__graph.svg |  107 +-
 .../api/doxygen/classtvm_1_1te_1_1Operation.html   |    2 +-
 .../classtvm_1_1te_1_1OperationNode-members.html   |   31 +-
 .../doxygen/classtvm_1_1te_1_1OperationNode.html   |   23 +-
 ...lasstvm_1_1te_1_1OperationNode__coll__graph.svg |  177 +-
 ...stvm_1_1te_1_1OperationNode__inherit__graph.svg |  115 +-
 ...classtvm_1_1te_1_1Operation__inherit__graph.svg |  194 +-
 ...lasstvm_1_1te_1_1PlaceholderOpNode-members.html |   37 +-
 .../classtvm_1_1te_1_1PlaceholderOpNode.html       |    7 +-
 ...tvm_1_1te_1_1PlaceholderOpNode__coll__graph.svg |  333 +-
 ..._1_1te_1_1PlaceholderOpNode__inherit__graph.svg |   97 +-
 .../classtvm_1_1te_1_1ScanOpNode-members.html      |   45 +-
 .../api/doxygen/classtvm_1_1te_1_1ScanOpNode.html  |    7 +-
 .../classtvm_1_1te_1_1ScanOpNode__coll__graph.svg  |  437 +-
 ...lasstvm_1_1te_1_1ScanOpNode__inherit__graph.svg |   97 +-
 .../doxygen/classtvm_1_1te_1_1Stage-members.html   |   22 +-
 .../api/doxygen/classtvm_1_1te_1_1Stage.html       |   79 +
 .../classtvm_1_1te_1_1StageNode-members.html       |   28 +-
 .../api/doxygen/classtvm_1_1te_1_1StageNode.html   |   43 +-
 .../classtvm_1_1te_1_1StageNode__coll__graph.svg   |  546 +-
 ...classtvm_1_1te_1_1StageNode__inherit__graph.svg |    2 +-
 .../classtvm_1_1te_1_1Stage__coll__graph.svg       |    2 +-
 .../classtvm_1_1te_1_1Stage__inherit__graph.svg    |    2 +-
 ...sstvm_1_1te_1_1TensorComputeOpNode-members.html |   45 +-
 .../classtvm_1_1te_1_1TensorComputeOpNode.html     |    7 +-
 ...m_1_1te_1_1TensorComputeOpNode__coll__graph.svg |  547 +-
 ..._1te_1_1TensorComputeOpNode__inherit__graph.svg |   97 +-
 ...ml => classtvm_1_1te_1_1Transform-members.html} |   37 +-
 ...alize.html => classtvm_1_1te_1_1Transform.html} |   87 +-
 ...> classtvm_1_1te_1_1TransformNode-members.html} |   29 +-
 ...e.html => classtvm_1_1te_1_1TransformNode.html} |  215 +-
 ...lasstvm_1_1te_1_1TransformNode__coll__graph.svg |  226 +
 ...tvm_1_1te_1_1TransformNode__inherit__graph.svg} |  126 +-
 ...> classtvm_1_1te_1_1Transform__coll__graph.svg} |  113 +-
 ...lasstvm_1_1te_1_1Transform__inherit__graph.svg} |   85 +-
 .../classtvm_1_1tir_1_1Allocate-members.html       |    9 +-
 .../api/doxygen/classtvm_1_1tir_1_1Allocate.html   |   24 +-
 .../classtvm_1_1tir_1_1Allocate__coll__graph.svg   |  120 +-
 ...classtvm_1_1tir_1_1Allocate__inherit__graph.svg |   90 +-
 .../doxygen/classtvm_1_1tir_1_1Buffer-members.html |   12 +-
 .../api/doxygen/classtvm_1_1tir_1_1Buffer.html     |   64 +-
 .../classtvm_1_1tir_1_1BufferLoadNode-members.html |    4 +
 .../doxygen/classtvm_1_1tir_1_1BufferLoadNode.html |  103 +-
 ...sstvm_1_1tir_1_1BufferLoadNode__coll__graph.svg |  330 +-
 .../classtvm_1_1tir_1_1BufferNode-members.html     |   79 +-
 .../api/doxygen/classtvm_1_1tir_1_1BufferNode.html |   41 +-
 .../classtvm_1_1tir_1_1BufferNode__coll__graph.svg |  491 +-
 ...asstvm_1_1tir_1_1BufferNode__inherit__graph.svg |   93 +-
 .../classtvm_1_1tir_1_1BufferRealize-members.html  |    7 +-
 .../doxygen/classtvm_1_1tir_1_1BufferRealize.html  |   24 +-
 .../classtvm_1_1tir_1_1BufferRealizeNode.html      |    2 +-
 ...vm_1_1tir_1_1BufferRealizeNode__coll__graph.svg |  312 +-
 ...asstvm_1_1tir_1_1BufferRealize__coll__graph.svg |  122 +-
 ...tvm_1_1tir_1_1BufferRealize__inherit__graph.svg |   92 +-
 ...tvm_1_1tir_1_1BufferRegionNode__coll__graph.svg |   38 +-
 .../classtvm_1_1tir_1_1BufferStoreNode.html        |    2 +-
 ...stvm_1_1tir_1_1BufferStoreNode__coll__graph.svg |  288 +-
 .../classtvm_1_1tir_1_1Buffer__coll__graph.svg     |  110 +-
 .../classtvm_1_1tir_1_1Buffer__inherit__graph.svg  |   80 +-
 ...ml => classtvm_1_1tir_1_1IndexMap-members.html} |   21 +-
 ...alize.html => classtvm_1_1tir_1_1IndexMap.html} |  116 +-
 ...> classtvm_1_1tir_1_1IndexMapNode-members.html} |   50 +-
 ...e.html => classtvm_1_1tir_1_1IndexMapNode.html} |  270 +-
 ...asstvm_1_1tir_1_1IndexMapNode__coll__graph.svg} |  273 +-
 ...tvm_1_1tir_1_1IndexMapNode__inherit__graph.svg} |  116 +-
 ...> classtvm_1_1tir_1_1IndexMap__coll__graph.svg} |  121 +-
 ...classtvm_1_1tir_1_1IndexMap__inherit__graph.svg |   61 +
 .../api/doxygen/classtvm_1_1tir_1_1IterVar.html    |    1 +
 .../doxygen/classtvm_1_1tir_1_1IterVarNode.html    |    1 +
 ..._1tir_1_1MatchBufferRegionNode__coll__graph.svg |   40 +-
 .../doxygen/classtvm_1_1tir_1_1PrefetchNode.html   |    2 +-
 ...lasstvm_1_1tir_1_1PrefetchNode__coll__graph.svg |  268 +-
 .../classtvm_1_1tir_1_1PrimFunc-members.html       |    2 +-
 .../api/doxygen/classtvm_1_1tir_1_1PrimFunc.html   |   27 +-
 .../classtvm_1_1tir_1_1PrimFuncNode-members.html   |   43 +-
 .../doxygen/classtvm_1_1tir_1_1PrimFuncNode.html   |   25 +-
 ...lasstvm_1_1tir_1_1PrimFuncNode__coll__graph.svg |   10 +-
 ...stvm_1_1tir_1_1PrimFuncNode__inherit__graph.svg |  175 +-
 .../classtvm_1_1tir_1_1Stmt__inherit__graph.svg    |   40 +-
 docs/reference/api/doxygen/closure_8h.html         |    2 +-
 docs/reference/api/doxygen/closure_8h_source.html  |    2 +-
 docs/reference/api/doxygen/codegen_8h.html         |    2 +-
 docs/reference/api/doxygen/codegen_8h_source.html  |    4 +-
 .../api/doxygen/compilation__config_8h.html        |    2 +-
 .../api/doxygen/compilation__config_8h_source.html |    4 +-
 docs/reference/api/doxygen/compute__dag_8h.html    |    4 +-
 .../api/doxygen/compute__dag_8h__dep__incl.svg     |   76 +-
 .../api/doxygen/compute__dag_8h__incl.svg          | 1155 ++--
 .../api/doxygen/compute__dag_8h_source.html        |    4 +-
 docs/reference/api/doxygen/constant__utils_8h.html |    4 +-
 .../api/doxygen/constant__utils_8h__dep__incl.svg  |  168 +-
 .../api/doxygen/constant__utils_8h__incl.svg       | 1603 +++--
 .../api/doxygen/constant__utils_8h_source.html     |    2 +-
 docs/reference/api/doxygen/cublas_8h.html          |    4 +-
 .../reference/api/doxygen/cublas_8h__dep__incl.svg |   20 +-
 docs/reference/api/doxygen/cublas_8h__incl.svg     | 1521 ++---
 docs/reference/api/doxygen/cublas_8h_source.html   |    2 +-
 docs/reference/api/doxygen/cuda_2dense_8h.html     |    4 +-
 .../api/doxygen/cuda_2dense_8h__dep__incl.svg      |   12 +-
 .../reference/api/doxygen/cuda_2dense_8h__incl.svg | 1400 +++--
 .../api/doxygen/cuda_2dense_8h_source.html         |   12 +-
 docs/reference/api/doxygen/cuda_2injective_8h.html |    4 +-
 .../api/doxygen/cuda_2injective_8h__dep__incl.svg  |   12 +-
 .../api/doxygen/cuda_2injective_8h__incl.svg       | 1268 ++--
 .../api/doxygen/cuda_2injective_8h_source.html     |   14 +-
 docs/reference/api/doxygen/cuda_2pooling_8h.html   |    4 +-
 .../api/doxygen/cuda_2pooling_8h__dep__incl.svg    |   12 +-
 .../api/doxygen/cuda_2pooling_8h__incl.svg         | 1488 +++--
 .../api/doxygen/cuda_2pooling_8h_source.html       |   14 +-
 docs/reference/api/doxygen/cuda_2reduction_8h.html |    4 +-
 .../api/doxygen/cuda_2reduction_8h__dep__incl.svg  |   12 +-
 .../api/doxygen/cuda_2reduction_8h__incl.svg       | 1268 ++--
 .../api/doxygen/cuda_2reduction_8h_source.html     |   18 +-
 docs/reference/api/doxygen/cuda_2softmax_8h.html   |    4 +-
 .../api/doxygen/cuda_2softmax_8h__dep__incl.svg    |   12 +-
 .../api/doxygen/cuda_2softmax_8h__incl.svg         | 1268 ++--
 .../api/doxygen/cuda_2softmax_8h_source.html       |   14 +-
 docs/reference/api/doxygen/data__layout_8h.html    |    2 +-
 .../api/doxygen/data__layout_8h_source.html        |    6 +-
 docs/reference/api/doxygen/data__type_8h.html      |    2 +-
 .../api/doxygen/data__type_8h__dep__incl.svg       |  386 +-
 .../api/doxygen/data__type_8h_source.html          |    4 +-
 docs/reference/api/doxygen/database_8h.html        |    2 +-
 docs/reference/api/doxygen/database_8h_source.html |    2 +-
 .../api/doxygen/dataflow__matcher_8h.html          |    2 +-
 .../api/doxygen/dataflow__matcher_8h_source.html   |    4 +-
 .../api/doxygen/dataflow__pattern_8h.html          |    2 +-
 .../api/doxygen/dataflow__pattern_8h_source.html   |    4 +-
 .../api/doxygen/dataflow__pattern__functor_8h.html |    2 +-
 .../dataflow__pattern__functor_8h_source.html      |    2 +-
 .../api/doxygen/detail_2broadcast_8h.html          |    4 +-
 .../doxygen/detail_2broadcast_8h__dep__incl.svg    |  104 +-
 .../api/doxygen/detail_2broadcast_8h__incl.svg     | 1569 ++---
 .../api/doxygen/detail_2broadcast_8h_source.html   |    4 +-
 docs/reference/api/doxygen/detail_2extern_8h.html  |    4 +-
 .../api/doxygen/detail_2extern_8h__dep__incl.svg   |   40 +-
 .../api/doxygen/detail_2extern_8h__incl.svg        | 1680 +++--
 .../api/doxygen/detail_2extern_8h_source.html      |   10 +-
 docs/reference/api/doxygen/device__api_8h.html     |    2 +-
 .../api/doxygen/device__api_8h_source.html         |    6 +-
 docs/reference/api/doxygen/device__copy_8h.html    |    2 +-
 .../api/doxygen/device__copy_8h_source.html        |    4 +-
 docs/reference/api/doxygen/diagnostic_8h.html      |    2 +-
 .../api/doxygen/diagnostic_8h_source.html          |    2 +-
 docs/reference/api/doxygen/dilate_8h.html          |    4 +-
 docs/reference/api/doxygen/dilate_8h__incl.svg     | 1489 ++---
 docs/reference/api/doxygen/dilate_8h_source.html   |    2 +-
 ...r_000008_000013.html => dir_000003_000011.html} |    6 +-
 docs/reference/api/doxygen/dir_000011_000007.html  |    2 +-
 docs/reference/api/doxygen/dir_000011_000008.html  |    2 +-
 docs/reference/api/doxygen/dir_000025_000011.html  |    2 +-
 .../dir_02be2c9d68e402f80df60bd528724ee5.html      |    2 +-
 .../dir_02be2c9d68e402f80df60bd528724ee5_dep.svg   |  214 +-
 .../dir_194ecda214f05a38134392ac6a69b970_dep.svg   |    4 +-
 .../dir_1f1b12d204a071c9e67e47fcbb552b86_dep.svg   |    4 +-
 .../dir_404558507ed35459f0d7a6d81d8c508d_dep.svg   |   47 +-
 .../dir_4378f18824ae7d4ad48f8d7785cd7ac8.html      |    2 +-
 .../dir_4378f18824ae7d4ad48f8d7785cd7ac8_dep.svg   |  226 +-
 .../dir_536029070df27a3ee03a4230630922c5.html      |    2 +
 .../dir_5da96592f3a7c442b838b075c58254c2.html      |    2 +-
 .../dir_5da96592f3a7c442b838b075c58254c2_dep.svg   |  176 +-
 .../dir_63946bee875c6d52bce55e72a67a86ad_dep.svg   |   12 +-
 .../dir_72c2f11201cd7636dc7624de0754daa5.html      |    5 +-
 .../dir_72c2f11201cd7636dc7624de0754daa5_dep.svg   |  118 +-
 .../dir_8e4e25e66b8623d88c5b5dd2040bca97_dep.svg   |   12 +-
 .../dir_a98464176f1216e334ac3bbacd433085.html      |    2 +-
 .../dir_a98464176f1216e334ac3bbacd433085_dep.svg   |  177 +-
 .../dir_b4c7d8e826c599ba55146c099a14beb5.html      |    2 +-
 .../dir_b4c7d8e826c599ba55146c099a14beb5_dep.svg   |  504 +-
 .../dir_dc867ff9a37cad1764f1670dc7eba6c1.html      |    2 +-
 .../dir_dc867ff9a37cad1764f1670dc7eba6c1_dep.svg   |  194 +-
 .../dir_f97d855a3173728370e632aa77170e34_dep.svg   |   38 +-
 .../dir_fb1b1bc11a768ab8cf63a96a73170118_dep.svg   |   20 +-
 docs/reference/api/doxygen/driver__api_8h.html     |    2 +-
 .../reference/api/doxygen/driver__api_8h__incl.svg |   36 +-
 .../api/doxygen/driver__api_8h_source.html         |    6 +-
 docs/reference/api/doxygen/einsum_8h.html          |    4 +-
 docs/reference/api/doxygen/einsum_8h__incl.svg     | 1702 +++--
 docs/reference/api/doxygen/einsum_8h_source.html   |    4 +-
 docs/reference/api/doxygen/elemwise_8h.html        |    2 +-
 .../api/doxygen/elemwise_8h__dep__incl.svg         |   48 +-
 docs/reference/api/doxygen/elemwise_8h__incl.svg   |   24 +-
 docs/reference/api/doxygen/elemwise_8h_source.html |    8 +-
 docs/reference/api/doxygen/env__func_8h.html       |    2 +-
 .../reference/api/doxygen/env__func_8h_source.html |    2 +-
 docs/reference/api/doxygen/error_8h.html           |    2 +-
 docs/reference/api/doxygen/error_8h_source.html    |    2 +-
 docs/reference/api/doxygen/executable_8h.html      |    2 +-
 .../api/doxygen/executable_8h_source.html          |    2 +-
 docs/reference/api/doxygen/executor_8h.html        |    2 +-
 docs/reference/api/doxygen/executor_8h_source.html |    2 +-
 docs/reference/api/doxygen/executor__info_8h.html  |    2 +-
 .../api/doxygen/executor__info_8h_source.html      |    2 +-
 .../api/doxygen/feature__extractor_8h.html         |    2 +-
 .../api/doxygen/feature__extractor_8h_source.html  |    2 +-
 docs/reference/api/doxygen/files.html              |   16 +-
 docs/reference/api/doxygen/flatten_8h.html         |    4 +-
 docs/reference/api/doxygen/flatten_8h__incl.svg    | 1579 ++---
 docs/reference/api/doxygen/flatten_8h_source.html  |    2 +-
 docs/reference/api/doxygen/frame__buffer_8h.html   |    2 +-
 .../api/doxygen/frame__buffer_8h_source.html       |    2 +-
 docs/reference/api/doxygen/framing_8h.html         |    2 +-
 docs/reference/api/doxygen/framing_8h_source.html  |    2 +-
 docs/reference/api/doxygen/functions__.html        |    2 +-
 docs/reference/api/doxygen/functions_a.html        |    8 +-
 docs/reference/api/doxygen/functions_b.html        |    3 +-
 docs/reference/api/doxygen/functions_c.html        |    7 +-
 docs/reference/api/doxygen/functions_e.html        |    2 +-
 docs/reference/api/doxygen/functions_eval.html     |    6 +
 docs/reference/api/doxygen/functions_f.html        |   12 +-
 docs/reference/api/doxygen/functions_func_b.html   |    2 +-
 docs/reference/api/doxygen/functions_func_c.html   |    2 +-
 docs/reference/api/doxygen/functions_func_e.html   |    2 +-
 docs/reference/api/doxygen/functions_func_g.html   |    5 +-
 docs/reference/api/doxygen/functions_func_i.html   |   17 +-
 docs/reference/api/doxygen/functions_func_m.html   |    9 +
 docs/reference/api/doxygen/functions_func_o.html   |   39 +-
 docs/reference/api/doxygen/functions_func_p.html   |    2 +-
 docs/reference/api/doxygen/functions_func_q.html   |    7 +-
 docs/reference/api/doxygen/functions_func_s.html   |   15 +-
 docs/reference/api/doxygen/functions_func_t.html   |   28 +-
 docs/reference/api/doxygen/functions_func_v.html   |   33 +-
 docs/reference/api/doxygen/functions_g.html        |    3 +
 docs/reference/api/doxygen/functions_i.html        |   27 +-
 docs/reference/api/doxygen/functions_k.html        |    6 +
 docs/reference/api/doxygen/functions_l.html        |    5 +-
 docs/reference/api/doxygen/functions_m.html        |   11 +-
 docs/reference/api/doxygen/functions_n.html        |    3 +
 docs/reference/api/doxygen/functions_o.html        |   18 +-
 docs/reference/api/doxygen/functions_p.html        |    8 +-
 docs/reference/api/doxygen/functions_q.html        |    7 +-
 docs/reference/api/doxygen/functions_rela.html     |   18 +-
 docs/reference/api/doxygen/functions_s.html        |   24 +-
 docs/reference/api/doxygen/functions_t.html        |   34 +-
 docs/reference/api/doxygen/functions_v.html        |   41 +-
 docs/reference/api/doxygen/functions_vars.html     |    2 +-
 docs/reference/api/doxygen/functions_vars_a.html   |    4 +
 docs/reference/api/doxygen/functions_vars_f.html   |    6 +
 docs/reference/api/doxygen/functions_vars_i.html   |    6 +
 docs/reference/api/doxygen/functions_vars_l.html   |    3 +
 docs/reference/api/doxygen/functions_vars_n.html   |    3 +
 docs/reference/api/doxygen/functions_vars_o.html   |    5 +-
 docs/reference/api/doxygen/functions_vars_p.html   |    4 +
 docs/reference/api/doxygen/functions_vars_s.html   |    3 -
 docs/reference/api/doxygen/functions_vars_t.html   |    6 +-
 docs/reference/api/doxygen/functor_8h.html         |    2 +-
 .../api/doxygen/functor_8h__dep__incl.svg          |  108 +-
 docs/reference/api/doxygen/functor_8h_source.html  |    2 +-
 docs/reference/api/doxygen/fuse_8h.html            |    4 +-
 docs/reference/api/doxygen/fuse_8h__dep__incl.svg  |  156 +-
 docs/reference/api/doxygen/fuse_8h__incl.svg       | 1445 ++---
 docs/reference/api/doxygen/fuse_8h_source.html     |    6 +-
 .../reference/api/doxygen/generic_2default_8h.html |    4 +-
 .../api/doxygen/generic_2default_8h__incl.svg      | 1268 ++--
 .../api/doxygen/generic_2default_8h_source.html    |   10 +-
 docs/reference/api/doxygen/generic_2extern_8h.html |    4 +-
 .../api/doxygen/generic_2extern_8h__dep__incl.svg  |   24 +-
 .../api/doxygen/generic_2extern_8h__incl.svg       | 1526 +++--
 .../api/doxygen/generic_2extern_8h_source.html     |    8 +-
 .../api/doxygen/generic_2injective_8h.html         |    4 +-
 .../doxygen/generic_2injective_8h__dep__incl.svg   |   32 +-
 .../api/doxygen/generic_2injective_8h__incl.svg    | 1268 ++--
 .../api/doxygen/generic_2injective_8h_source.html  |   12 +-
 docs/reference/api/doxygen/generic__func_8h.html   |    2 +-
 .../api/doxygen/generic__func_8h_source.html       |    4 +-
 docs/reference/api/doxygen/greedy_8h.html          |    2 +-
 docs/reference/api/doxygen/greedy_8h_source.html   |    2 +-
 docs/reference/api/doxygen/hierarchy.html          |  831 +--
 docs/reference/api/doxygen/image_8h.html           |    2 +-
 docs/reference/api/doxygen/image_8h_source.html    |    4 +-
 .../{closure_8h.html => index__map_8h.html}        |   35 +-
 .../api/doxygen/index__map_8h__dep__incl.svg       | 1163 ++++
 docs/reference/api/doxygen/index__map_8h__incl.svg | 1331 ++++
 .../api/doxygen/index__map_8h_source.html          |   98 +
 docs/reference/api/doxygen/inherit_graph_10.svg    |   16 +-
 docs/reference/api/doxygen/inherit_graph_107.svg   | 6480 ++++++++++----------
 docs/reference/api/doxygen/inherit_graph_116.svg   | 5071 +++++++--------
 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           |    4 +-
 docs/reference/api/doxygen/instruction_8h.html     |    2 +-
 .../api/doxygen/instruction_8h_source.html         |    2 +-
 docs/reference/api/doxygen/instrument_8h.html      |    2 +-
 .../api/doxygen/instrument_8h_source.html          |    4 +-
 docs/reference/api/doxygen/int__set_8h.html        |    2 +-
 docs/reference/api/doxygen/int__set_8h_source.html |    2 +-
 docs/reference/api/doxygen/int__solver_8h.html     |    2 +-
 .../api/doxygen/int__solver_8h_source.html         |    2 +-
 docs/reference/api/doxygen/integration_8h.html     |    8 +-
 .../api/doxygen/integration_8h_source.html         |   15 +-
 docs/reference/api/doxygen/interpreter_8h.html     |    2 +-
 .../api/doxygen/interpreter_8h_source.html         |    4 +-
 docs/reference/api/doxygen/ir_2adt_8h.html         |    2 +-
 docs/reference/api/doxygen/ir_2adt_8h_source.html  |    2 +-
 docs/reference/api/doxygen/ir_2attrs_8h.html       |    6 +-
 .../reference/api/doxygen/ir_2attrs_8h_source.html |  149 +-
 docs/reference/api/doxygen/ir_2expr_8h.html        |    4 +-
 .../api/doxygen/ir_2expr_8h__dep__incl.svg         |  800 +--
 docs/reference/api/doxygen/ir_2expr_8h_source.html |    4 +-
 docs/reference/api/doxygen/ir_2function_8h.html    |    4 +-
 .../api/doxygen/ir_2function_8h__dep__incl.svg     | 1010 ++-
 .../api/doxygen/ir_2function_8h_source.html        |    2 +-
 docs/reference/api/doxygen/ir_2module_8h.html      |    2 +-
 .../api/doxygen/ir_2module_8h_source.html          |    4 +-
 docs/reference/api/doxygen/ir_2op_8h.html          |    2 +-
 docs/reference/api/doxygen/ir_2op_8h_source.html   |    2 +-
 docs/reference/api/doxygen/ir_2span_8h.html        |    4 +-
 .../api/doxygen/ir_2span_8h__dep__incl.svg         | 1294 ++--
 docs/reference/api/doxygen/ir_2span_8h_source.html |    2 +-
 docs/reference/api/doxygen/ir_2transform_8h.html   |    2 +-
 .../api/doxygen/ir_2transform_8h_source.html       |    4 +-
 docs/reference/api/doxygen/ir_2type_8h.html        |    4 +-
 .../api/doxygen/ir_2type_8h__dep__incl.svg         | 1124 ++--
 docs/reference/api/doxygen/ir_2type_8h_source.html |    2 +-
 .../api/doxygen/iter__affine__map_8h.html          |    2 +-
 .../api/doxygen/iter__affine__map_8h_source.html   |    2 +-
 .../{papi_8h.html => libtorch__runtime_8h.html}    |   24 +-
 .../api/doxygen/libtorch__runtime_8h__incl.svg     |  860 +++
 .../api/doxygen/libtorch__runtime_8h_source.html   |   82 +
 .../api/doxygen/local__response__norm_8h.html      |    4 +-
 .../api/doxygen/local__response__norm_8h__incl.svg | 1471 ++---
 .../doxygen/local__response__norm_8h_source.html   |    2 +-
 docs/reference/api/doxygen/loop__state_8h.html     |    4 +-
 .../api/doxygen/loop__state_8h__dep__incl.svg      |   88 +-
 .../reference/api/doxygen/loop__state_8h__incl.svg | 1201 ++--
 .../api/doxygen/loop__state_8h_source.html         |    2 +-
 docs/reference/api/doxygen/map_8h.html             |    2 +-
 docs/reference/api/doxygen/map_8h__dep__incl.svg   |  134 +-
 docs/reference/api/doxygen/map_8h_source.html      |    6 +-
 docs/reference/api/doxygen/mapping_8h.html         |    4 +-
 docs/reference/api/doxygen/mapping_8h__incl.svg    | 1471 ++---
 docs/reference/api/doxygen/mapping_8h_source.html  |    2 +-
 docs/reference/api/doxygen/measure_8h.html         |    4 +-
 .../api/doxygen/measure_8h__dep__incl.svg          |   48 +-
 docs/reference/api/doxygen/measure_8h__incl.svg    | 1233 ++--
 docs/reference/api/doxygen/measure_8h_source.html  |    2 +-
 .../api/doxygen/measure__callback_8h.html          |    2 +-
 .../api/doxygen/measure__callback_8h_source.html   |    2 +-
 docs/reference/api/doxygen/measure__record_8h.html |    4 +-
 .../api/doxygen/measure__record_8h__incl.svg       | 1309 ++--
 .../api/doxygen/measure__record_8h_source.html     |    2 +-
 docs/reference/api/doxygen/memory__manager_8h.html |    2 +-
 .../api/doxygen/memory__manager_8h_source.html     |    4 +-
 docs/reference/api/doxygen/memory__pools_8h.html   |    2 +-
 .../api/doxygen/memory__pools_8h_source.html       |    2 +-
 docs/reference/api/doxygen/menudata.js             |    1 +
 .../doxygen/meta__schedule_2cost__model_8h.html    |    2 +-
 .../meta__schedule_2cost__model_8h_source.html     |    2 +-
 docs/reference/api/doxygen/metadata_8h.html        |   14 +-
 docs/reference/api/doxygen/metadata_8h__incl.svg   |  117 +-
 docs/reference/api/doxygen/metadata_8h_source.html |   20 +-
 docs/reference/api/doxygen/metadata__base_8h.html  |    2 +-
 .../api/doxygen/metadata__base_8h_source.html      |    4 +-
 docs/reference/api/doxygen/mutator_8h.html         |    2 +-
 docs/reference/api/doxygen/mutator_8h_source.html  |    2 +-
 docs/reference/api/doxygen/namespacemembers.html   |    3 +
 docs/reference/api/doxygen/namespacemembers_c.html |    5 +-
 docs/reference/api/doxygen/namespacemembers_d.html |    2 +-
 .../api/doxygen/namespacemembers_func_c.html       |    5 +-
 .../api/doxygen/namespacemembers_func_d.html       |    2 +-
 .../api/doxygen/namespacemembers_func_g.html       |    2 +-
 .../api/doxygen/namespacemembers_func_l.html       |    7 +-
 .../api/doxygen/namespacemembers_func_n.html       |    3 +
 .../api/doxygen/namespacemembers_func_p.html       |   11 +-
 .../api/doxygen/namespacemembers_func_s.html       |   15 +-
 .../api/doxygen/namespacemembers_func_t.html       |   15 +-
 .../api/doxygen/namespacemembers_func_w.html       |    5 +-
 docs/reference/api/doxygen/namespacemembers_g.html |    2 +-
 docs/reference/api/doxygen/namespacemembers_l.html |   14 +-
 docs/reference/api/doxygen/namespacemembers_n.html |    5 +-
 docs/reference/api/doxygen/namespacemembers_p.html |   11 +-
 docs/reference/api/doxygen/namespacemembers_s.html |    9 +-
 docs/reference/api/doxygen/namespacemembers_t.html |   18 +-
 .../api/doxygen/namespacemembers_vars.html         |    9 +
 docs/reference/api/doxygen/namespacemembers_w.html |    5 +-
 docs/reference/api/doxygen/namespaces.html         |   51 +-
 docs/reference/api/doxygen/namespacetvm.html       |  541 +-
 .../doxygen/namespacetvm_1_1auto__scheduler.html   |   27 +-
 .../doxygen/namespacetvm_1_1meta__schedule.html    |    6 -
 .../api/doxygen/namespacetvm_1_1runtime.html       |    2 +
 ...tml => namespacetvm_1_1runtime_1_1contrib.html} |   51 +-
 .../doxygen/namespacetvm_1_1runtime_1_1symbol.html |   19 +
 .../namespacetvm_1_1runtime_1_1threading.html      |   70 +
 docs/reference/api/doxygen/namespacetvm_1_1te.html |    5 +
 .../reference/api/doxygen/namespacetvm_1_1tir.html |   22 +-
 .../api/doxygen/namespacetvm_1_1tir_1_1attr.html   |   40 +
 .../doxygen/namespacetvm_1_1tir_1_1builtin.html    |   98 +-
 .../doxygen/namespacetvm_1_1tir_1_1transform.html  |   19 +
 .../api/doxygen/namespacetvm_1_1topi.html          | 1164 ++--
 docs/reference/api/doxygen/ndarray_8h.html         |    4 +-
 .../api/doxygen/ndarray_8h__dep__incl.svg          |  970 +--
 docs/reference/api/doxygen/ndarray_8h_source.html  |    6 +-
 docs/reference/api/doxygen/nn_2bnn_8h.html         |    4 +-
 docs/reference/api/doxygen/nn_2bnn_8h__incl.svg    | 1752 +++---
 docs/reference/api/doxygen/nn_2bnn_8h_source.html  |    2 +-
 docs/reference/api/doxygen/nn_2dense_8h.html       |    4 +-
 .../api/doxygen/nn_2dense_8h__dep__incl.svg        |   24 +-
 docs/reference/api/doxygen/nn_2dense_8h__incl.svg  | 1471 ++---
 .../reference/api/doxygen/nn_2dense_8h_source.html |    2 +-
 docs/reference/api/doxygen/nn_2pooling_8h.html     |    2 +-
 .../reference/api/doxygen/nn_2pooling_8h__incl.svg |  372 +-
 .../api/doxygen/nn_2pooling_8h_source.html         |    2 +-
 docs/reference/api/doxygen/nn_2softmax_8h.html     |    4 +-
 .../reference/api/doxygen/nn_2softmax_8h__incl.svg | 1932 +++---
 .../api/doxygen/nn_2softmax_8h_source.html         |    4 +-
 docs/reference/api/doxygen/node_8h.html            |    4 +-
 docs/reference/api/doxygen/node_8h__dep__incl.svg  |  948 +--
 docs/reference/api/doxygen/node_8h_source.html     |    2 +-
 docs/reference/api/doxygen/object_8h.html          |    4 +-
 .../reference/api/doxygen/object_8h__dep__incl.svg | 1282 ++--
 docs/reference/api/doxygen/object_8h_source.html   |    4 +-
 docs/reference/api/doxygen/on__device_8h.html      |    2 +-
 .../api/doxygen/on__device_8h_source.html          |    4 +-
 docs/reference/api/doxygen/op__strategy_8h.html    |    4 +-
 .../api/doxygen/op__strategy_8h__incl.svg          | 1506 +++--
 .../api/doxygen/op__strategy_8h_source.html        |    6 +-
 docs/reference/api/doxygen/operation_8h.html       |    4 +-
 .../api/doxygen/operation_8h__dep__incl.svg        |  592 +-
 docs/reference/api/doxygen/operation_8h__incl.svg  | 1205 ++--
 .../reference/api/doxygen/operation_8h_source.html |  114 +-
 docs/reference/api/doxygen/optional_8h.html        |    2 +-
 .../api/doxygen/optional_8h__dep__incl.svg         |  206 +-
 docs/reference/api/doxygen/optional_8h_source.html |    2 +-
 docs/reference/api/doxygen/packed__func_8h.html    |    4 +-
 .../api/doxygen/packed__func_8h__dep__incl.svg     |  808 +--
 .../api/doxygen/packed__func_8h_source.html        |   60 +-
 docs/reference/api/doxygen/pad__utils_8h.html      |    4 +-
 .../api/doxygen/pad__utils_8h__dep__incl.svg       |   12 +-
 docs/reference/api/doxygen/pad__utils_8h__incl.svg | 1401 ++---
 .../api/doxygen/pad__utils_8h_source.html          |    2 +-
 docs/reference/api/doxygen/papi_8h.html            |    2 +-
 docs/reference/api/doxygen/papi_8h_source.html     |    2 +-
 docs/reference/api/doxygen/parallel__for_8h.html   |    2 +-
 .../api/doxygen/parallel__for_8h_source.html       |    2 +-
 docs/reference/api/doxygen/parser_8h.html          |    2 +-
 docs/reference/api/doxygen/parser_8h_source.html   |    2 +-
 docs/reference/api/doxygen/pattern_8h.html         |    2 +-
 docs/reference/api/doxygen/pattern_8h_source.html  |    2 +-
 .../reference/api/doxygen/pattern__functor_8h.html |    2 +-
 .../api/doxygen/pattern__functor_8h_source.html    |    2 +-
 docs/reference/api/doxygen/postproc_8h.html        |    2 +-
 docs/reference/api/doxygen/postproc_8h_source.html |    2 +-
 docs/reference/api/doxygen/profiling_8h.html       |    2 +-
 .../reference/api/doxygen/profiling_8h_source.html |   10 +-
 docs/reference/api/doxygen/random_8h.html          |    2 +-
 docs/reference/api/doxygen/random_8h_source.html   |    4 +-
 docs/reference/api/doxygen/random__engine_8h.html  |    2 +-
 .../api/doxygen/random__engine_8h_source.html      |    2 +-
 docs/reference/api/doxygen/ravel__unravel_8h.html  |    4 +-
 .../api/doxygen/ravel__unravel_8h__dep__incl.svg   |   84 +-
 .../api/doxygen/ravel__unravel_8h__incl.svg        | 1451 ++---
 .../api/doxygen/ravel__unravel_8h_source.html      |    4 +-
 docs/reference/api/doxygen/reduce_8h.html          |    2 +-
 docs/reference/api/doxygen/reduce_8h_source.html   |    4 +-
 docs/reference/api/doxygen/reduction_8h.html       |    4 +-
 .../api/doxygen/reduction_8h__dep__incl.svg        |   40 +-
 docs/reference/api/doxygen/reduction_8h__incl.svg  | 1604 +++--
 .../reference/api/doxygen/reduction_8h_source.html |    6 +-
 docs/reference/api/doxygen/reflection_8h.html      |    2 +-
 .../api/doxygen/reflection_8h__dep__incl.svg       |  100 +-
 .../api/doxygen/reflection_8h_source.html          |    2 +-
 docs/reference/api/doxygen/registry_8h.html        |    2 +-
 docs/reference/api/doxygen/registry_8h_source.html |    2 +-
 docs/reference/api/doxygen/relay_2adt_8h.html      |    2 +-
 .../api/doxygen/relay_2adt_8h_source.html          |    2 +-
 docs/reference/api/doxygen/relay_2analysis_8h.html |    2 +-
 .../api/doxygen/relay_2analysis_8h_source.html     |    4 +-
 .../api/doxygen/relay_2attrs_2debug_8h.html        |    2 +-
 .../api/doxygen/relay_2attrs_2debug_8h_source.html |    4 +-
 .../api/doxygen/relay_2attrs_2memory_8h.html       |    2 +-
 .../doxygen/relay_2attrs_2memory_8h_source.html    |    4 +-
 .../reference/api/doxygen/relay_2attrs_2nn_8h.html |    2 +-
 .../api/doxygen/relay_2attrs_2nn_8h_source.html    |    4 +-
 .../api/doxygen/relay_2attrs_2transform_8h.html    |    2 +-
 .../doxygen/relay_2attrs_2transform_8h_source.html |    4 +-
 .../reference/api/doxygen/relay_2attrs_2vm_8h.html |    2 +-
 .../api/doxygen/relay_2attrs_2vm_8h_source.html    |    4 +-
 docs/reference/api/doxygen/relay_2base_8h.html     |    2 +-
 .../api/doxygen/relay_2base_8h_source.html         |    2 +-
 docs/reference/api/doxygen/relay_2expr_8h.html     |    2 +-
 .../api/doxygen/relay_2expr_8h_source.html         |    2 +-
 .../api/doxygen/relay_2expr__functor_8h.html       |    2 +-
 .../doxygen/relay_2expr__functor_8h_source.html    |   80 +-
 docs/reference/api/doxygen/relay_2feature_8h.html  |    2 +-
 .../api/doxygen/relay_2feature_8h_source.html      |    4 +-
 docs/reference/api/doxygen/relay_2function_8h.html |    2 +-
 .../api/doxygen/relay_2function_8h_source.html     |    2 +-
 docs/reference/api/doxygen/relay_2op_8h.html       |    2 +-
 .../reference/api/doxygen/relay_2op_8h_source.html |    2 +-
 .../api/doxygen/relay_2op__attr__types_8h.html     |    4 +-
 .../relay_2op__attr__types_8h__dep__incl.svg       |   28 +-
 .../doxygen/relay_2op__attr__types_8h__incl.svg    | 1461 ++---
 .../doxygen/relay_2op__attr__types_8h_source.html  |    4 +-
 .../api/doxygen/relay_2qnn_2attrs_8h.html          |    2 +-
 .../api/doxygen/relay_2qnn_2attrs_8h_source.html   |    4 +-
 .../api/doxygen/relay_2qnn_2transform_8h.html      |    2 +-
 .../api/doxygen/relay_2qnn_2transform_8h__incl.svg |   40 +-
 .../doxygen/relay_2qnn_2transform_8h_source.html   |    2 +-
 .../reference/api/doxygen/relay_2transform_8h.html |    2 +-
 .../api/doxygen/relay_2transform_8h__dep__incl.svg |   12 +-
 .../api/doxygen/relay_2transform_8h__incl.svg      |   40 +-
 .../api/doxygen/relay_2transform_8h_source.html    |    4 +-
 docs/reference/api/doxygen/relay_2type_8h.html     |    2 +-
 .../api/doxygen/relay_2type_8h_source.html         |    6 +-
 docs/reference/api/doxygen/reorg_8h.html           |    4 +-
 docs/reference/api/doxygen/reorg_8h__incl.svg      | 1696 +++--
 docs/reference/api/doxygen/reorg_8h_source.html    |    2 +-
 docs/reference/api/doxygen/repr__printer_8h.html   |    4 +-
 .../api/doxygen/repr__printer_8h__dep__incl.svg    |  942 +--
 .../api/doxygen/repr__printer_8h_source.html       |    2 +-
 docs/reference/api/doxygen/rocblas_8h.html         |    4 +-
 .../api/doxygen/rocblas_8h__dep__incl.svg          |   12 +-
 docs/reference/api/doxygen/rocblas_8h__incl.svg    | 1521 ++---
 docs/reference/api/doxygen/rocblas_8h_source.html  |    2 +-
 docs/reference/api/doxygen/rocm_2dense_8h.html     |    4 +-
 .../reference/api/doxygen/rocm_2dense_8h__incl.svg | 1641 +++--
 .../api/doxygen/rocm_2dense_8h_source.html         |    4 +-
 docs/reference/api/doxygen/rocm_2injective_8h.html |    4 +-
 .../api/doxygen/rocm_2injective_8h__incl.svg       | 1256 ++--
 .../api/doxygen/rocm_2injective_8h_source.html     |    4 +-
 docs/reference/api/doxygen/rocm_2pooling_8h.html   |    4 +-
 .../api/doxygen/rocm_2pooling_8h__incl.svg         | 1496 +++--
 .../api/doxygen/rocm_2pooling_8h_source.html       |    4 +-
 docs/reference/api/doxygen/rocm_2reduction_8h.html |    4 +-
 .../api/doxygen/rocm_2reduction_8h__incl.svg       | 1256 ++--
 .../api/doxygen/rocm_2reduction_8h_source.html     |    4 +-
 docs/reference/api/doxygen/rocm_2softmax_8h.html   |    4 +-
 .../api/doxygen/rocm_2softmax_8h__incl.svg         | 1256 ++--
 .../api/doxygen/rocm_2softmax_8h_source.html       |    4 +-
 docs/reference/api/doxygen/runner_8h.html          |    2 +-
 docs/reference/api/doxygen/runner_8h_source.html   |   22 +-
 .../api/doxygen/runtime_2container_2adt_8h.html    |    2 +-
 .../doxygen/runtime_2container_2adt_8h_source.html |    2 +-
 .../api/doxygen/runtime_2container_2base_8h.html   |    4 +-
 .../runtime_2container_2base_8h__dep__incl.svg     | 1299 ++--
 .../runtime_2container_2base_8h_source.html        |    2 +-
 .../doxygen/runtime_2crt_2module_8h_source.html    |    2 +-
 docs/reference/api/doxygen/runtime_2debug_8h.html  |    2 +-
 .../api/doxygen/runtime_2debug_8h_source.html      |    2 +-
 docs/reference/api/doxygen/runtime_2memory_8h.html |    4 +-
 .../api/doxygen/runtime_2memory_8h__dep__incl.svg  | 1441 +++--
 .../api/doxygen/runtime_2memory_8h_source.html     |    2 +-
 docs/reference/api/doxygen/runtime_2module_8h.html |    7 +-
 .../api/doxygen/runtime_2module_8h__dep__incl.svg  | 1262 ++--
 .../api/doxygen/runtime_2module_8h_source.html     |   29 +-
 docs/reference/api/doxygen/runtime_2vm_2vm_8h.html |    2 +-
 .../api/doxygen/runtime_2vm_2vm_8h_source.html     |    2 +-
 docs/reference/api/doxygen/runtime_8h.html         |    4 +-
 docs/reference/api/doxygen/runtime_8h_source.html  |   30 +-
 docs/reference/api/doxygen/schedule__pass_8h.html  |    4 +-
 .../api/doxygen/schedule__pass_8h__dep__incl.svg   |  136 +-
 .../api/doxygen/schedule__pass_8h__incl.svg        | 1523 ++---
 .../api/doxygen/schedule__pass_8h_source.html      |    2 +-
 docs/reference/api/doxygen/schedule__rule_8h.html  |    2 +-
 .../api/doxygen/schedule__rule_8h_source.html      |    2 +-
 docs/reference/api/doxygen/search/all_1.js         |    2 +-
 docs/reference/api/doxygen/search/all_10.js        |    6 +-
 docs/reference/api/doxygen/search/all_11.js        |    8 +-
 docs/reference/api/doxygen/search/all_12.js        |    4 +-
 docs/reference/api/doxygen/search/all_13.js        |   10 +-
 docs/reference/api/doxygen/search/all_14.js        |   19 +-
 docs/reference/api/doxygen/search/all_15.js        |   33 +-
 docs/reference/api/doxygen/search/all_16.js        |    2 +-
 docs/reference/api/doxygen/search/all_17.js        |    6 +-
 docs/reference/api/doxygen/search/all_18.js        |    1 +
 docs/reference/api/doxygen/search/all_2.js         |    6 +-
 docs/reference/api/doxygen/search/all_3.js         |    4 +-
 docs/reference/api/doxygen/search/all_4.js         |    5 +-
 docs/reference/api/doxygen/search/all_5.js         |    2 +-
 docs/reference/api/doxygen/search/all_6.js         |    2 +-
 docs/reference/api/doxygen/search/all_7.js         |    2 +
 docs/reference/api/doxygen/search/all_8.js         |    3 +-
 docs/reference/api/doxygen/search/all_9.js         |    2 +-
 docs/reference/api/doxygen/search/all_a.js         |    6 +
 docs/reference/api/doxygen/search/all_c.js         |    2 +
 docs/reference/api/doxygen/search/all_d.js         |    3 +
 docs/reference/api/doxygen/search/all_e.js         |    9 +-
 docs/reference/api/doxygen/search/all_f.js         |    2 +
 docs/reference/api/doxygen/search/classes_0.js     |    3 +-
 docs/reference/api/doxygen/search/classes_10.js    |    4 +-
 docs/reference/api/doxygen/search/classes_11.js    |    8 +-
 docs/reference/api/doxygen/search/classes_7.js     |    2 +-
 docs/reference/api/doxygen/search/classes_8.js     |    2 +
 docs/reference/api/doxygen/search/classes_f.js     |    2 +-
 docs/reference/api/doxygen/search/enumvalues_5.js  |    2 +
 docs/reference/api/doxygen/search/files_7.js       |    1 +
 docs/reference/api/doxygen/search/files_8.js       |    1 +
 docs/reference/api/doxygen/search/functions_10.js  |    5 +-
 docs/reference/api/doxygen/search/functions_11.js  |    4 +-
 docs/reference/api/doxygen/search/functions_12.js  |    6 +-
 docs/reference/api/doxygen/search/functions_13.js  |    8 +-
 docs/reference/api/doxygen/search/functions_14.js  |   16 +-
 docs/reference/api/doxygen/search/functions_15.js  |    2 +-
 docs/reference/api/doxygen/search/functions_16.js  |    4 +-
 docs/reference/api/doxygen/search/functions_17.js  |    1 +
 docs/reference/api/doxygen/search/functions_2.js   |    2 +-
 docs/reference/api/doxygen/search/functions_3.js   |    2 +-
 docs/reference/api/doxygen/search/functions_4.js   |    2 +-
 docs/reference/api/doxygen/search/functions_5.js   |    2 +-
 docs/reference/api/doxygen/search/functions_7.js   |    3 +-
 docs/reference/api/doxygen/search/functions_9.js   |    3 +
 docs/reference/api/doxygen/search/functions_c.js   |    1 +
 docs/reference/api/doxygen/search/functions_d.js   |    7 +-
 docs/reference/api/doxygen/search/functions_e.js   |    1 +
 docs/reference/api/doxygen/search/functions_f.js   |    3 +-
 docs/reference/api/doxygen/search/namespaces_2.js  |    2 +-
 docs/reference/api/doxygen/search/related_10.html  |   26 +
 .../doxygen/search/{related_f.js => related_10.js} |    0
 docs/reference/api/doxygen/search/related_2.js     |    6 +-
 docs/reference/api/doxygen/search/related_3.js     |   10 +-
 docs/reference/api/doxygen/search/related_4.js     |    5 +-
 docs/reference/api/doxygen/search/related_5.js     |    3 +-
 docs/reference/api/doxygen/search/related_6.js     |    6 +-
 docs/reference/api/doxygen/search/related_7.js     |    5 +-
 docs/reference/api/doxygen/search/related_8.js     |    9 +-
 docs/reference/api/doxygen/search/related_9.js     |    9 +-
 docs/reference/api/doxygen/search/related_a.js     |   11 +-
 docs/reference/api/doxygen/search/related_b.js     |   15 +-
 docs/reference/api/doxygen/search/related_c.js     |    9 +-
 docs/reference/api/doxygen/search/related_d.js     |   16 +-
 docs/reference/api/doxygen/search/related_e.js     |   14 +-
 docs/reference/api/doxygen/search/related_f.js     |    9 +-
 docs/reference/api/doxygen/search/searchdata.js    |    2 +-
 docs/reference/api/doxygen/search/variables_0.js   |    2 +-
 docs/reference/api/doxygen/search/variables_1.js   |    3 +-
 docs/reference/api/doxygen/search/variables_11.js  |    1 -
 docs/reference/api/doxygen/search/variables_12.js  |    4 +-
 docs/reference/api/doxygen/search/variables_6.js   |    2 +
 docs/reference/api/doxygen/search/variables_9.js   |    2 +
 docs/reference/api/doxygen/search/variables_b.js   |    1 +
 docs/reference/api/doxygen/search/variables_d.js   |    1 +
 docs/reference/api/doxygen/search/variables_e.js   |    3 +-
 docs/reference/api/doxygen/search/variables_f.js   |    3 +-
 docs/reference/api/doxygen/search__policy_8h.html  |    4 +-
 .../api/doxygen/search__policy_8h__dep__incl.svg   |   12 +-
 .../api/doxygen/search__policy_8h__incl.svg        | 1587 ++---
 .../api/doxygen/search__policy_8h_source.html      |    2 +-
 .../reference/api/doxygen/search__strategy_8h.html |    2 +-
 .../api/doxygen/search__strategy_8h_source.html    |    2 +-
 docs/reference/api/doxygen/search__task_8h.html    |    4 +-
 .../api/doxygen/search__task_8h__dep__incl.svg     |   60 +-
 .../api/doxygen/search__task_8h__incl.svg          | 1128 ++--
 .../api/doxygen/search__task_8h_source.html        |    2 +-
 docs/reference/api/doxygen/serialization_8h.html   |    2 +-
 .../api/doxygen/serialization_8h_source.html       |    2 +-
 .../api/doxygen/serializer_8h__dep__incl.svg       |  928 +--
 .../api/doxygen/serializer_8h_source.html          |    2 +-
 docs/reference/api/doxygen/session_8h.html         |    2 +-
 docs/reference/api/doxygen/session_8h_source.html  |    2 +-
 docs/reference/api/doxygen/shape__tuple_8h.html    |    4 +-
 .../api/doxygen/shape__tuple_8h__dep__incl.svg     |  878 +--
 .../api/doxygen/shape__tuple_8h_source.html        |    6 +-
 docs/reference/api/doxygen/source__map_8h.html     |    2 +-
 .../api/doxygen/source__map_8h_source.html         |    2 +-
 .../reference/api/doxygen/space__generator_8h.html |    2 +-
 .../api/doxygen/space__generator_8h_source.html    |    6 +-
 docs/reference/api/doxygen/state_8h.html           |    2 +-
 docs/reference/api/doxygen/state_8h_source.html    |    4 +-
 docs/reference/api/doxygen/stmt_8h.html            |   10 +-
 docs/reference/api/doxygen/stmt_8h__dep__incl.svg  |  820 ++-
 docs/reference/api/doxygen/stmt_8h_source.html     |  390 +-
 docs/reference/api/doxygen/stmt__functor_8h.html   |    2 +-
 .../api/doxygen/stmt__functor_8h_source.html       |   26 +-
 docs/reference/api/doxygen/strided__slice_8h.html  |    2 +-
 .../api/doxygen/strided__slice_8h__dep__incl.svg   |   72 +-
 .../api/doxygen/strided__slice_8h__incl.svg        |   20 +-
 .../api/doxygen/strided__slice_8h_source.html      |    4 +-
 docs/reference/api/doxygen/string_8h.html          |    4 +-
 .../reference/api/doxygen/string_8h__dep__incl.svg | 1209 ++--
 docs/reference/api/doxygen/string_8h_source.html   |    2 +-
 .../api/doxygen/structTVMMetadata-members.html     |    4 +-
 docs/reference/api/doxygen/structTVMMetadata.html  |   40 +-
 .../api/doxygen/structTVMMetadata__coll__graph.svg |   48 +-
 .../api/doxygen/structural__equal_8h.html          |    2 +-
 .../doxygen/structural__equal_8h__dep__incl.svg    |  124 +-
 .../api/doxygen/structural__equal_8h_source.html   |    2 +-
 .../reference/api/doxygen/structural__hash_8h.html |    2 +-
 .../api/doxygen/structural__hash_8h__dep__incl.svg |  124 +-
 .../api/doxygen/structural__hash_8h_source.html    |    2 +-
 docs/reference/api/doxygen/support_2span_8h.html   |    8 +-
 .../api/doxygen/support_2span_8h__dep__incl.svg    |   36 -
 .../api/doxygen/support_2span_8h_source.html       |    2 +-
 docs/reference/api/doxygen/tag_8h.html             |    2 +-
 docs/reference/api/doxygen/tag_8h_source.html      |    2 +-
 docs/reference/api/doxygen/tags_8h.html            |    2 +-
 docs/reference/api/doxygen/tags_8h_source.html     |    2 +-
 docs/reference/api/doxygen/target_8h.html          |    2 +-
 docs/reference/api/doxygen/target_8h_source.html   |    2 +-
 docs/reference/api/doxygen/target__info_8h.html    |    2 +-
 .../api/doxygen/target__info_8h_source.html        |    2 +-
 docs/reference/api/doxygen/target__kind_8h.html    |    2 +-
 .../api/doxygen/target__kind_8h_source.html        |    4 +-
 docs/reference/api/doxygen/task__scheduler_8h.html |    2 +-
 .../api/doxygen/task__scheduler_8h_source.html     |    4 +-
 docs/reference/api/doxygen/te_2schedule_8h.html    |   10 +-
 .../api/doxygen/te_2schedule_8h__dep__incl.svg     |  648 +-
 .../api/doxygen/te_2schedule_8h__incl.svg          | 1406 +++--
 .../api/doxygen/te_2schedule_8h_source.html        |  182 +-
 docs/reference/api/doxygen/tensor_8h.html          |    2 +-
 docs/reference/api/doxygen/tensor_8h_source.html   |    8 +-
 docs/reference/api/doxygen/tensor__intrin_8h.html  |    2 +-
 .../api/doxygen/tensor__intrin_8h_source.html      |    2 +-
 docs/reference/api/doxygen/tensor__type_8h.html    |    2 +-
 .../api/doxygen/tensor__type_8h_source.html        |    4 +-
 docs/reference/api/doxygen/tensor__utils_8h.html   |    4 +-
 .../api/doxygen/tensor__utils_8h__dep__incl.svg    |   80 +-
 .../api/doxygen/tensor__utils_8h__incl.svg         | 1451 ++---
 .../api/doxygen/tensor__utils_8h_source.html       |    2 +-
 .../api/doxygen/threading__backend_8h.html         |    8 +-
 .../api/doxygen/threading__backend_8h_source.html  |   15 +-
 docs/reference/api/doxygen/tir_2analysis_8h.html   |    2 +-
 .../api/doxygen/tir_2analysis_8h_source.html       |    8 +-
 docs/reference/api/doxygen/tir_2expr_8h.html       |    2 +-
 .../reference/api/doxygen/tir_2expr_8h_source.html |  174 +-
 .../api/doxygen/tir_2expr__functor_8h.html         |    2 +-
 .../api/doxygen/tir_2expr__functor_8h_source.html  |   20 +-
 docs/reference/api/doxygen/tir_2function_8h.html   |    4 +-
 .../api/doxygen/tir_2function_8h__dep__incl.svg    | 1312 ++--
 .../api/doxygen/tir_2function_8h_source.html       |   38 +-
 docs/reference/api/doxygen/tir_2op_8h.html         |    2 +-
 docs/reference/api/doxygen/tir_2op_8h_source.html  |   10 +-
 .../api/doxygen/tir_2op__attr__types_8h.html       |    2 +-
 .../doxygen/tir_2op__attr__types_8h_source.html    |    2 +-
 .../api/doxygen/tir_2schedule_2schedule_8h.html    |    2 +-
 .../doxygen/tir_2schedule_2schedule_8h_source.html |    8 +-
 docs/reference/api/doxygen/tir_2transform_8h.html  |    4 +-
 .../api/doxygen/tir_2transform_8h_source.html      |    5 +-
 .../api/doxygen/tir_2usmp_2analysis_8h.html        |    2 +-
 .../api/doxygen/tir_2usmp_2analysis_8h_source.html |    4 +-
 .../api/doxygen/tir_2usmp_2transform_8h.html       |    2 +-
 .../doxygen/tir_2usmp_2transform_8h_source.html    |    2 +-
 .../reference/api/doxygen/tir_2usmp_2utils_8h.html |    2 +-
 .../api/doxygen/tir_2usmp_2utils_8h_source.html    |    6 +-
 docs/reference/api/doxygen/topi_2nn_8h.html        |    4 +-
 .../api/doxygen/topi_2nn_8h__dep__incl.svg         |   12 +-
 docs/reference/api/doxygen/topi_2nn_8h__incl.svg   | 1722 +++---
 docs/reference/api/doxygen/topi_2nn_8h_source.html |    4 +-
 docs/reference/api/doxygen/topi_2transform_8h.html |    4 +-
 .../api/doxygen/topi_2transform_8h__dep__incl.svg  |   64 +-
 .../api/doxygen/topi_2transform_8h__incl.svg       | 1458 +++--
 .../api/doxygen/topi_2transform_8h_source.html     |   22 +-
 docs/reference/api/doxygen/topi_2utils_8h.html     |    2 +-
 .../api/doxygen/topi_2utils_8h_source.html         |    2 +-
 docs/reference/api/doxygen/trace_8h.html           |    2 +-
 docs/reference/api/doxygen/trace_8h_source.html    |    2 +-
 docs/reference/api/doxygen/transform__step_8h.html |    4 +-
 .../api/doxygen/transform__step_8h__dep__incl.svg  |   96 +-
 .../api/doxygen/transform__step_8h__incl.svg       | 1451 ++---
 .../api/doxygen/transform__step_8h_source.html     |    8 +-
 docs/reference/api/doxygen/tune__context_8h.html   |    2 +-
 .../api/doxygen/tune__context_8h_source.html       |    2 +-
 docs/reference/api/doxygen/type__functor_8h.html   |    2 +-
 .../api/doxygen/type__functor_8h_source.html       |    2 +-
 docs/reference/api/doxygen/type__relation_8h.html  |    2 +-
 .../api/doxygen/type__relation_8h_source.html      |    2 +-
 docs/reference/api/doxygen/var_8h.html             |    4 +-
 docs/reference/api/doxygen/var_8h__dep__incl.svg   |  842 +--
 docs/reference/api/doxygen/var_8h_source.html      |   26 +-
 docs/reference/api/doxygen/virtual__device_8h.html |    2 +-
 .../api/doxygen/virtual__device_8h_source.html     |    4 +-
 docs/reference/api/doxygen/vision_8h.html          |    2 +-
 docs/reference/api/doxygen/vision_8h_source.html   |    4 +-
 docs/reference/api/doxygen/with_8h.html            |    2 +-
 docs/reference/api/doxygen/with_8h_source.html     |    2 +-
 docs/reference/api/doxygen/write__stream_8h.html   |    2 +-
 .../api/doxygen/write__stream_8h_source.html       |    2 +-
 docs/reference/api/doxygen/x86_2bnn_8h.html        |    4 +-
 docs/reference/api/doxygen/x86_2bnn_8h__incl.svg   | 1623 ++---
 docs/reference/api/doxygen/x86_2bnn_8h_source.html |   14 +-
 docs/reference/api/doxygen/x86_2default_8h.html    |    4 +-
 .../api/doxygen/x86_2default_8h__incl.svg          | 1268 ++--
 .../api/doxygen/x86_2default_8h_source.html        |   10 +-
 docs/reference/api/doxygen/x86_2injective_8h.html  |    4 +-
 .../api/doxygen/x86_2injective_8h__incl.svg        | 1623 ++---
 .../api/doxygen/x86_2injective_8h_source.html      |   10 +-
 .../javadoc/org/apache/tvm/class-use/Function.html |   20 +-
 .../org/apache/tvm/class-use/NDArrayBase.html      |    4 +-
 docs/reference/api/python/auto_scheduler.html      |    4 +-
 docs/reference/api/python/autotvm.html             |   55 +
 docs/reference/api/python/contrib.html             |  317 +-
 docs/reference/api/python/relay/index.html         |   51 +-
 docs/reference/api/python/te.html                  |   72 +
 docs/reference/api/python/tir.html                 |  223 +-
 docs/reference/api/python/topi.html                |   14 +-
 .../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  |    8 +-
 .../vta/tutorials/frontend/deploy_detection.html   |   12 +-
 .../vta/tutorials/frontend/sg_execution_times.html |    6 +-
 docs/topic/vta/tutorials/matrix_multiply.html      |   38 +-
 .../vta/tutorials/optimize/convolution_opt.html    |   62 +-
 .../tutorials/optimize/matrix_multiply_opt.html    |   50 +-
 .../vta/tutorials/optimize/sg_execution_times.html |    6 +-
 docs/topic/vta/tutorials/sg_execution_times.html   |    6 +-
 docs/topic/vta/tutorials/vta_get_started.html      |   20 +-
 docs/tutorial/auto_scheduler_matmul_x86.html       |   30 +-
 docs/tutorial/autotvm_relay_x86.html               |  168 +-
 docs/tutorial/cross_compilation_and_rpc.html       |    2 +-
 docs/tutorial/intro_topi.html                      |  331 +-
 docs/tutorial/relay_quick_start.html               |    2 +-
 docs/tutorial/sg_execution_times.html              |   26 +-
 docs/tutorial/tensor_expr_get_started.html         |  165 +-
 1057 files changed, 85717 insertions(+), 72738 deletions(-)

diff --git a/docs/_downloads/b954238c1884e83b45d2ae543d824f03/using_relay_viz.ipynb b/docs/_downloads/b954238c1884e83b45d2ae543d824f03/using_relay_viz.ipynb
index 70dc960..367b43e 100644
--- a/docs/_downloads/b954238c1884e83b45d2ae543d824f03/using_relay_viz.ipynb
+++ b/docs/_downloads/b954238c1884e83b45d2ae543d824f03/using_relay_viz.ipynb
@@ -15,7 +15,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "\nUse Relay Visualizer to Visualize Relay\n============================================================\n**Author**: `Chi-Wei Wang <https://github.com/chiwwang>`_\n\nRelay IR module can contain lots of operations. Although an individual\noperation is usually easy to understand, putting them together can cause\na complicated, hard-to-read graph. Things can get even worse with optimiztion-passes\ncoming into play.\n\nThis utility visualizes an IR module as nodes and edges. It defi [...]
+        "\nUse Relay Visualizer to Visualize Relay\n============================================================\n**Author**: `Chi-Wei Wang <https://github.com/chiwwang>`_\n\nRelay IR module can contain lots of operations. Although an individual\noperation is usually easy to understand, putting them together can cause\na complicated, hard-to-read graph. Things can get even worse with optimiztion-passes\ncoming into play.\n\nThis utility visualizes an IR module as nodes and edges. It defi [...]
       ]
     },
     {
diff --git a/docs/_downloads/c20f81a94729f461f33b52cc110fd9d6/deploy_prequantized.ipynb b/docs/_downloads/c20f81a94729f461f33b52cc110fd9d6/deploy_prequantized.ipynb
index 2d144a2..f4e15e2 100644
--- a/docs/_downloads/c20f81a94729f461f33b52cc110fd9d6/deploy_prequantized.ipynb
+++ b/docs/_downloads/c20f81a94729f461f33b52cc110fd9d6/deploy_prequantized.ipynb
@@ -177,7 +177,7 @@
       },
       "outputs": [],
       "source": [
-        "tvm_result, rt_mod = run_tvm_model(mod, params, input_name, inp, target=\"llvm\")"
+        "target = \"llvm\"\ntvm_result, rt_mod = run_tvm_model(mod, params, input_name, inp, target=target)"
       ]
     },
     {
diff --git a/docs/_downloads/cb089f2129f9829a01cc54eb81528811/using_relay_viz.py b/docs/_downloads/cb089f2129f9829a01cc54eb81528811/using_relay_viz.py
index f61fc41..10e6dab 100644
--- a/docs/_downloads/cb089f2129f9829a01cc54eb81528811/using_relay_viz.py
+++ b/docs/_downloads/cb089f2129f9829a01cc54eb81528811/using_relay_viz.py
@@ -32,6 +32,8 @@ A default parser is provided. Users can implement their own renderers to render
 Here we use a renderer rendering graph in the text-form.
 It is a lightweight, AST-like visualizer, inspired by `clang ast-dump <https://clang.llvm.org/docs/IntroductionToTheClangAST.html>`_.
 We will introduce how to implement customized parsers and renderers through interface classes.
+
+For more details, please refer to :py:mod:`tvm.contrib.relay_viz`.
 """
 from typing import (
     Dict,
diff --git a/docs/_downloads/fb8217c13f4351224c6cf3aacf1a87fc/deploy_prequantized.py b/docs/_downloads/fb8217c13f4351224c6cf3aacf1a87fc/deploy_prequantized.py
index 11a9e3e..caee2b3 100644
--- a/docs/_downloads/fb8217c13f4351224c6cf3aacf1a87fc/deploy_prequantized.py
+++ b/docs/_downloads/fb8217c13f4351224c6cf3aacf1a87fc/deploy_prequantized.py
@@ -175,7 +175,8 @@ mod, params = relay.frontend.from_pytorch(script_module, input_shapes)
 #
 # Under the hood, quantization specific operators are lowered to a sequence of
 # standard Relay operators before compilation.
-tvm_result, rt_mod = run_tvm_model(mod, params, input_name, inp, target="llvm")
+target = "llvm"
+tvm_result, rt_mod = run_tvm_model(mod, params, input_name, inp, target=target)
 
 ##########################################################################
 # Compare the output labels
diff --git a/docs/_sources/contribute/ci.rst.txt b/docs/_sources/contribute/ci.rst.txt
index 7152f16..0fdab3f 100644
--- a/docs/_sources/contribute/ci.rst.txt
+++ b/docs/_sources/contribute/ci.rst.txt
@@ -80,9 +80,12 @@ Skip CI for Reverts
 -------------------
 
 For reverts and trivial forward fixes, adding ``[skip ci]`` to the revert's
-commit message will cause CI to shortcut and only run lint. Committers should
+PR title will cause CI to shortcut and only run lint. Committers should
 take care that they only merge CI-skipped PRs to fix a failure on ``main`` and
 not in cases where the submitter wants to shortcut CI to merge a change faster.
+The PR title is checked when the build is first run (specifically during the lint
+step, so changes after that has run do not affect CI and will require the job to
+be re-triggered by another ``git push``).
 
 .. code:: bash
 
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 aa8b68c..97620bd 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.zipe1d47031-f8c1-4fcf-9201-2dce01ebf5ba from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
+    Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zip1e1ff422-41ea-4070-b3fe-e7ac181ee7fa 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_onnx.rst.txt b/docs/_sources/how_to/compile_models/from_onnx.rst.txt
index ae1c914..691d0d7 100644
--- a/docs/_sources/how_to/compile_models/from_onnx.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_onnx.rst.txt
@@ -128,7 +128,7 @@ provides a static definition of the input size.
 
  .. code-block:: none
 
-    /workspace/python/tvm/relay/frontend/onnx.py:5172: UserWarning: Mismatched attribute type in ' : kernel_shape'
+    /workspace/python/tvm/relay/frontend/onnx.py:5203: UserWarning: Mismatched attribute type in ' : kernel_shape'
 
     ==> Context: Bad node spec for node. Name:  OpType: Conv
       warnings.warn(str(e))
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 231de7e..e8d246c 100644
--- a/docs/_sources/how_to/compile_models/from_paddle.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_paddle.rst.txt
@@ -173,7 +173,7 @@ Look up prediction top 1 index in 1000 class synset.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  5.827 seconds)
+   **Total running time of the script:** ( 1 minutes  5.840 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 3a5ddac..332b3fe 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]
     41%|####1     | 18.4M/44.7M [00:00<00:00, 193MB/s]
     99%|#########8| 44.1M/44.7M [00:00<00:00, 238MB/s]
    100%|##########| 44.7M/44.7M [00:00<00:00, 232MB/s]
+
      0%|          | 0.00/44.7M [00:00<?, ?B/s]
      5%|5         | 2.38M/44.7M [00:00<00:01, 24.9MB/s]
     15%|#4        | 6.66M/44.7M [00:00<00:01, 36.7MB/s]
     45%|####4     | 20.1M/44.7M [00:00<00:00, 84.2MB/s]
    100%|##########| 44.7M/44.7M [00:00<00:00, 117MB/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 382d631..91ba962 100644
--- a/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
@@ -380,7 +380,7 @@ Run the corresponding model on tensorflow
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  2.224 seconds)
+   **Total running time of the script:** ( 1 minutes  4.056 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 2e7e1bc..ff27107 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:21.743** total execution time for **how_to_compile_models** files:
+**05:29.039** total execution time for **how_to_compile_models** files:
 
-- **01:05.827**: :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)
-- **01:02.224**: :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``)
-- **00:54.181**: :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)
-- **00:40.149**: :ref:`sphx_glr_how_to_compile_models_from_caffe2.py` (``from_caffe2.py``)
-- **00:24.675**: :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)
-- **00:21.587**: :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)
-- **00:19.483**: :ref:`sphx_glr_how_to_compile_models_from_mxnet.py` (``from_mxnet.py``)
-- **00:17.898**: :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)
-- **00:13.600**: :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)
-- **00:02.119**: :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)
+- **01:05.840**: :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)
+- **01:04.056**: :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``)
+- **00:56.106**: :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)
+- **00:41.382**: :ref:`sphx_glr_how_to_compile_models_from_caffe2.py` (``from_caffe2.py``)
+- **00:25.177**: :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)
+- **00:20.400**: :ref:`sphx_glr_how_to_compile_models_from_mxnet.py` (``from_mxnet.py``)
+- **00:20.264**: :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)
+- **00:19.275**: :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)
+- **00:14.105**: :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)
+- **00:02.433**: :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 7e1d202..99e44fb 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)  
-      14.0854      14.0852      14.2930      13.9182       0.1415   
+      16.1042      16.0792      16.7479      15.5151       0.4439   
                
 
 
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 ab87470..fbed403 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:429: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+    /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)
       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 573dc8b..017535e 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]
      2%|1         | 3.31M/170M [00:00<00:05, 34.6MB/s]
      6%|5         | 9.44M/170M [00:00<00:03, 51.9MB/s]
      9%|8         | 14.7M/170M [00:00<00:03, 53.3MB/s]
     12%|#1        | 19.8M/170M [00:00<00:03, 41.2MB/s]
     15%|#4        | 25.1M/170M [00:00<00:03, 45.6MB/s]
     18%|#8        | 31.0M/170M [00:00<00:02, 50.2MB/s]
     21%|##1       | 36.0M/170M [00:00<00:03, 43.8MB/s]
     25%|##4       | 41.9M/170M [00:00<00:02, 48.7MB/s]
     28%|##8       | 47.8M/170M [00:01<00:02, 52.4MB/s]
     32%|###1      | 54.0M/170M [00:01<00:02, 55.7MB/s]
     35%|###5      | 59.5M/170M [00:01<00:02, 54.7MB/s]
     38%|###8      | 64.8M/170M [00:01<00:02, 54.5MB/s]
     42%|####1     | 71.3M/170M [00:01<00:01, 58.1MB/s]
     46%|####6     | 78.1M/170M [00:01<00:01, 62.1MB/s]
     50%|####9     | 84.4M/170M [00:01<00:01, 63.1MB/s]
     53%|#####3    | 90.5M/170M [00:01<00:01, 62.8MB/s]
     57%|#####6    | 96.6M/170M [00:01<00:01, 63.0MB/
 s]
     60%|######    | 103M/170M [00:01<00:01, 62.4MB/s] 
     64%|######4   | 109M/170M [00:02<00:01, 63.5MB/s]
     68%|######7   | 115M/170M [00:02<00:00, 63.8MB/s]
     71%|#######1  | 121M/170M [00:02<00:00, 63.1MB/s]
     75%|#######4  | 127M/170M [00:02<00:00, 54.5MB/s]
     78%|#######8  | 133M/170M [00:02<00:00, 56.6MB/s]
     82%|########1 | 139M/170M [00:02<00:00, 57.9MB/s]
     85%|########5 | 145M/170M [00:02<00:00, 56.9MB/s]
     88%|########8 | 150M/170M [00:02<00:00, 54.3MB/s]
     92%|#########1| 156M/170M [00:02<00:00, 53.2MB/s]
     95%|#########4| 161M/170M [00:03<00:00, 46.2MB/s]
     97%|#########7| 165M/170M [00:03<00:00, 43.1MB/s]
    100%|##########| 170M/170M [00:03<00:00, 53.6MB/s]
+
      0%|          | 0.00/170M [00:00<?, ?B/s]
     11%|#1        | 19.1M/170M [00:00<00:00, 200MB/s]
     26%|##6       | 44.2M/170M [00:00<00:00, 237MB/s]
     41%|####      | 69.4M/170M [00:00<00:00, 249MB/s]
     56%|#####6    | 95.3M/170M [00:00<00:00, 258MB/s]
     71%|#######1  | 121M/170M [00:00<00:00, 262MB/s] 
     86%|########6 | 146M/170M [00:00<00:00, 264MB/s]
    100%|##########| 170M/170M [00:00<00:00, 257MB/s]
     /usr/local/lib/python3.6/dist-packages/torch/functional.py:445: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at  ../aten/src/ATen/native/TensorShape.cpp:2157.)
       return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]
     /usr/local/lib/python3.6/dist-packages/torch/nn/functional.py:3702: 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).
@@ -129,13 +129,6 @@ Load pre-trained maskrcnn from torchvision and do tracing
       for s, s_orig in zip(new_size, original_size)
     /usr/local/lib/python3.6/dist-packages/torchvision/models/detection/roi_heads.py:372: 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).
       return torch.tensor(M + 2 * padding).to(torch.float32) / torch.tensor(M).to(torch.float32)
-    /usr/local/lib/python3.6/dist-packages/torch/jit/_trace.py:991: TracerWarning: Output nr 2. of the traced function does not match the corresponding output of the Python function. Detailed error:
-    Tensor-likes are not close!
-
-    Mismatched elements: 1 / 2 (50.0%)
-    Greatest absolute difference: 0.8947528377175331 at index 1 (up to 1e-05 allowed)
-    Greatest relative difference: 0.918839969148101 at index 1 (up to 1e-05 allowed)
-      _module_class,
 
 
 
@@ -182,7 +175,7 @@ Import the graph to Relay
 
  .. code-block:: none
 
-    /workspace/python/tvm/relay/build_module.py:429: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+    /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)
       DeprecationWarning,
 
 
@@ -262,7 +255,7 @@ Get boxes with score larger than 0.9
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 2 minutes  49.198 seconds)
+   **Total running time of the script:** ( 2 minutes  59.751 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 facff7d..eef9377 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]
     47%|####7     | 6.44M/13.6M [00:00<00:00, 67.4MB/s]
     95%|#########4| 12.9M/13.6M [00:00<00:00, 51.7MB/s]
    100%|##########| 13.6M/13.6M [00:00<00:00, 54.6MB/s]
+
      0%|          | 0.00/13.6M [00:00<?, ?B/s]
     42%|####1     | 5.69M/13.6M [00:00<00:00, 59.6MB/s]
     84%|########3 | 11.4M/13.6M [00:00<00:00, 58.7MB/s]
    100%|##########| 13.6M/13.6M [00:00<00:00, 59.9MB/s]
 
 
 
@@ -265,7 +265,8 @@ standard Relay operators before compilation.
 
 .. code-block:: default
 
-    tvm_result, rt_mod = run_tvm_model(mod, params, input_name, inp, target="llvm")
+    target = "llvm"
+    tvm_result, rt_mod = run_tvm_model(mod, params, input_name, inp, target=target)
 
 
 
@@ -347,7 +348,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)  
-      87.1187      87.0691      89.9382      86.5509       0.3569   
+      90.2507      90.1289      91.9421      89.9283       0.3267   
                
 
 
@@ -387,7 +388,7 @@ TODO
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  4.710 seconds)
+   **Total running time of the script:** ( 1 minutes  6.844 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 16bfa98..037ae47 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
@@ -352,7 +352,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)  
-      115.9727     115.9867     118.1943     114.5755      0.4809   
+      117.8534     117.8098     122.0296     116.9189      0.6196   
                
 
 
@@ -386,7 +386,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  49.982 seconds)
+   **Total running time of the script:** ( 1 minutes  59.810 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 b671d9a..a79db99 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:429: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+    /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)
       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:** ( 1 minutes  12.561 seconds)
+   **Total running time of the script:** ( 1 minutes  13.356 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 fb6fd0f..b1acfca 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]
      5%|5         | 7063/132723 [00:00<00:01, 70621.65KB/s]
     12%|#2        | 16152/132723 [00:00<00:01, 82540.09KB/s]
     18%|#8        | 24407/132723 [00:00<00:01, 79073.20KB/s]
     25%|##4       | 32757/132723 [00:00<00:01, 58921.29KB/s]
     30%|##9       | 39231/132723 [00:00<00:01, 52500.18KB/s]
     37%|###6      | 48888/132723 [00:00<00:01, 64024.73KB/s]
     42%|####2     | 55905/132723 [00:00<00:01, 62081.36KB/s]
     49%|####9     | 65523/132723 [00:01<00:01, 56522.00KB/s]
     56%|#####6    | 74842/132723 [00:01<00:00, 65077.87KB/s]
     62%|######1   | 81922/132723 [00:01<00:00, 58564.40KB/s]
     68%|######7   | 89986/132723 [00:01<00:00, 63845.44KB/s]
     74%|#######4  | 98288/132723 [00:01<00:00, 63195.81KB/s]
     81%|########  | 107496/132723 [00:01<00:00, 70435.91KB/s]
     87%|########6 | 114917/132723 [00:01<00:00, 56932.53KB/s]
     94%|#########3| 124197/132723 [00:01<00:00, 65213.09KB/s]
     99%|########
 #9| 131409/132723 [00:02<00:00, 61765.05KB/s]
    100%|##########| 132723/132723 [00:02<00:00, 62812.71KB/s]
+
      0%|          | 0/132723 [00:00<?, ?KB/s]
      5%|5         | 7086/132723 [00:00<00:01, 70852.47KB/s]
     12%|#2        | 16073/132723 [00:00<00:01, 82036.16KB/s]
     19%|#8        | 24678/132723 [00:00<00:01, 83865.46KB/s]
     25%|##4       | 33065/132723 [00:00<00:01, 60847.69KB/s]
     30%|###       | 40087/132723 [00:00<00:01, 55062.75KB/s]
     37%|###6      | 48811/132723 [00:00<00:01, 63566.58KB/s]
     42%|####1     | 55724/132723 [00:00<00:01, 51224.69KB/s]
     49%|####8     | 64444/132723 [00:01<00:01, 59697.83KB/s]
     54%|#####3    | 71167/132723 [00:01<00:01, 50614.43KB/s]
     58%|#####7    | 76917/132723 [00:01<00:01, 49747.80KB/s]
     62%|######2   | 82353/132723 [00:01<00:01, 45939.26KB/s]
     69%|######8   | 91049/132723 [00:01<00:00, 55547.15KB/s]
     74%|#######4  | 98288/132723 [00:01<00:00, 50102.14KB/s]
     80%|########  | 106818/132723 [00:01<00:00, 58229.84KB/s]
     85%|########5 | 113458/132723 [00:02<00:00, 47222.48KB/s]
     90%|########9
  | 118872/132723 [00:02<00:00, 38675.19KB/s]
     96%|#########6| 127652/132723 [00:02<00:00, 48387.95KB/s]
    100%|##########| 132723/132723 [00:02<00:00, 53825.86KB/s]
 
 
 
@@ -202,7 +202,7 @@ Display result
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 2 minutes  19.477 seconds)
+   **Total running time of the script:** ( 2 minutes  24.540 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 a053eaa..0472867 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
 =================
-**10:03.663** total execution time for **how_to_deploy_models** files:
+**10:33.678** total execution time for **how_to_deploy_models** files:
 
-- **02:49.198**: :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``)
-- **02:19.477**: :ref:`sphx_glr_how_to_deploy_models_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)
-- **01:49.982**: :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)
-- **01:12.561**: :ref:`sphx_glr_how_to_deploy_models_deploy_quantized.py` (``deploy_quantized.py``)
-- **01:04.710**: :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)
-- **00:26.589**: :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)
-- **00:20.978**: :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)
-- **00:00.168**: :ref:`sphx_glr_how_to_deploy_models_deploy_sparse.py` (``deploy_sparse.py``)
+- **02:59.751**: :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``)
+- **02:24.540**: :ref:`sphx_glr_how_to_deploy_models_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)
+- **01:59.810**: :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)
+- **01:13.356**: :ref:`sphx_glr_how_to_deploy_models_deploy_quantized.py` (``deploy_quantized.py``)
+- **01:06.844**: :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)
+- **00:27.254**: :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)
+- **00:21.924**: :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)
+- **00:00.200**: :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 87fc3d7..eb773a0 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.zipe0cc3d1d-8c89-4885-8c59-24977626d21d from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
+    Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zip0246fe14-6daf-4336-90cf-efe6bfe45a86 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/low_level_custom_pass.rst.txt b/docs/_sources/how_to/extend_tvm/low_level_custom_pass.rst.txt
index 7afec4d..775f69c 100644
--- a/docs/_sources/how_to/extend_tvm/low_level_custom_pass.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/low_level_custom_pass.rst.txt
@@ -79,7 +79,7 @@ our customized lowering pass to manipulate the IR directly instead of using sche
                  b: Buffer(b_2: Pointer(float32), float32, [128], [])}
       buffer_map = {a_1: a, b_1: b, c_1: c} {
       for (i: int32, 0, 128) {
-        c_2[i] = ((float32*)a_2[i] + (float32*)b_2[i])
+        c[i] = (a[i] + b[i])
       }
     }
 
@@ -227,7 +227,7 @@ Thus, a good place to put this transformation pass is just after Phase 1.
       buffer_map = {a_1: a, b_1: b, c_1: c} {
       for (i.outer: int32, 0, 16) {
         let cse_var_1: int32 = (i.outer*8)
-        c_2[ramp(cse_var_1, 1, 8)] = ((float32x8*)a_2[ramp(cse_var_1, 1, 8)] + (float32x8*)b_2[ramp(cse_var_1, 1, 8)])
+        c[ramp(cse_var_1, 1, 8)] = (a[ramp(cse_var_1, 1, 8)] + b[ramp(cse_var_1, 1, 8)])
       }
     }
 
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 99cfd59..042b365 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:36.747** total execution time for **how_to_extend_tvm** files:
+**00:38.569** total execution time for **how_to_extend_tvm** files:
 
-- **00:33.365**: :ref:`sphx_glr_how_to_extend_tvm_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``)
-- **00:02.201**: :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)
-- **00:00.993**: :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)
-- **00:00.187**: :ref:`sphx_glr_how_to_extend_tvm_low_level_custom_pass.py` (``low_level_custom_pass.py``)
+- **00:34.989**: :ref:`sphx_glr_how_to_extend_tvm_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``)
+- **00:02.285**: :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)
+- **00:01.089**: :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)
+- **00:00.206**: :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 04f6ebe..90bdc3a 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: 5740us [5740us] (45.44%; 45.44%)
-    FoldScaleAxis: 6893us [2us] (54.56%; 54.56%)
-            FoldConstant: 6890us [1421us] (54.54%; 99.96%)
-                    InferType: 5469us [5469us] (43.30%; 79.38%)
+    InferType: 6242us [6242us] (45.59%; 45.59%)
+    FoldScaleAxis: 7449us [2us] (54.41%; 54.41%)
+            FoldConstant: 7447us [1533us] (54.39%; 99.97%)
+                    InferType: 5914us [5914us] (43.19%; 79.41%)
 
 
 
@@ -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: 5426us [5426us] (44.12%; 44.12%)
-    FoldScaleAxis: 6872us [2us] (55.88%; 55.88%)
-            FoldConstant: 6871us [1431us] (55.87%; 99.98%)
-                    InferType: 5439us [5439us] (44.23%; 79.17%)
+    InferType: 6012us [6012us] (44.82%; 44.82%)
+    FoldScaleAxis: 7401us [2us] (55.18%; 55.18%)
+            FoldConstant: 7399us [1538us] (55.16%; 99.97%)
+                    InferType: 5861us [5861us] (43.70%; 79.22%)
 
 
 
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 48ae046..ef09cad 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
@@ -296,7 +296,7 @@ latency of convolution.
 
  .. code-block:: none
 
-    Convolution: 54.175532 ms
+    Convolution: 37.764379 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 32a1460..79cf52b 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
@@ -405,9 +405,9 @@ one time.
 
     @main = primfn(A_1: handle, W_1: handle, Conv_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {Conv: Buffer(Conv_2: Pointer(float32), float32, [16, 14, 14, 32, 16, 16], []),
-                 A: Buffer(A_2: Pointer(float16), float16, [16, 14, 14, 16, 16, 16], []),
-                 W: Buffer(W_2: Pointer(float16), float16, [3, 3, 16, 32, 16, 16], [])}
+      buffers = {Conv: Buffer(Conv_2: Pointer(float32), float32, [25690112], []),
+                 A: Buffer(A_2: Pointer(float16), float16, [12845056], []),
+                 W: Buffer(W_2: Pointer(float16), float16, [1179648], [])}
       buffer_map = {A_1: A, W_1: W, Conv_1: Conv} {
       attr [IterVar(blockIdx.z: int32, (nullptr), "ThreadIndex", "blockIdx.z")] "thread_extent" = 196;
       allocate(Conv.wmma.accumulator: Pointer(wmma.accumulator float32), float32, [2048]), storage_scope = wmma.accumulator;
@@ -423,7 +423,7 @@ one time.
           for (o.c.init: int32, 0, 4) {
             for (nn.c.init: int32, 0, 16) {
               for (oo.c.init: int32, 0, 16) {
-                Conv.wmma.accumulator[((((n.c.init*1024) + (o.c.init*256)) + (nn.c.init*16)) + oo.c.init)] = 0f32
+                Conv.wmma.accumulator_1: Buffer(Conv.wmma.accumulator, float32, [2048], [], scope="wmma.accumulator")[((((n.c.init*1024) + (o.c.init*256)) + (nn.c.init*16)) + oo.c.init)] = 0f32
               }
             }
           }
@@ -436,14 +436,14 @@ one time.
                   let cse_var_2: int32 = (ax3*256)
                   let cse_var_1: int32 = (ax4.ax5.fused.outer*32)
                   attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 32;
-                  Apad.shared[((((((threadIdx.y*3072) + (threadIdx.z*1536)) + (ax2*512)) + cse_var_2) + cse_var_1) + threadIdx.x)] = @tir.if_then_else(((((1 <= (floordiv(blockIdx.z, 14) + kh)) && ((floordiv(blockIdx.z, 14) + kh) < 15)) && (1 <= (ax2 + floormod(blockIdx.z, 14)))) && ((ax2 + floormod(blockIdx.z, 14)) < 15)), (float16*)A_2[(((((((((((blockIdx.x*6422528) + (threadIdx.y*1605632)) + (threadIdx.z*802816)) + (kh*57344)) + (blockIdx.z*4096)) + (ax2*4096)) + (ic.outer*512)) + cse_ [...]
+                  Apad.shared_1: Buffer(Apad.shared, float16, [12288], [], scope="shared")[((((((threadIdx.y*3072) + (threadIdx.z*1536)) + (ax2*512)) + cse_var_2) + cse_var_1) + threadIdx.x)] = @tir.if_then_else(((((1 <= (floordiv(blockIdx.z, 14) + kh)) && ((floordiv(blockIdx.z, 14) + kh) < 15)) && (1 <= (ax2 + floormod(blockIdx.z, 14)))) && ((ax2 + floormod(blockIdx.z, 14)) < 15)), A[(((((((((((blockIdx.x*6422528) + (threadIdx.y*1605632)) + (threadIdx.z*802816)) + (kh*57344)) + (blockId [...]
                 }
               }
             }
             for (ax1: int32, 0, 3) {
               for (ax2_1: int32, 0, 2) {
                 attr [IterVar(threadIdx.x, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 32;
-                W.shared[ramp((((((ax1*4096) + (ax2_1*2048)) + (threadIdx.y*512)) + (threadIdx.z*256)) + (threadIdx.x*8)), 1, 8)] = (float16x8*)W_2[ramp(((((((((kh*393216) + (ax1*131072)) + (ic.outer*16384)) + (ax2_1*8192)) + (blockIdx.y*2048)) + (threadIdx.y*512)) + (threadIdx.z*256)) + (threadIdx.x*8)), 1, 8)]
+                W.shared_1: Buffer(W.shared, float16, [12288], [], scope="shared")[ramp((((((ax1*4096) + (ax2_1*2048)) + (threadIdx.y*512)) + (threadIdx.z*256)) + (threadIdx.x*8)), 1, 8)] = W[ramp(((((((((kh*393216) + (ax1*131072)) + (ic.outer*16384)) + (ax2_1*8192)) + (blockIdx.y*2048)) + (threadIdx.y*512)) + (threadIdx.z*256)) + (threadIdx.x*8)), 1, 8)]
               }
             }
             for (ic.inner: int32, 0, 2) {
@@ -452,7 +452,7 @@ one time.
                   for (ax4: int32, 0, 16) {
                     for (ax5: int32, 0, 16) {
                       let cse_var_3: int32 = (ax4*16)
-                      Apad.shared.wmma.matrix_a[(((ax0*256) + cse_var_3) + ax5)] = (float16*)Apad.shared[((((((threadIdx.y*3072) + (ax0*1536)) + (kw*512)) + (ic.inner*256)) + cse_var_3) + ax5)]
+                      Apad.shared.wmma.matrix_a_1: Buffer(Apad.shared.wmma.matrix_a, float16, [512], [], scope="wmma.matrix_a")[(((ax0*256) + cse_var_3) + ax5)] = Apad.shared_1[((((((threadIdx.y*3072) + (ax0*1536)) + (kw*512)) + (ic.inner*256)) + cse_var_3) + ax5)]
                     }
                   }
                 }
@@ -461,7 +461,7 @@ one time.
                     for (ax5_1: int32, 0, 16) {
                       let cse_var_5: int32 = (ax3_1*256)
                       let cse_var_4: int32 = (ax4_1*16)
-                      W.shared.wmma.matrix_b[((cse_var_5 + cse_var_4) + ax5_1)] = (float16*)W.shared[((((((kw*4096) + (ic.inner*2048)) + (threadIdx.z*1024)) + cse_var_5) + cse_var_4) + ax5_1)]
+                      W.shared.wmma.matrix_b_1: Buffer(W.shared.wmma.matrix_b, float16, [1024], [], scope="wmma.matrix_b")[((cse_var_5 + cse_var_4) + ax5_1)] = W.shared_1[((((((kw*4096) + (ic.inner*2048)) + (threadIdx.z*1024)) + cse_var_5) + cse_var_4) + ax5_1)]
                     }
                   }
                 }
@@ -473,7 +473,7 @@ one time.
                           let cse_var_8: int32 = (o.c*256)
                           let cse_var_7: int32 = (nn.c*16)
                           let cse_var_6: int32 = ((((n.c*1024) + cse_var_8) + cse_var_7) + oo.c)
-                          Conv.wmma.accumulator[cse_var_6] = ((float32*)Conv.wmma.accumulator[cse_var_6] + (cast(float32, (float16*)Apad.shared.wmma.matrix_a[(((n.c*256) + cse_var_7) + ii)])*cast(float32, (float16*)W.shared.wmma.matrix_b[((cse_var_8 + (ii*16)) + oo.c)])))
+                          Conv.wmma.accumulator_1[cse_var_6] = (Conv.wmma.accumulator_1[cse_var_6] + (cast(float32, Apad.shared.wmma.matrix_a_1[(((n.c*256) + cse_var_7) + ii)])*cast(float32, W.shared.wmma.matrix_b_1[((cse_var_8 + (ii*16)) + oo.c)])))
                         }
                       }
                     }
@@ -489,7 +489,7 @@ one time.
               for (oo: int32, 0, 16) {
                 let cse_var_10: int32 = (o.inner*256)
                 let cse_var_9: int32 = (nn*16)
-                Conv_2[(((((((((blockIdx.x*12845056) + (threadIdx.y*3211264)) + (n.inner*1605632)) + (blockIdx.z*8192)) + (blockIdx.y*2048)) + (threadIdx.z*1024)) + cse_var_10) + cse_var_9) + oo)] = (float32*)Conv.wmma.accumulator[((((n.inner*1024) + cse_var_10) + cse_var_9) + oo)]
+                Conv[(((((((((blockIdx.x*12845056) + (threadIdx.y*3211264)) + (n.inner*1605632)) + (blockIdx.z*8192)) + (blockIdx.y*2048)) + (threadIdx.z*1024)) + cse_var_10) + cse_var_9) + oo)] = Conv.wmma.accumulator_1[((((n.inner*1024) + cse_var_10) + cse_var_9) + oo)]
               }
             }
           }
@@ -528,9 +528,9 @@ by mapping the 2D convolution to tensor intrinsics
 
     @main = primfn(A_1: handle, W_1: handle, Conv_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {Conv: Buffer(Conv_2: Pointer(float32), float32, [16, 14, 14, 32, 16, 16], []),
-                 A: Buffer(A_2: Pointer(float16), float16, [16, 14, 14, 16, 16, 16], []),
-                 W: Buffer(W_2: Pointer(float16), float16, [3, 3, 16, 32, 16, 16], [])}
+      buffers = {Conv: Buffer(Conv_2: Pointer(float32), float32, [25690112], []),
+                 A: Buffer(A_2: Pointer(float16), float16, [12845056], []),
+                 W: Buffer(W_2: Pointer(float16), float16, [1179648], [])}
       buffer_map = {A_1: A, W_1: W, Conv_1: Conv} {
       attr [IterVar(blockIdx.z: int32, (nullptr), "ThreadIndex", "blockIdx.z")] "thread_extent" = 196;
       allocate(Conv.wmma.accumulator: Pointer(wmma.accumulator float32), float32, [2048]), storage_scope = wmma.accumulator;
@@ -555,14 +555,14 @@ by mapping the 2D convolution to tensor intrinsics
                   let cse_var_2: int32 = (ax3*256)
                   let cse_var_1: int32 = (ax4.ax5.fused.outer*32)
                   attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 32;
-                  Apad.shared[((((((threadIdx.y*3072) + (threadIdx.z*1536)) + (ax2*512)) + cse_var_2) + cse_var_1) + threadIdx.x)] = @tir.if_then_else(((((1 <= (floordiv(blockIdx.z, 14) + kh)) && ((floordiv(blockIdx.z, 14) + kh) < 15)) && (1 <= (ax2 + floormod(blockIdx.z, 14)))) && ((ax2 + floormod(blockIdx.z, 14)) < 15)), (float16*)A_2[(((((((((((blockIdx.x*6422528) + (threadIdx.y*1605632)) + (threadIdx.z*802816)) + (kh*57344)) + (blockIdx.z*4096)) + (ax2*4096)) + (ic.outer*512)) + cse_ [...]
+                  Apad.shared_1: Buffer(Apad.shared, float16, [12288], [], scope="shared")[((((((threadIdx.y*3072) + (threadIdx.z*1536)) + (ax2*512)) + cse_var_2) + cse_var_1) + threadIdx.x)] = @tir.if_then_else(((((1 <= (floordiv(blockIdx.z, 14) + kh)) && ((floordiv(blockIdx.z, 14) + kh) < 15)) && (1 <= (ax2 + floormod(blockIdx.z, 14)))) && ((ax2 + floormod(blockIdx.z, 14)) < 15)), A[(((((((((((blockIdx.x*6422528) + (threadIdx.y*1605632)) + (threadIdx.z*802816)) + (kh*57344)) + (blockId [...]
                 }
               }
             }
             for (ax1: int32, 0, 3) {
               for (ax2_1: int32, 0, 2) {
                 attr [IterVar(threadIdx.x, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 32;
-                W.shared[ramp((((((ax1*4096) + (ax2_1*2048)) + (threadIdx.y*512)) + (threadIdx.z*256)) + (threadIdx.x*8)), 1, 8)] = (float16x8*)W_2[ramp(((((((((kh*393216) + (ax1*131072)) + (ic.outer*16384)) + (ax2_1*8192)) + (blockIdx.y*2048)) + (threadIdx.y*512)) + (threadIdx.z*256)) + (threadIdx.x*8)), 1, 8)]
+                W.shared_1: Buffer(W.shared, float16, [12288], [], scope="shared")[ramp((((((ax1*4096) + (ax2_1*2048)) + (threadIdx.y*512)) + (threadIdx.z*256)) + (threadIdx.x*8)), 1, 8)] = W[ramp(((((((((kh*393216) + (ax1*131072)) + (ic.outer*16384)) + (ax2_1*8192)) + (blockIdx.y*2048)) + (threadIdx.y*512)) + (threadIdx.z*256)) + (threadIdx.x*8)), 1, 8)]
               }
             }
             for (ic.inner: int32, 0, 2) {
@@ -627,7 +627,7 @@ be able to run on our build server
 
  .. code-block:: none
 
-    conv2d with tensor core: 6.604145 ms
+    conv2d with tensor core: 7.340276 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 3cae222..3487363 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.014836
-    Baseline: 3.256232
+    Numpy running time: 0.019323
+    Baseline: 3.247969
 
 
 
@@ -144,17 +144,17 @@ Here is the generated IR using our baseline schedule.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (m: int32, 0, 1024) {
         for (n: int32, 0, 1024) {
-          C_2[((m*1024) + n)] = 0f32
+          C[((m*1024) + n)] = 0f32
           for (k: int32, 0, 1024) {
             let cse_var_2: int32 = (m*1024)
             let cse_var_1: int32 = (cse_var_2 + n)
-            C_2[cse_var_1] = ((float32*)C_2[cse_var_1] + ((float32*)A_2[(cse_var_2 + k)]*(float32*)B_2[((k*1024) + n)]))
+            C[cse_var_1] = (C[cse_var_1] + (A[(cse_var_2 + k)]*B[((k*1024) + n)]))
           }
         }
       }
@@ -209,7 +209,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 
  .. code-block:: none
 
-    Opt1: 0.289397
+    Opt1: 0.333472
 
 
 
@@ -233,15 +233,15 @@ Here is the generated IR after blocking.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (m.outer: int32, 0, 32) {
         for (n.outer: int32, 0, 32) {
           for (m.inner.init: int32, 0, 32) {
             for (n.inner.init: int32, 0, 32) {
-              C_2[((((m.outer*32768) + (m.inner.init*1024)) + (n.outer*32)) + n.inner.init)] = 0f32
+              C[((((m.outer*32768) + (m.inner.init*1024)) + (n.outer*32)) + n.inner.init)] = 0f32
             }
           }
           for (k.outer: int32, 0, 256) {
@@ -251,7 +251,7 @@ Here is the generated IR after blocking.
                   let cse_var_3: int32 = (n.outer*32)
                   let cse_var_2: int32 = ((m.outer*32768) + (m.inner*1024))
                   let cse_var_1: int32 = ((cse_var_2 + cse_var_3) + n.inner)
-                  C_2[cse_var_1] = ((float32*)C_2[cse_var_1] + ((float32*)A_2[((cse_var_2 + (k.outer*4)) + k.inner)]*(float32*)B_2[((((k.outer*4096) + (k.inner*1024)) + cse_var_3) + n.inner)]))
+                  C[cse_var_1] = (C[cse_var_1] + (A[((cse_var_2 + (k.outer*4)) + k.inner)]*B[((((k.outer*4096) + (k.inner*1024)) + cse_var_3) + n.inner)]))
                 }
               }
             }
@@ -307,7 +307,7 @@ In this tutorial, we chose to vectorize the inner loop row data since it is cach
 
  .. code-block:: none
 
-    Opt2: 0.328705
+    Opt2: 0.346588
 
 
 
@@ -331,14 +331,14 @@ Here is the generated IR after vectorization.
 
     @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, [1024, 1024], []),
-                 C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (m.outer: int32, 0, 32) {
         for (n.outer: int32, 0, 32) {
           for (m.inner.init: int32, 0, 32) {
-            C_2[ramp((((m.outer*32768) + (m.inner.init*1024)) + (n.outer*32)), 1, 32)] = broadcast(0f32, 32)
+            C[ramp((((m.outer*32768) + (m.inner.init*1024)) + (n.outer*32)), 1, 32)] = broadcast(0f32, 32)
           }
           for (k.outer: int32, 0, 256) {
             for (k.inner: int32, 0, 4) {
@@ -346,7 +346,7 @@ Here is the generated IR after vectorization.
                 let cse_var_3: int32 = (n.outer*32)
                 let cse_var_2: int32 = ((m.outer*32768) + (m.inner*1024))
                 let cse_var_1: int32 = (cse_var_2 + cse_var_3)
-                C_2[ramp(cse_var_1, 1, 32)] = ((float32x32*)C_2[ramp(cse_var_1, 1, 32)] + (broadcast((float32*)A_2[((cse_var_2 + (k.outer*4)) + k.inner)], 32)*(float32x32*)B_2[ramp((((k.outer*4096) + (k.inner*1024)) + cse_var_3), 1, 32)]))
+                C[ramp(cse_var_1, 1, 32)] = (C[ramp(cse_var_1, 1, 32)] + (broadcast(A[((cse_var_2 + (k.outer*4)) + k.inner)], 32)*B[ramp((((k.outer*4096) + (k.inner*1024)) + cse_var_3), 1, 32)]))
               }
             }
           }
@@ -398,7 +398,7 @@ the access pattern for A matrix is more cache friendly.
 
  .. code-block:: none
 
-    Opt3: 0.113126
+    Opt3: 0.116174
 
 
 
@@ -422,14 +422,14 @@ Here is the generated IR after loop permutation.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (m.outer: int32, 0, 32) {
         for (n.outer: int32, 0, 32) {
           for (m.inner.init: int32, 0, 32) {
-            C_2[ramp((((m.outer*32768) + (m.inner.init*1024)) + (n.outer*32)), 1, 32)] = broadcast(0f32, 32)
+            C[ramp((((m.outer*32768) + (m.inner.init*1024)) + (n.outer*32)), 1, 32)] = broadcast(0f32, 32)
           }
           for (k.outer: int32, 0, 256) {
             for (m.inner: int32, 0, 32) {
@@ -437,7 +437,7 @@ Here is the generated IR after loop permutation.
                 let cse_var_3: int32 = (n.outer*32)
                 let cse_var_2: int32 = ((m.outer*32768) + (m.inner*1024))
                 let cse_var_1: int32 = (cse_var_2 + cse_var_3)
-                C_2[ramp(cse_var_1, 1, 32)] = ((float32x32*)C_2[ramp(cse_var_1, 1, 32)] + (broadcast((float32*)A_2[((cse_var_2 + (k.outer*4)) + k.inner)], 32)*(float32x32*)B_2[ramp((((k.outer*4096) + (k.inner*1024)) + cse_var_3), 1, 32)]))
+                C[ramp(cse_var_1, 1, 32)] = (C[ramp(cse_var_1, 1, 32)] + (broadcast(A[((cse_var_2 + (k.outer*4)) + k.inner)], 32)*B[ramp((((k.outer*4096) + (k.inner*1024)) + cse_var_3), 1, 32)]))
               }
             }
           }
@@ -516,7 +516,7 @@ flattening.
 
  .. code-block:: none
 
-    Opt4: 0.106034
+    Opt4: 0.110871
 
 
 
@@ -540,27 +540,28 @@ Here is the generated IR after array packing.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       allocate(packedB: Pointer(global float32x32), float32x32, [32768]), storage_scope = global {
         for (bigN: int32, 0, 32) "parallel" {
           for (k: int32, 0, 1024) {
-            packedB[ramp(((bigN*32768) + (k*32)), 1, 32)] = (float32x32*)B_2[ramp(((k*1024) + (bigN*32)), 1, 32)]
+            packedB_1: Buffer(packedB, float32x32, [32768], [])[((bigN*1024) + k)] = B[ramp(((k*1024) + (bigN*32)), 1, 32)]
           }
         }
         for (m.outer: int32, 0, 32) {
           for (n.outer: int32, 0, 32) {
             for (m.inner.init: int32, 0, 32) {
-              C_2[ramp((((m.outer*32768) + (m.inner.init*1024)) + (n.outer*32)), 1, 32)] = broadcast(0f32, 32)
+              C[ramp((((m.outer*32768) + (m.inner.init*1024)) + (n.outer*32)), 1, 32)] = broadcast(0f32, 32)
             }
             for (k.outer: int32, 0, 256) {
               for (m.inner: int32, 0, 32) {
                 for (k.inner: int32, 0, 4) {
-                  let cse_var_2: int32 = ((m.outer*32768) + (m.inner*1024))
-                  let cse_var_1: int32 = (cse_var_2 + (n.outer*32))
-                  C_2[ramp(cse_var_1, 1, 32)] = ((float32x32*)C_2[ramp(cse_var_1, 1, 32)] + (broadcast((float32*)A_2[((cse_var_2 + (k.outer*4)) + k.inner)], 32)*(float32x32*)packedB[ramp((((n.outer*32768) + (k.outer*128)) + (k.inner*32)), 1, 32)]))
+                  let cse_var_3: int32 = ((m.outer*32768) + (m.inner*1024))
+                  let cse_var_2: int32 = (k.outer*4)
+                  let cse_var_1: int32 = (cse_var_3 + (n.outer*32))
+                  C[ramp(cse_var_1, 1, 32)] = (C[ramp(cse_var_1, 1, 32)] + (broadcast(A[((cse_var_3 + cse_var_2) + k.inner)], 32)*packedB_1[(((n.outer*1024) + cse_var_2) + k.inner)]))
                 }
               }
             }
@@ -632,7 +633,7 @@ write to C when all the block results are ready.
 
  .. code-block:: none
 
-    Opt5: 0.096499
+    Opt5: 0.111154
 
 
 
@@ -656,38 +657,39 @@ Here is the generated IR after blocking.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       allocate(packedB: Pointer(global float32x32), float32x32, [32768]), storage_scope = global;
       allocate(C.global: Pointer(global float32), float32, [1024]), storage_scope = global {
         for (bigN: int32, 0, 32) "parallel" {
           for (k: int32, 0, 1024) {
-            packedB[ramp(((bigN*32768) + (k*32)), 1, 32)] = (float32x32*)B_2[ramp(((k*1024) + (bigN*32)), 1, 32)]
+            packedB_1: Buffer(packedB, float32x32, [32768], [])[((bigN*1024) + k)] = B[ramp(((k*1024) + (bigN*32)), 1, 32)]
           }
         }
         for (m.outer: int32, 0, 32) {
           for (n.outer: int32, 0, 32) {
             for (m.c.init: int32, 0, 32) {
-              C.global[ramp((m.c.init*32), 1, 32)] = broadcast(0f32, 32)
+              C.global_1: Buffer(C.global, float32, [1024], [])[ramp((m.c.init*32), 1, 32)] = broadcast(0f32, 32)
             }
             for (k.outer: int32, 0, 256) {
               for (m.c: int32, 0, 32) {
+                let cse_var_4: int32 = (k.outer*4)
                 let cse_var_3: int32 = (m.c*32)
-                let cse_var_2: int32 = ((n.outer*32768) + (k.outer*128))
-                let cse_var_1: int32 = (((m.outer*32768) + (m.c*1024)) + (k.outer*4))
+                let cse_var_2: int32 = ((n.outer*1024) + cse_var_4)
+                let cse_var_1: int32 = (((m.outer*32768) + (m.c*1024)) + cse_var_4)
                  {
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[cse_var_1], 32)*(float32x32*)packedB[ramp(cse_var_2, 1, 32)]))
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[(cse_var_1 + 1)], 32)*(float32x32*)packedB[ramp((cse_var_2 + 32), 1, 32)]))
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[(cse_var_1 + 2)], 32)*(float32x32*)packedB[ramp((cse_var_2 + 64), 1, 32)]))
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[(cse_var_1 + 3)], 32)*(float32x32*)packedB[ramp((cse_var_2 + 96), 1, 32)]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[cse_var_1], 32)*packedB_1[cse_var_2]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[(cse_var_1 + 1)], 32)*packedB_1[(cse_var_2 + 1)]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[(cse_var_1 + 2)], 32)*packedB_1[(cse_var_2 + 2)]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[(cse_var_1 + 3)], 32)*packedB_1[(cse_var_2 + 3)]))
                 }
               }
             }
             for (m.inner: int32, 0, 32) {
               for (n.inner: int32, 0, 32) {
-                C_2[((((m.outer*32768) + (m.inner*1024)) + (n.outer*32)) + n.inner)] = (float32*)C.global[((m.inner*32) + n.inner)]
+                C[((((m.outer*32768) + (m.inner*1024)) + (n.outer*32)) + n.inner)] = C.global_1[((m.inner*32) + n.inner)]
               }
             }
           }
@@ -751,7 +753,7 @@ Futhermore, we can also utilize multi-core processors to do the thread-level par
 
  .. code-block:: none
 
-    Opt6: 0.125081
+    Opt6: 0.144823
 
 
 
@@ -775,38 +777,39 @@ Here is the generated IR after parallelization.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       allocate(packedB: Pointer(global float32x32), float32x32, [32768]), storage_scope = global {
         for (bigN: int32, 0, 32) "parallel" {
           for (k: int32, 0, 1024) {
-            packedB[ramp(((bigN*32768) + (k*32)), 1, 32)] = (float32x32*)B_2[ramp(((k*1024) + (bigN*32)), 1, 32)]
+            packedB_1: Buffer(packedB, float32x32, [32768], [])[((bigN*1024) + k)] = B[ramp(((k*1024) + (bigN*32)), 1, 32)]
           }
         }
         for (m.outer: int32, 0, 32) "parallel" {
           allocate(C.global: Pointer(global float32), float32, [1024]), storage_scope = global;
           for (n.outer: int32, 0, 32) {
             for (m.c.init: int32, 0, 32) {
-              C.global[ramp((m.c.init*32), 1, 32)] = broadcast(0f32, 32)
+              C.global_1: Buffer(C.global, float32, [1024], [])[ramp((m.c.init*32), 1, 32)] = broadcast(0f32, 32)
             }
             for (k.outer: int32, 0, 256) {
               for (m.c: int32, 0, 32) {
+                let cse_var_4: int32 = (k.outer*4)
                 let cse_var_3: int32 = (m.c*32)
-                let cse_var_2: int32 = ((n.outer*32768) + (k.outer*128))
-                let cse_var_1: int32 = (((m.outer*32768) + (m.c*1024)) + (k.outer*4))
+                let cse_var_2: int32 = ((n.outer*1024) + cse_var_4)
+                let cse_var_1: int32 = (((m.outer*32768) + (m.c*1024)) + cse_var_4)
                  {
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[cse_var_1], 32)*(float32x32*)packedB[ramp(cse_var_2, 1, 32)]))
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[(cse_var_1 + 1)], 32)*(float32x32*)packedB[ramp((cse_var_2 + 32), 1, 32)]))
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[(cse_var_1 + 2)], 32)*(float32x32*)packedB[ramp((cse_var_2 + 64), 1, 32)]))
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[(cse_var_1 + 3)], 32)*(float32x32*)packedB[ramp((cse_var_2 + 96), 1, 32)]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[cse_var_1], 32)*packedB_1[cse_var_2]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[(cse_var_1 + 1)], 32)*packedB_1[(cse_var_2 + 1)]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[(cse_var_1 + 2)], 32)*packedB_1[(cse_var_2 + 2)]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[(cse_var_1 + 3)], 32)*packedB_1[(cse_var_2 + 3)]))
                 }
               }
             }
             for (m.inner: int32, 0, 32) {
               for (n.inner: int32, 0, 32) {
-                C_2[((((m.outer*32768) + (m.inner*1024)) + (n.outer*32)) + n.inner)] = (float32*)C.global[((m.inner*32) + n.inner)]
+                C[((((m.outer*32768) + (m.inner*1024)) + (n.outer*32)) + n.inner)] = C.global_1[((m.inner*32) + n.inner)]
               }
             }
           }
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 f9d144a..ce688ef 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:32.654** total execution time for **how_to_optimize_operators** files:
+**00:35.235** total execution time for **how_to_optimize_operators** files:
 
-- **00:30.028**: :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)
-- **00:01.352**: :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``)
-- **00:01.273**: :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)
+- **00:32.549**: :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)
+- **00:01.478**: :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``)
+- **00:01.208**: :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 1ba3d66..5cd5d43 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:42.076** total execution time for **how_to_tune_with_autoscheduler** files:
-
-- **02:11.914**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``)
-- **01:17.218**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)
-- **00:38.742**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)
-- **00:16.867**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)
-- **00:08.878**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)
-- **00:08.457**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)
+**05:01.378** total execution time for **how_to_tune_with_autoscheduler** files:
+
+- **02:26.864**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``)
+- **01:20.793**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)
+- **00:39.472**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)
+- **00:16.980**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)
+- **00:08.855**: :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)
+- **00:08.413**: :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 02cb4aa..d61fba9 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
@@ -216,134 +216,1111 @@ cooperative fetching, unrolling and operator fusion.
     Lowered TIR:
     @main = primfn(data_1: handle, kernel_1: handle, bias_1: handle, compute_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {compute: Buffer(compute_2: Pointer(float32), float32, [1, 512, 7, 7], []),
-                 bias: Buffer(bias_2: Pointer(float32), float32, [1, 512, 1, 1], []),
-                 data: Buffer(data_2: Pointer(float32), float32, [1, 512, 7, 7], []),
-                 kernel: Buffer(kernel_2: Pointer(float32), float32, [512, 512, 3, 3], [])}
+      buffers = {compute: Buffer(compute_2: Pointer(float32), float32, [25088], []),
+                 bias: Buffer(bias_2: Pointer(float32), float32, [512], []),
+                 data: Buffer(data_2: Pointer(float32), float32, [25088], []),
+                 kernel: Buffer(kernel_2: Pointer(float32), float32, [2359296], [])}
       buffer_map = {data_1: data, kernel_1: kernel, bias_1: bias, compute_1: compute} {
       attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 32;
-      allocate(conv2d_nchw: Pointer(local float32), float32, [8]), storage_scope = local;
-      allocate(pad_temp.shared: Pointer(shared float32), float32, [648]), storage_scope = shared;
-      allocate(kernel.shared: Pointer(shared float32), float32, [1152]), storage_scope = shared;
-      attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98 {
-        conv2d_nchw[0] = 0f32
-        conv2d_nchw[1] = 0f32
-        conv2d_nchw[2] = 0f32
-        conv2d_nchw[3] = 0f32
-        conv2d_nchw[4] = 0f32
-        conv2d_nchw[5] = 0f32
-        conv2d_nchw[6] = 0f32
-        conv2d_nchw[7] = 0f32
-        for (rc.outer.outer: int32, 0, 64) {
-          let cse_var_2: int32 = (rc.outer.outer*392)
-          let cse_var_1: int32 = (rc.outer.outer*72)
+      allocate(conv2d_nchw: Pointer(local float32), float32, [7]), storage_scope = local;
+      allocate(pad_temp.shared: Pointer(shared float32), float32, [1296]), storage_scope = shared;
+      allocate(kernel.shared: Pointer(shared float32), float32, [2304]), storage_scope = shared;
+      attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112 {
+        conv2d_nchw_1: Buffer(conv2d_nchw, float32, [7], [], scope="local", align=16)[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
+        for (rc.outer.outer: int32, 0, 32) {
+          let cse_var_2: int32 = (rc.outer.outer*784)
+          let cse_var_1: int32 = (rc.outer.outer*144)
            {
-            attr [IterVar(threadIdx.x_1: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            pad_temp.shared[threadIdx.x_1] = @tir.if_then_else(((((9 <= floormod(threadIdx.x_1, 81)) && (floormod(threadIdx.x_1, 81) < 72)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), (float32*)data_2[((((cse_var_2 + (floordiv(threadIdx.x_1, 81)*49)) + (floordiv(floormod(threadIdx.x_1, 81), 9)*7)) + floormod(threadIdx.x_1, 9)) - 8)], 0f32, dtype=float32)
-            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            pad_temp.shared[(threadIdx.x_1 + 98)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 98), 81)) && (floormod((threadIdx.x_1 + 17), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), (float32*)data_2[((((cse_var_2 + (floordiv((threadIdx.x_1 + 98), 81)*49)) + (floordiv(floormod((threadIdx.x_1 + 98), 81), 9)*7)) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
-            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            pad_temp.shared[(threadIdx.x_1 + 196)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 196), 81)) && (floormod((threadIdx.x_1 + 34), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), (float32*)data_2[((((cse_var_2 + (floordiv((threadIdx.x_1 + 196), 81)*49)) + (floordiv(floormod((threadIdx.x_1 + 196), 81), 9)*7)) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
-            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            pad_temp.shared[(threadIdx.x_1 + 294)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 294), 81)) && (floormod((threadIdx.x_1 + 51), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 6), 9))) && (floormod((threadIdx.x_1 + 6), 9) < 8)), (float32*)data_2[((((cse_var_2 + (floordiv((threadIdx.x_1 + 294), 81)*49)) + (floordiv(floormod((threadIdx.x_1 + 294), 81), 9)*7)) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
-            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            pad_temp.shared[(threadIdx.x_1 + 392)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 392), 81)) && (floormod((threadIdx.x_1 + 68), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), (float32*)data_2[((((cse_var_2 + (floordiv((threadIdx.x_1 + 392), 81)*49)) + (floordiv(floormod((threadIdx.x_1 + 392), 81), 9)*7)) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
-            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            pad_temp.shared[(threadIdx.x_1 + 490)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 490), 81)) && (floormod((threadIdx.x_1 + 4), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), (float32*)data_2[((((cse_var_2 + (floordiv((threadIdx.x_1 + 490), 81)*49)) + (floordiv(floormod((threadIdx.x_1 + 490), 81), 9)*7)) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
-            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            if @tir.likely((threadIdx.x_1 < 60), dtype=bool) {
-              pad_temp.shared[(threadIdx.x_1 + 588)] = @tir.if_then_else((((floormod((threadIdx.x_1 + 21), 81) < 72) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), (float32*)data_2[((((cse_var_2 + (floordiv((threadIdx.x_1 + 588), 81)*49)) + (floordiv(floormod((threadIdx.x_1 + 588), 81), 9)*7)) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
+            attr [IterVar(threadIdx.x_1: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112 {
+              pad_temp.shared_1: Buffer(pad_temp.shared, float32, [1296], [], scope="shared")[(threadIdx.x_1*6)] = @tir.if_then_else(((((3 <= floormod((threadIdx.x_1*2), 27)) && (floormod((threadIdx.x_1*6), 81) < 72)) && (1 <= floormod((threadIdx.x_1*6), 9))) && (floormod((threadIdx.x_1*6), 9) < 8)), data[((((cse_var_2 + (floordiv((threadIdx.x_1*2), 27)*49)) + (floordiv(floormod((threadIdx.x_1*2), 27), 3)*7)) + floormod((threadIdx.x_1*6), 9)) - 8)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*6) + 1)] = @tir.if_then_else(((((3 <= floormod((threadIdx.x_1*2), 27)) && (floormod(((threadIdx.x_1*6) + 1), 81) < 72)) && (1 <= floormod(((threadIdx.x_1*6) + 1), 9))) && (floormod(((threadIdx.x_1*6) + 1), 9) < 8)), data[((((cse_var_2 + (floordiv((threadIdx.x_1*2), 27)*49)) + (floordiv(floormod((threadIdx.x_1*2), 27), 3)*7)) + floormod(((threadIdx.x_1*6) + 1), 9)) - 8)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*6) + 2)] = @tir.if_then_else(((((3 <= floormod((threadIdx.x_1*2), 27)) && (floormod(((threadIdx.x_1*6) + 2), 81) < 72)) && (1 <= floormod(((threadIdx.x_1*6) + 2), 9))) && (floormod(((threadIdx.x_1*6) + 2), 9) < 8)), data[((((cse_var_2 + (floordiv((threadIdx.x_1*2), 27)*49)) + (floordiv(floormod((threadIdx.x_1*2), 27), 3)*7)) + floormod(((threadIdx.x_1*6) + 2), 9)) - 8)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*6) + 3)] = @tir.if_then_else(((((3 <= floormod(((threadIdx.x_1*2) + 1), 27)) && (floormod(((threadIdx.x_1*6) + 3), 81) < 72)) && (1 <= floormod(((threadIdx.x_1*6) + 3), 9))) && (floormod(((threadIdx.x_1*6) + 3), 9) < 8)), data[((((cse_var_2 + (floordiv(((threadIdx.x_1*2) + 1), 27)*49)) + (floordiv(floormod(((threadIdx.x_1*2) + 1), 27), 3)*7)) + floormod(((threadIdx.x_1*6) + 3), 9)) - 8)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*6) + 4)] = @tir.if_then_else(((((3 <= floormod(((threadIdx.x_1*2) + 1), 27)) && (floormod(((threadIdx.x_1*6) + 4), 81) < 72)) && (1 <= floormod(((threadIdx.x_1*6) + 4), 9))) && (floormod(((threadIdx.x_1*6) + 4), 9) < 8)), data[((((cse_var_2 + (floordiv(((threadIdx.x_1*2) + 1), 27)*49)) + (floordiv(floormod(((threadIdx.x_1*2) + 1), 27), 3)*7)) + floormod(((threadIdx.x_1*6) + 4), 9)) - 8)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*6) + 5)] = @tir.if_then_else(((((3 <= floormod(((threadIdx.x_1*2) + 1), 27)) && (floormod(((threadIdx.x_1*6) + 5), 81) < 72)) && (1 <= floormod(((threadIdx.x_1*6) + 5), 9))) && (floormod(((threadIdx.x_1*6) + 5), 9) < 8)), data[((((cse_var_2 + (floordiv(((threadIdx.x_1*2) + 1), 27)*49)) + (floordiv(floormod(((threadIdx.x_1*2) + 1), 27), 3)*7)) + floormod(((threadIdx.x_1*6) + 5), 9)) - 8)], 0f32, dtype=float32)
             }
-            attr [IterVar(threadIdx.x_2: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            kernel.shared[threadIdx.x_2] = (float32*)kernel_2[((((blockIdx.x*73728) + (floordiv(threadIdx.x_2, 72)*4608)) + cse_var_1) + floormod(threadIdx.x_2, 72))]
-            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            kernel.shared[(threadIdx.x_2 + 98)] = (float32*)kernel_2[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 2) + 49), 36)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 26), 72))]
-            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            kernel.shared[(threadIdx.x_2 + 196)] = (float32*)kernel_2[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 2) + 98), 36)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 52), 72))]
-            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            kernel.shared[(threadIdx.x_2 + 294)] = (float32*)kernel_2[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 2) + 147), 36)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 6), 72))]
-            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            kernel.shared[(threadIdx.x_2 + 392)] = (float32*)kernel_2[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 2) + 196), 36)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 32), 72))]
-            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            kernel.shared[(threadIdx.x_2 + 490)] = (float32*)kernel_2[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 2) + 245), 36)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 58), 72))]
-            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            kernel.shared[(threadIdx.x_2 + 588)] = (float32*)kernel_2[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 2) + 294), 36)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 12), 72))]
-            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            kernel.shared[(threadIdx.x_2 + 686)] = (float32*)kernel_2[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 2) + 343), 36)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 38), 72))]
-            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            kernel.shared[(threadIdx.x_2 + 784)] = (float32*)kernel_2[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 2) + 392), 36)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 64), 72))]
-            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            kernel.shared[(threadIdx.x_2 + 882)] = (float32*)kernel_2[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 2) + 441), 36)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 18), 72))]
-            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            kernel.shared[(threadIdx.x_2 + 980)] = (float32*)kernel_2[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 2) + 490), 36)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 44), 72))]
-            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
-            if @tir.likely((threadIdx.x_2 < 74), dtype=bool) {
-              kernel.shared[(threadIdx.x_2 + 1078)] = (float32*)kernel_2[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 2) + 539), 36)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 70), 72))]
-            }
-            for (rc.outer.inner: int32, 0, 2) {
-              for (ry.outer.inner: int32, 0, 3) {
-                for (ff.outer.inner: int32, 0, 2) {
-                  let cse_var_6: int32 = (ff.outer.inner*4)
-                  let cse_var_5: int32 = (cse_var_6 + 1)
-                  let cse_var_4: int32 = (cse_var_6 + 2)
-                  let cse_var_3: int32 = (cse_var_6 + 3)
-                   {
-                    conv2d_nchw[cse_var_6] = ((float32*)conv2d_nchw[cse_var_6] + ((float32*)pad_temp.shared[((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7))]*(float32*)kernel.shared[((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3))]))
-                    conv2d_nchw[cse_var_5] = ((float32*)conv2d_nchw[cse_var_5] + ((float32*)pad_temp.shared[((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7))]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 72)]))
-                    conv2d_nchw[cse_var_4] = ((float32*)conv2d_nchw[cse_var_4] + ((float32*)pad_temp.shared[((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7))]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 144)]))
-                    conv2d_nchw[cse_var_3] = ((float32*)conv2d_nchw[cse_var_3] + ((float32*)pad_temp.shared[((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7))]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 216)]))
-                    conv2d_nchw[cse_var_6] = ((float32*)conv2d_nchw[cse_var_6] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 1)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 1)]))
-                    conv2d_nchw[cse_var_5] = ((float32*)conv2d_nchw[cse_var_5] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 1)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 73)]))
-                    conv2d_nchw[cse_var_4] = ((float32*)conv2d_nchw[cse_var_4] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 1)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 145)]))
-                    conv2d_nchw[cse_var_3] = ((float32*)conv2d_nchw[cse_var_3] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 1)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 217)]))
-                    conv2d_nchw[cse_var_6] = ((float32*)conv2d_nchw[cse_var_6] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 2)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 2)]))
-                    conv2d_nchw[cse_var_5] = ((float32*)conv2d_nchw[cse_var_5] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 2)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 74)]))
-                    conv2d_nchw[cse_var_4] = ((float32*)conv2d_nchw[cse_var_4] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 2)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 146)]))
-                    conv2d_nchw[cse_var_3] = ((float32*)conv2d_nchw[cse_var_3] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 2)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 218)]))
-                    conv2d_nchw[cse_var_6] = ((float32*)conv2d_nchw[cse_var_6] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 81)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 9)]))
-                    conv2d_nchw[cse_var_5] = ((float32*)conv2d_nchw[cse_var_5] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 81)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 81)]))
-                    conv2d_nchw[cse_var_4] = ((float32*)conv2d_nchw[cse_var_4] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 81)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 153)]))
-                    conv2d_nchw[cse_var_3] = ((float32*)conv2d_nchw[cse_var_3] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 81)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 225)]))
-                    conv2d_nchw[cse_var_6] = ((float32*)conv2d_nchw[cse_var_6] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 82)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 10)]))
-                    conv2d_nchw[cse_var_5] = ((float32*)conv2d_nchw[cse_var_5] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 82)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 82)]))
-                    conv2d_nchw[cse_var_4] = ((float32*)conv2d_nchw[cse_var_4] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 82)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 154)]))
-                    conv2d_nchw[cse_var_3] = ((float32*)conv2d_nchw[cse_var_3] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 82)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 226)]))
-                    conv2d_nchw[cse_var_6] = ((float32*)conv2d_nchw[cse_var_6] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 83)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 11)]))
-                    conv2d_nchw[cse_var_5] = ((float32*)conv2d_nchw[cse_var_5] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 83)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 83)]))
-                    conv2d_nchw[cse_var_4] = ((float32*)conv2d_nchw[cse_var_4] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 83)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 155)]))
-                    conv2d_nchw[cse_var_3] = ((float32*)conv2d_nchw[cse_var_3] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 83)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 227)]))
-                    conv2d_nchw[cse_var_6] = ((float32*)conv2d_nchw[cse_var_6] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 162)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 18)]))
-                    conv2d_nchw[cse_var_5] = ((float32*)conv2d_nchw[cse_var_5] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 162)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 90)]))
-                    conv2d_nchw[cse_var_4] = ((float32*)conv2d_nchw[cse_var_4] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 162)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 162)]))
-                    conv2d_nchw[cse_var_3] = ((float32*)conv2d_nchw[cse_var_3] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 162)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 234)]))
-                    conv2d_nchw[cse_var_6] = ((float32*)conv2d_nchw[cse_var_6] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 163)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 19)]))
-                    conv2d_nchw[cse_var_5] = ((float32*)conv2d_nchw[cse_var_5] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 163)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 91)]))
-                    conv2d_nchw[cse_var_4] = ((float32*)conv2d_nchw[cse_var_4] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 163)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 163)]))
-                    conv2d_nchw[cse_var_3] = ((float32*)conv2d_nchw[cse_var_3] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 163)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 235)]))
-                    conv2d_nchw[cse_var_6] = ((float32*)conv2d_nchw[cse_var_6] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 164)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 20)]))
-                    conv2d_nchw[cse_var_5] = ((float32*)conv2d_nchw[cse_var_5] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 164)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 92)]))
-                    conv2d_nchw[cse_var_4] = ((float32*)conv2d_nchw[cse_var_4] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 164)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 164)]))
-                    conv2d_nchw[cse_var_3] = ((float32*)conv2d_nchw[cse_var_3] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 164)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 236)]))
-                    conv2d_nchw[cse_var_6] = ((float32*)conv2d_nchw[cse_var_6] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 243)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 27)]))
-                    conv2d_nchw[cse_var_5] = ((float32*)conv2d_nchw[cse_var_5] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 243)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 99)]))
-                    conv2d_nchw[cse_var_4] = ((float32*)conv2d_nchw[cse_var_4] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 243)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 171)]))
-                    conv2d_nchw[cse_var_3] = ((float32*)conv2d_nchw[cse_var_3] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 243)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 243)]))
-                    conv2d_nchw[cse_var_6] = ((float32*)conv2d_nchw[cse_var_6] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 244)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 28)]))
-                    conv2d_nchw[cse_var_5] = ((float32*)conv2d_nchw[cse_var_5] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 244)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 100)]))
-                    conv2d_nchw[cse_var_4] = ((float32*)conv2d_nchw[cse_var_4] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 244)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 172)]))
-                    conv2d_nchw[cse_var_3] = ((float32*)conv2d_nchw[cse_var_3] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 244)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 244)]))
-                    conv2d_nchw[cse_var_6] = ((float32*)conv2d_nchw[cse_var_6] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 245)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 29)]))
-                    conv2d_nchw[cse_var_5] = ((float32*)conv2d_nchw[cse_var_5] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 245)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 101)]))
-                    conv2d_nchw[cse_var_4] = ((float32*)conv2d_nchw[cse_var_4] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 245)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 173)]))
-                    conv2d_nchw[cse_var_3] = ((float32*)conv2d_nchw[cse_var_3] + ((float32*)pad_temp.shared[(((((rc.outer.inner*324) + (floordiv(floormod(threadIdx.x, 49), 7)*9)) + (ry.outer.inner*9)) + floormod(threadIdx.x, 7)) + 245)]*(float32*)kernel.shared[(((((floordiv(threadIdx.x, 49)*576) + (ff.outer.inner*288)) + (rc.outer.inner*36)) + (ry.outer.inner*3)) + 245)]))
-                  }
-                }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112 {
+              if @tir.likely((threadIdx.x_1 < 104), dtype=bool) {
+                pad_temp.shared_1[((threadIdx.x_1*6) + 672)] = @tir.if_then_else(((((3 <= floormod(((threadIdx.x_1*2) + 224), 27)) && (floormod(((threadIdx.x_1*6) + 24), 81) < 72)) && (1 <= floormod(((threadIdx.x_1*6) + 6), 9))) && (floormod(((threadIdx.x_1*6) + 6), 9) < 8)), data[((((cse_var_2 + (floordiv(((threadIdx.x_1*2) + 224), 27)*49)) + (floordiv(floormod(((threadIdx.x_1*2) + 224), 27), 3)*7)) + floormod(((threadIdx.x_1*6) + 6), 9)) - 8)], 0f32, dtype=float32)
+              }
+              if @tir.likely((threadIdx.x_1 < 104), dtype=bool) {
+                pad_temp.shared_1[((threadIdx.x_1*6) + 673)] = @tir.if_then_else(((((3 <= floormod(((threadIdx.x_1*2) + 224), 27)) && (floormod(((threadIdx.x_1*6) + 25), 81) < 72)) && (1 <= floormod(((threadIdx.x_1*6) + 7), 9))) && (floormod(((threadIdx.x_1*6) + 7), 9) < 8)), data[((((cse_var_2 + (floordiv(((threadIdx.x_1*2) + 224), 27)*49)) + (floordiv(floormod(((threadIdx.x_1*2) + 224), 27), 3)*7)) + floormod(((threadIdx.x_1*6) + 7), 9)) - 8)], 0f32, dtype=float32)
+              }
+              if @tir.likely((threadIdx.x_1 < 104), dtype=bool) {
+                pad_temp.shared_1[((threadIdx.x_1*6) + 674)] = @tir.if_then_else(((((3 <= floormod(((threadIdx.x_1*2) + 224), 27)) && (floormod(((threadIdx.x_1*6) + 26), 81) < 72)) && (1 <= floormod(((threadIdx.x_1*6) + 8), 9))) && (floormod(((threadIdx.x_1*6) + 8), 9) < 8)), data[((((cse_var_2 + (floordiv(((threadIdx.x_1*2) + 224), 27)*49)) + (floordiv(floormod(((threadIdx.x_1*2) + 224), 27), 3)*7)) + floormod(((threadIdx.x_1*6) + 8), 9)) - 8)], 0f32, dtype=float32)
+              }
+              if @tir.likely((threadIdx.x_1 < 104), dtype=bool) {
+                pad_temp.shared_1[((threadIdx.x_1*6) + 675)] = @tir.if_then_else(((((1 <= floormod((floordiv((threadIdx.x_1*2), 3) + 3), 9)) && (floormod(((threadIdx.x_1*6) + 27), 81) < 72)) && (1 <= floormod((threadIdx.x_1*6), 9))) && (floormod((threadIdx.x_1*6), 9) < 8)), data[((((cse_var_2 + (floordiv(((threadIdx.x_1*2) + 225), 27)*49)) + (floormod((floordiv((threadIdx.x_1*2), 3) + 3), 9)*7)) + floormod((threadIdx.x_1*6), 9)) - 8)], 0f32, dtype=float32)
+              }
+              if @tir.likely((threadIdx.x_1 < 104), dtype=bool) {
+                pad_temp.shared_1[((threadIdx.x_1*6) + 676)] = @tir.if_then_else(((((1 <= floormod((floordiv((threadIdx.x_1*2), 3) + 3), 9)) && (floormod(((threadIdx.x_1*6) + 28), 81) < 72)) && (1 <= floormod(((threadIdx.x_1*6) + 1), 9))) && (floormod(((threadIdx.x_1*6) + 1), 9) < 8)), data[((((cse_var_2 + (floordiv(((threadIdx.x_1*2) + 225), 27)*49)) + (floormod((floordiv((threadIdx.x_1*2), 3) + 3), 9)*7)) + floormod(((threadIdx.x_1*6) + 1), 9)) - 8)], 0f32, dtype=float32)
+              }
+              if @tir.likely((threadIdx.x_1 < 104), dtype=bool) {
+                pad_temp.shared_1[((threadIdx.x_1*6) + 677)] = @tir.if_then_else(((((1 <= floormod((floordiv((threadIdx.x_1*2), 3) + 3), 9)) && (floormod(((threadIdx.x_1*6) + 29), 81) < 72)) && (1 <= floormod(((threadIdx.x_1*6) + 2), 9))) && (floormod(((threadIdx.x_1*6) + 2), 9) < 8)), data[((((cse_var_2 + (floordiv(((threadIdx.x_1*2) + 225), 27)*49)) + (floormod((floordiv((threadIdx.x_1*2), 3) + 3), 9)*7)) + floormod(((threadIdx.x_1*6) + 2), 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, [2304], [], scope="shared")[threadIdx.x_2] = kernel[(((blockIdx.x*73728) + cse_var_1) + threadIdx.x_2)]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 112)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 7), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 112), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 224)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 14), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 80), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 336)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 21), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 48), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 448)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 28), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 16), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 560)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 35), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 128), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 672)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 42), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 96), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 784)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 49), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 64), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 896)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 56), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 32), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 1008)] = kernel[((((blockIdx.x*73728) + cse_var_1) + threadIdx.x_2) + 32256)]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 1120)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 70), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 112), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 1232)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 77), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 80), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 1344)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 84), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 48), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 1456)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 91), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 16), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 1568)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 98), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 128), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 1680)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 105), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 96), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 1792)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 112), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 64), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 1904)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 119), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 32), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 2016)] = kernel[((((blockIdx.x*73728) + cse_var_1) + threadIdx.x_2) + 64512)]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            kernel.shared_1[(threadIdx.x_2 + 2128)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 133), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 112), 144))]
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 112;
+            if @tir.likely((threadIdx.x_2 < 64), dtype=bool) {
+              kernel.shared_1[(threadIdx.x_2 + 2240)] = kernel[((((blockIdx.x*73728) + (floordiv((floordiv(threadIdx.x_2, 16) + 140), 9)*4608)) + cse_var_1) + floormod((threadIdx.x_2 + 80), 144))]
+            }
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[floormod(threadIdx.x, 7)]*kernel.shared_1[(floordiv(threadIdx.x, 7)*144)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 81)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 9)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 162)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 18)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 243)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 27)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 324)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 36)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 405)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 45)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 486)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 54)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 567)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 63)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 9)]*kernel.shared_1[(floordiv(threadIdx.x, 7)*144)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 90)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 9)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 171)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 18)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 252)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 27)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 333)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 36)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 414)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 45)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 495)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 54)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 576)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 63)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 18)]*kernel.shared_1[(floordiv(threadIdx.x, 7)*144)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 99)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 9)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 180)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 18)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 261)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 27)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 342)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 36)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 423)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 45)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 504)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 54)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 585)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 63)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 27)]*kernel.shared_1[(floordiv(threadIdx.x, 7)*144)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 108)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 9)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 189)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 18)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 270)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 27)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 351)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 36)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 432)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 45)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 513)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 54)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 594)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 63)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 36)]*kernel.shared_1[(floordiv(threadIdx.x, 7)*144)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 117)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 9)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 198)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 18)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 279)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 27)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 360)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 36)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 441)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 45)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 522)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 54)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 603)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 63)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 45)]*kernel.shared_1[(floordiv(threadIdx.x, 7)*144)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 126)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 9)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 207)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 18)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 288)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 27)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 369)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 36)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 450)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 45)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 531)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 54)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 612)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 63)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 54)]*kernel.shared_1[(floordiv(threadIdx.x, 7)*144)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 135)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 9)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 216)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 18)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 297)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 27)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 378)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 36)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 459)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 45)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 540)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 54)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 621)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 63)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 1)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 82)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 10)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 163)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 19)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 244)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 28)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 325)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 37)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 406)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 46)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 487)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 55)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 568)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 64)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 10)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 1)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 91)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 10)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 172)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 19)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 253)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 28)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 334)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 37)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 415)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 46)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 496)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 55)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 577)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 64)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 19)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 1)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 100)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 10)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 181)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 19)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 262)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 28)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 343)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 37)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 424)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 46)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 505)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 55)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 586)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 64)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 28)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 1)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 109)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 10)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 190)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 19)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 271)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 28)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 352)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 37)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 433)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 46)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 514)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 55)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 595)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 64)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 37)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 1)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 118)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 10)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 199)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 19)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 280)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 28)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 361)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 37)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 442)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 46)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 523)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 55)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 604)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 64)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 46)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 1)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 127)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 10)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 208)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 19)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 289)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 28)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 370)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 37)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 451)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 46)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 532)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 55)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 613)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 64)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 55)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 1)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 136)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 10)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 217)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 19)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 298)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 28)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 379)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 37)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 460)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 46)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 541)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 55)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 622)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 64)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 2)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 2)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 83)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 11)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 164)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 20)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 245)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 29)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 326)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 38)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 407)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 47)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 488)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 56)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 569)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 65)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 11)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 2)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 92)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 11)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 173)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 20)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 254)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 29)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 335)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 38)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 416)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 47)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 497)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 56)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 578)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 65)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 20)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 2)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 101)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 11)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 182)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 20)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 263)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 29)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 344)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 38)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 425)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 47)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 506)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 56)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 587)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 65)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 29)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 2)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 110)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 11)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 191)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 20)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 272)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 29)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 353)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 38)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 434)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 47)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 515)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 56)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 596)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 65)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 38)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 2)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 119)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 11)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 200)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 20)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 281)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 29)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 362)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 38)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 443)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 47)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 524)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 56)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 605)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 65)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 47)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 2)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 128)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 11)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 209)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 20)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 290)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 29)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 371)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 38)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 452)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 47)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 533)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 56)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 614)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 65)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 56)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 2)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 137)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 11)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 218)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 20)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 299)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 29)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 380)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 38)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 461)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 47)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 542)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 56)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 623)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 65)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 9)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 3)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 90)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 12)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 171)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 21)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 252)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 30)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 333)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 39)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 414)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 48)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 495)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 57)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 576)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 66)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 18)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 3)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 99)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 12)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 180)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 21)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 261)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 30)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 342)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 39)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 423)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 48)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 504)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 57)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 585)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 66)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 27)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 3)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 108)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 12)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 189)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 21)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 270)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 30)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 351)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 39)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 432)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 48)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 513)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 57)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 594)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 66)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 36)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 3)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 117)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 12)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 198)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 21)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 279)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 30)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 360)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 39)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 441)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 48)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 522)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 57)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 603)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 66)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 45)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 3)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 126)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 12)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 207)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 21)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 288)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 30)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 369)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 39)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 450)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 48)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 531)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 57)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 612)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 66)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 54)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 3)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 135)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 12)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 216)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 21)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 297)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 30)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 378)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 39)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 459)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 48)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 540)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 57)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 621)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 66)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 63)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 3)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 144)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 12)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 225)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 21)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 306)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 30)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 387)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 39)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 468)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 48)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 549)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 57)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 630)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 66)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 10)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 4)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 91)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 13)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 172)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 22)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 253)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 31)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 334)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 40)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 415)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 49)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 496)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 58)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 577)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 67)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 19)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 4)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 100)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 13)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 181)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 22)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 262)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 31)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 343)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 40)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 424)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 49)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 505)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 58)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 586)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 67)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 28)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 4)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 109)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 13)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 190)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 22)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 271)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 31)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 352)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 40)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 433)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 49)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 514)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 58)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 595)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 67)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 37)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 4)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 118)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 13)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 199)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 22)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 280)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 31)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 361)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 40)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 442)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 49)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 523)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 58)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 604)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 67)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 46)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 4)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 127)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 13)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 208)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 22)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 289)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 31)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 370)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 40)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 451)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 49)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 532)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 58)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 613)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 67)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 55)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 4)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 136)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 13)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 217)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 22)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 298)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 31)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 379)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 40)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 460)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 49)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 541)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 58)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 622)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 67)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 64)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 4)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 145)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 13)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 226)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 22)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 307)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 31)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 388)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 40)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 469)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 49)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 550)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 58)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 631)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 67)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 11)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 5)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 92)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 14)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 173)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 23)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 254)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 32)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 335)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 41)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 416)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 50)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 497)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 59)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 578)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 68)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 20)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 5)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 101)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 14)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 182)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 23)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 263)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 32)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 344)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 41)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 425)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 50)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 506)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 59)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 587)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 68)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 29)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 5)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 110)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 14)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 191)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 23)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 272)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 32)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 353)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 41)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 434)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 50)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 515)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 59)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 596)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 68)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 38)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 5)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 119)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 14)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 200)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 23)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 281)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 32)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 362)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 41)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 443)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 50)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 524)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 59)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 605)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 68)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 47)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 5)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 128)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 14)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 209)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 23)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 290)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 32)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 371)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 41)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 452)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 50)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 533)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 59)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 614)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 68)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 56)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 5)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 137)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 14)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 218)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 23)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 299)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 32)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 380)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 41)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 461)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 50)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 542)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 59)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 623)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 68)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 65)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 5)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 146)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 14)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 227)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 23)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 308)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 32)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 389)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 41)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 470)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 50)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 551)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 59)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 632)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 68)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 18)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 6)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 99)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 15)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 180)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 24)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 261)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 33)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 342)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 42)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 423)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 51)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 504)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 60)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 585)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 69)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 27)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 6)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 108)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 15)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 189)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 24)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 270)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 33)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 351)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 42)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 432)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 51)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 513)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 60)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 594)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 69)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 36)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 6)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 117)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 15)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 198)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 24)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 279)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 33)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 360)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 42)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 441)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 51)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 522)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 60)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 603)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 69)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 45)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 6)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 126)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 15)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 207)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 24)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 288)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 33)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 369)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 42)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 450)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 51)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 531)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 60)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 612)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 69)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 54)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 6)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 135)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 15)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 216)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 24)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 297)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 33)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 378)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 42)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 459)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 51)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 540)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 60)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 621)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 69)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 63)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 6)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 144)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 15)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 225)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 24)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 306)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 33)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 387)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 42)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 468)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 51)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 549)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 60)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 630)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 69)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 72)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 6)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 153)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 15)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 234)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 24)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 315)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 33)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 396)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 42)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 477)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 51)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 558)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 60)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 639)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 69)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 19)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 7)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 100)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 16)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 181)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 25)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 262)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 34)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 343)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 43)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 424)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 52)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 505)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 61)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 586)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 70)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 28)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 7)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 109)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 16)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 190)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 25)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 271)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 34)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 352)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 43)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 433)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 52)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 514)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 61)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 595)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 70)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 37)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 7)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 118)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 16)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 199)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 25)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 280)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 34)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 361)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 43)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 442)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 52)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 523)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 61)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 604)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 70)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 46)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 7)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 127)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 16)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 208)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 25)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 289)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 34)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 370)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 43)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 451)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 52)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 532)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 61)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 613)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 70)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 55)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 7)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 136)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 16)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 217)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 25)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 298)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 34)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 379)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 43)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 460)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 52)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 541)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 61)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 622)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 70)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 64)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 7)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 145)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 16)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 226)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 25)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 307)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 34)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 388)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 43)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 469)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 52)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 550)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 61)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 631)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 70)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 73)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 7)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 154)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 16)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 235)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 25)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 316)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 34)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 397)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 43)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 478)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 52)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 559)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 61)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 640)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 70)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 20)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 8)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 101)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 17)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 182)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 26)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 263)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 35)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 344)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 44)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 425)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 53)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 506)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 62)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 587)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 71)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 29)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 8)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 110)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 17)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 191)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 26)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 272)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 35)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 353)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 44)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 434)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 53)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 515)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 62)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 596)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 71)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 38)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 8)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 119)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 17)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 200)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 26)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 281)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 35)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 362)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 44)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 443)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 53)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 524)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 62)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 605)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 71)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 47)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 8)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 128)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 17)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 209)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 26)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 290)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 35)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 371)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 44)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 452)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 53)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 533)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 62)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 614)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 71)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 56)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 8)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 137)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 17)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 218)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 26)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 299)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 35)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 380)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 44)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 461)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 53)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 542)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 62)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 623)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 71)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 65)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 8)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 146)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 17)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 227)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 26)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 308)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 35)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 389)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 44)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 470)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 53)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 551)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 62)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 632)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 71)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 74)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 8)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 155)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 17)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 236)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 26)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 317)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 35)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 398)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 44)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 479)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 53)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 560)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 62)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 641)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 71)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 648)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 72)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 729)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 81)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 810)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 90)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 891)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 99)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 972)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 108)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1053)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 117)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1134)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 126)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1215)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 135)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 657)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 72)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 738)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 81)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 819)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 90)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 900)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 99)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 981)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 108)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1062)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 117)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1143)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 126)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1224)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 135)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 666)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 72)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 747)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 81)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 828)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 90)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 909)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 99)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 990)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 108)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1071)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 117)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1152)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 126)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1233)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 135)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 675)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 72)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 756)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 81)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 837)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 90)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 918)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 99)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 999)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 108)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1080)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 117)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1161)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 126)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1242)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 135)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 684)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 72)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 765)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 81)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 846)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 90)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 927)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 99)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1008)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 108)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1089)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 117)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1170)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 126)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1251)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 135)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 693)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 72)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 774)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 81)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 855)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 90)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 936)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 99)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1017)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 108)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1098)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 117)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1179)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 126)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1260)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 135)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 702)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 72)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 783)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 81)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 864)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 90)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 945)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 99)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1026)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 108)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1107)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 117)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1188)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 126)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1269)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 135)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 649)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 73)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 730)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 82)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 811)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 91)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 892)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 100)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 973)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 109)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1054)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 118)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1135)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 127)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1216)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 136)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 658)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 73)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 739)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 82)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 820)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 91)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 901)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 100)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 982)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 109)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1063)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 118)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1144)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 127)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1225)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 136)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 667)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 73)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 748)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 82)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 829)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 91)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 910)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 100)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 991)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 109)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1072)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 118)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1153)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 127)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1234)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 136)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 676)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 73)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 757)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 82)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 838)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 91)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 919)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 100)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1000)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 109)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1081)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 118)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1162)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 127)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1243)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 136)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 685)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 73)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 766)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 82)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 847)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 91)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 928)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 100)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1009)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 109)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1090)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 118)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1171)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 127)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1252)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 136)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 694)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 73)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 775)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 82)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 856)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 91)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 937)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 100)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1018)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 109)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1099)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 118)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1180)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 127)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1261)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 136)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 703)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 73)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 784)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 82)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 865)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 91)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 946)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 100)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1027)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 109)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1108)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 118)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1189)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 127)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1270)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 136)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 650)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 74)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 731)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 83)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 812)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 92)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 893)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 101)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 974)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 110)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1055)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 119)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1136)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 128)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1217)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 137)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 659)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 74)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 740)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 83)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 821)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 92)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 902)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 101)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 983)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 110)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1064)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 119)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1145)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 128)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1226)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 137)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 668)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 74)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 749)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 83)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 830)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 92)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 911)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 101)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 992)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 110)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1073)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 119)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1154)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 128)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1235)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 137)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 677)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 74)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 758)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 83)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 839)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 92)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 920)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 101)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1001)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 110)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1082)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 119)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1163)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 128)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1244)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 137)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 686)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 74)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 767)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 83)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 848)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 92)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 929)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 101)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1010)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 110)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1091)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 119)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1172)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 128)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1253)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 137)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 695)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 74)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 776)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 83)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 857)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 92)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 938)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 101)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1019)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 110)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1100)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 119)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1181)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 128)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1262)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 137)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 704)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 74)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 785)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 83)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 866)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 92)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 947)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 101)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1028)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 110)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1109)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 119)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1190)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 128)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1271)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 137)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 657)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 75)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 738)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 84)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 819)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 93)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 900)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 102)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 981)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 111)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1062)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 120)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1143)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 129)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1224)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 138)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 666)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 75)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 747)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 84)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 828)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 93)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 909)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 102)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 990)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 111)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1071)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 120)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1152)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 129)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1233)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 138)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 675)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 75)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 756)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 84)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 837)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 93)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 918)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 102)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 999)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 111)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1080)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 120)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1161)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 129)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1242)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 138)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 684)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 75)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 765)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 84)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 846)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 93)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 927)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 102)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1008)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 111)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1089)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 120)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1170)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 129)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1251)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 138)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 693)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 75)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 774)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 84)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 855)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 93)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 936)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 102)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1017)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 111)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1098)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 120)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1179)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 129)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1260)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 138)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 702)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 75)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 783)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 84)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 864)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 93)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 945)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 102)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1026)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 111)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1107)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 120)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1188)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 129)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1269)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 138)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 711)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 75)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 792)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 84)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 873)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 93)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 954)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 102)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1035)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 111)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1116)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 120)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1197)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 129)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1278)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 138)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 658)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 76)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 739)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 85)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 820)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 94)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 901)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 103)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 982)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 112)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1063)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 121)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1144)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 130)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1225)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 139)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 667)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 76)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 748)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 85)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 829)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 94)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 910)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 103)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 991)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 112)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1072)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 121)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1153)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 130)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1234)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 139)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 676)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 76)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 757)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 85)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 838)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 94)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 919)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 103)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1000)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 112)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1081)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 121)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1162)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 130)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1243)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 139)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 685)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 76)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 766)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 85)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 847)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 94)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 928)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 103)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1009)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 112)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1090)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 121)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1171)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 130)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1252)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 139)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 694)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 76)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 775)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 85)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 856)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 94)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 937)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 103)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1018)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 112)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1099)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 121)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1180)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 130)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1261)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 139)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 703)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 76)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 784)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 85)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 865)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 94)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 946)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 103)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1027)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 112)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1108)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 121)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1189)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 130)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1270)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 139)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 712)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 76)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 793)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 85)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 874)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 94)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 955)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 103)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1036)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 112)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1117)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 121)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1198)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 130)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1279)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 139)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 659)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 77)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 740)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 86)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 821)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 95)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 902)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 104)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 983)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 113)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1064)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 122)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1145)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 131)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1226)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 140)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 668)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 77)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 749)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 86)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 830)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 95)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 911)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 104)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 992)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 113)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1073)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 122)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1154)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 131)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1235)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 140)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 677)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 77)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 758)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 86)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 839)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 95)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 920)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 104)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1001)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 113)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1082)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 122)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1163)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 131)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1244)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 140)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 686)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 77)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 767)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 86)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 848)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 95)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 929)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 104)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1010)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 113)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1091)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 122)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1172)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 131)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1253)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 140)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 695)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 77)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 776)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 86)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 857)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 95)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 938)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 104)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1019)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 113)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1100)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 122)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1181)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 131)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1262)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 140)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 704)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 77)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 785)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 86)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 866)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 95)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 947)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 104)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1028)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 113)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1109)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 122)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1190)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 131)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1271)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 140)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 713)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 77)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 794)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 86)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 875)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 95)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 956)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 104)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1037)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 113)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1118)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 122)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1199)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 131)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1280)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 140)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 666)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 78)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 747)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 87)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 828)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 96)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 909)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 105)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 990)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 114)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1071)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 123)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1152)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 132)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1233)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 141)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 675)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 78)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 756)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 87)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 837)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 96)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 918)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 105)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 999)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 114)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1080)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 123)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1161)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 132)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1242)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 141)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 684)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 78)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 765)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 87)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 846)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 96)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 927)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 105)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1008)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 114)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1089)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 123)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1170)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 132)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1251)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 141)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 693)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 78)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 774)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 87)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 855)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 96)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 936)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 105)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1017)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 114)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1098)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 123)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1179)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 132)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1260)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 141)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 702)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 78)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 783)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 87)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 864)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 96)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 945)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 105)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1026)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 114)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1107)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 123)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1188)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 132)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1269)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 141)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 711)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 78)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 792)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 87)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 873)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 96)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 954)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 105)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1035)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 114)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1116)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 123)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1197)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 132)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1278)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 141)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 720)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 78)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 801)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 87)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 882)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 96)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 963)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 105)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1044)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 114)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1125)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 123)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1206)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 132)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1287)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 141)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 667)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 79)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 748)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 88)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 829)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 97)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 910)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 106)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 991)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 115)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1072)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 124)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1153)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 133)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1234)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 142)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 676)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 79)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 757)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 88)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 838)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 97)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 919)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 106)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1000)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 115)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1081)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 124)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1162)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 133)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1243)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 142)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 685)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 79)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 766)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 88)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 847)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 97)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 928)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 106)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1009)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 115)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1090)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 124)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1171)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 133)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1252)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 142)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 694)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 79)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 775)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 88)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 856)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 97)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 937)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 106)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1018)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 115)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1099)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 124)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1180)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 133)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1261)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 142)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 703)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 79)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 784)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 88)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 865)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 97)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 946)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 106)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1027)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 115)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1108)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 124)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1189)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 133)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1270)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 142)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 712)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 79)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 793)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 88)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 874)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 97)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 955)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 106)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1036)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 115)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1117)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 124)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1198)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 133)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1279)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 142)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 721)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 79)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 802)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 88)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 883)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 97)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 964)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 106)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1045)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 115)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1126)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 124)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1207)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 133)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1288)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 142)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 668)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 80)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 749)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 89)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 830)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 98)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 911)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 107)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 992)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 116)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1073)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 125)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1154)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 134)]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1235)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 143)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 677)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 80)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 758)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 89)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 839)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 98)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 920)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 107)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1001)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 116)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1082)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 125)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1163)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 134)]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1244)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 143)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 686)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 80)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 767)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 89)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 848)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 98)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 929)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 107)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1010)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 116)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1091)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 125)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1172)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 134)]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1253)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 143)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 695)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 80)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 776)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 89)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 857)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 98)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 938)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 107)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1019)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 116)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1100)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 125)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1181)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 134)]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1262)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 143)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 704)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 80)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 785)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 89)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 866)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 98)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 947)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 107)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1028)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 116)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1109)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 125)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1190)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 134)]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1271)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 143)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 713)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 80)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 794)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 89)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 875)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 98)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 956)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 107)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1037)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 116)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1118)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 125)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1199)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 134)]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1280)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 143)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 722)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 80)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 803)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 89)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 884)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 98)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 965)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 107)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1046)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 116)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1127)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 125)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1208)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 134)]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(floormod(threadIdx.x, 7) + 1289)]*kernel.shared_1[((floordiv(threadIdx.x, 7)*144) + 143)]))
           }
         }
-        for (i1.inner: int32, 0, 8) {
-          compute_2[((((blockIdx.x*784) + (floordiv(threadIdx.x, 49)*392)) + (i1.inner*49)) + floormod(threadIdx.x, 49))] = max(((float32*)conv2d_nchw[i1.inner] + (float32*)bias_2[(((blockIdx.x*16) + (floordiv(threadIdx.x, 49)*8)) + i1.inner)]), 0f32)
+        for (i2.inner: int32, 0, 7) {
+          compute[((((blockIdx.x*784) + (floordiv(threadIdx.x, 7)*49)) + (i2.inner*7)) + floormod(threadIdx.x, 7))] = max((conv2d_nchw_1[i2.inner] + bias[((blockIdx.x*16) + floordiv(threadIdx.x, 7))]), 0f32)
         }
       }
     }
@@ -396,7 +1373,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 0.231 ms
+    Execution time of this operator: 0.155 ms
 
 
 
@@ -440,33 +1417,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=4)
-    conv2d_nchw_ff_o_o_i, conv2d_nchw_ff_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_i, factor=2)
-    conv2d_nchw_ff_o_o_o_i, conv2d_nchw_ff_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_i, factor=2)
+    conv2d_nchw_ff_o_i, conv2d_nchw_ff_i = s[conv2d_nchw].split(conv2d_nchw_ff, factor=1)
+    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=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=4)
+    conv2d_nchw_rc_o_i, conv2d_nchw_rc_i = s[conv2d_nchw].split(conv2d_nchw_rc, factor=8)
     conv2d_nchw_rc_o_o, conv2d_nchw_rc_o_i = s[conv2d_nchw].split(conv2d_nchw_rc_o_i, factor=2)
     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=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)
+    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)
     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=8)
-    compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=2)
+    compute_i1_o_i, compute_i1_i = s[compute].split(compute_i1, factor=1)
+    compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=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)
@@ -489,14 +1466,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=98)
+    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)
+    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=6)
     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=98)
+    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", 64)
+    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, "unroll_explicit", True)
 
     CUDA source code:
@@ -514,101 +1491,1078 @@ 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__(98) default_function_kernel0(float* __restrict__ data, float* __restrict__ kernel, float* __restrict__ compute, float* __restrict__ bias) {
-      float conv2d_nchw[8];
-      __shared__ float pad_temp_shared[648];
-      __shared__ float kernel_shared[1152];
-      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;
-      for (int rc_outer_outer = 0; rc_outer_outer < 64; ++rc_outer_outer) {
+    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[7];
+      __shared__ float pad_temp_shared[1296];
+      __shared__ float kernel_shared[2304];
+      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;
+      for (int rc_outer_outer = 0; rc_outer_outer < 32; ++rc_outer_outer) {
         __syncthreads();
-        pad_temp_shared[(((int)threadIdx.x))] = (((((9 <= (((int)threadIdx.x) % 81)) && ((((int)threadIdx.x) % 81) < 72)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[((((((rc_outer_outer * 392) + ((((int)threadIdx.x) / 81) * 49)) + (((((int)threadIdx.x) % 81) / 9) * 7)) + (((int)threadIdx.x) % 9)) - 8))] : 0.000000e+00f);
-        pad_temp_shared[((((int)threadIdx.x) + 98))] = (((((9 <= ((((int)threadIdx.x) + 17) % 81)) && (((((int)threadIdx.x) + 17) % 81) < 72)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[((((((rc_outer_outer * 392) + (((((int)threadIdx.x) + 98) / 81) * 49)) + ((((((int)threadIdx.x) + 17) % 81) / 9) * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8))] : 0.000000e+00f);
-        pad_temp_shared[((((int)threadIdx.x) + 196))] = (((((9 <= ((((int)threadIdx.x) + 34) % 81)) && (((((int)threadIdx.x) + 34) % 81) < 72)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[((((((rc_outer_outer * 392) + (((((int)threadIdx.x) + 196) / 81) * 49)) + ((((((int)threadIdx.x) + 34) % 81) / 9) * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8))] : 0.000000e+00f);
-        pad_temp_shared[((((int)threadIdx.x) + 294))] = (((((9 <= ((((int)threadIdx.x) + 51) % 81)) && (((((int)threadIdx.x) + 51) % 81) < 72)) && (1 <= ((((int)threadIdx.x) + 6) % 9))) && (((((int)threadIdx.x) + 6) % 9) < 8)) ? data[((((((rc_outer_outer * 392) + (((((int)threadIdx.x) + 294) / 81) * 49)) + ((((((int)threadIdx.x) + 51) % 81) / 9) * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8))] : 0.000000e+00f);
-        pad_temp_shared[((((int)threadIdx.x) + 392))] = (((((9 <= ((((int)threadIdx.x) + 68) % 81)) && (((((int)threadIdx.x) + 68) % 81) < 72)) && (1 <= ((((int)threadIdx.x) + 5) % 9))) && (((((int)threadIdx.x) + 5) % 9) < 8)) ? data[((((((rc_outer_outer * 392) + (((((int)threadIdx.x) + 392) / 81) * 49)) + ((((((int)threadIdx.x) + 68) % 81) / 9) * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8))] : 0.000000e+00f);
-        pad_temp_shared[((((int)threadIdx.x) + 490))] = (((((9 <= ((((int)threadIdx.x) + 4) % 81)) && (((((int)threadIdx.x) + 4) % 81) < 72)) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[((((((rc_outer_outer * 392) + (((((int)threadIdx.x) + 490) / 81) * 49)) + ((((((int)threadIdx.x) + 4) % 81) / 9) * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8))] : 0.000000e+00f);
-        if (((int)threadIdx.x) < 60) {
-          pad_temp_shared[((((int)threadIdx.x) + 588))] = ((((((int)threadIdx.x) < 51) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[((((((rc_outer_outer * 392) + (((((int)threadIdx.x) + 588) / 81) * 49)) + ((((((int)threadIdx.x) + 21) % 81) / 9) * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8))] : 0.000000e+00f);
+        pad_temp_shared[(((int)threadIdx.x) * 6)] = (((((3 <= ((((int)threadIdx.x) * 2) % 27)) && (((((int)threadIdx.x) * 6) % 81) < 72)) && (1 <= ((((int)threadIdx.x) * 6) % 9))) && (((((int)threadIdx.x) * 6) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) * 2) / 27) * 49)) + ((((((int)threadIdx.x) * 2) % 27) / 3) * 7)) + ((((int)threadIdx.x) * 6) % 9)) - 8)] : 0.000000e+00f);
+        pad_temp_shared[((((int)threadIdx.x) * 6) + 1)] = (((((3 <= ((((int)threadIdx.x) * 2) % 27)) && ((((((int)threadIdx.x) * 6) + 1) % 81) < 72)) && (1 <= (((((int)threadIdx.x) * 6) + 1) % 9))) && ((((((int)threadIdx.x) * 6) + 1) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) * 2) / 27) * 49)) + ((((((int)threadIdx.x) * 2) % 27) / 3) * 7)) + (((((int)threadIdx.x) * 6) + 1) % 9)) - 8)] : 0.000000e+00f);
+        pad_temp_shared[((((int)threadIdx.x) * 6) + 2)] = (((((3 <= ((((int)threadIdx.x) * 2) % 27)) && ((((((int)threadIdx.x) * 6) + 2) % 81) < 72)) && (1 <= (((((int)threadIdx.x) * 6) + 2) % 9))) && ((((((int)threadIdx.x) * 6) + 2) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + (((((int)threadIdx.x) * 2) / 27) * 49)) + ((((((int)threadIdx.x) * 2) % 27) / 3) * 7)) + (((((int)threadIdx.x) * 6) + 2) % 9)) - 8)] : 0.000000e+00f);
+        pad_temp_shared[((((int)threadIdx.x) * 6) + 3)] = (((((3 <= (((((int)threadIdx.x) * 2) + 1) % 27)) && ((((((int)threadIdx.x) * 6) + 3) % 81) < 72)) && (1 <= (((((int)threadIdx.x) * 6) + 3) % 9))) && ((((((int)threadIdx.x) * 6) + 3) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + ((((((int)threadIdx.x) * 2) + 1) / 27) * 49)) + (((((((int)threadIdx.x) * 2) + 1) % 27) / 3) * 7)) + (((((int)threadIdx.x) * 6) + 3) % 9)) - 8)] : 0.000000e+00f);
+        pad_temp_shared[((((int)threadIdx.x) * 6) + 4)] = (((((3 <= (((((int)threadIdx.x) * 2) + 1) % 27)) && ((((((int)threadIdx.x) * 6) + 4) % 81) < 72)) && (1 <= (((((int)threadIdx.x) * 6) + 4) % 9))) && ((((((int)threadIdx.x) * 6) + 4) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + ((((((int)threadIdx.x) * 2) + 1) / 27) * 49)) + (((((((int)threadIdx.x) * 2) + 1) % 27) / 3) * 7)) + (((((int)threadIdx.x) * 6) + 4) % 9)) - 8)] : 0.000000e+00f);
+        pad_temp_shared[((((int)threadIdx.x) * 6) + 5)] = (((((3 <= (((((int)threadIdx.x) * 2) + 1) % 27)) && ((((((int)threadIdx.x) * 6) + 5) % 81) < 72)) && (1 <= (((((int)threadIdx.x) * 6) + 5) % 9))) && ((((((int)threadIdx.x) * 6) + 5) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + ((((((int)threadIdx.x) * 2) + 1) / 27) * 49)) + (((((((int)threadIdx.x) * 2) + 1) % 27) / 3) * 7)) + (((((int)threadIdx.x) * 6) + 5) % 9)) - 8)] : 0.000000e+00f);
+        if (((int)threadIdx.x) < 104) {
+          pad_temp_shared[((((int)threadIdx.x) * 6) + 672)] = (((((3 <= (((((int)threadIdx.x) * 2) + 8) % 27)) && ((((((int)threadIdx.x) * 6) + 24) % 81) < 72)) && (1 <= (((((int)threadIdx.x) * 6) + 6) % 9))) && ((((((int)threadIdx.x) * 6) + 6) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + ((((((int)threadIdx.x) * 2) + 224) / 27) * 49)) + (((((((int)threadIdx.x) * 2) + 8) % 27) / 3) * 7)) + (((((int)threadIdx.x) * 6) + 6) % 9)) - 8)] : 0.000000e+00f);
         }
-        kernel_shared[(((int)threadIdx.x))] = kernel[(((((((int)blockIdx.x) * 73728) + ((((int)threadIdx.x) / 72) * 4608)) + (rc_outer_outer * 72)) + (((int)threadIdx.x) % 72)))];
-        kernel_shared[((((int)threadIdx.x) + 98))] = kernel[(((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 98) / 72) * 4608)) + (rc_outer_outer * 72)) + ((((int)threadIdx.x) + 26) % 72)))];
-        kernel_shared[((((int)threadIdx.x) + 196))] = kernel[(((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 196) / 72) * 4608)) + (rc_outer_outer * 72)) + ((((int)threadIdx.x) + 52) % 72)))];
-        kernel_shared[((((int)threadIdx.x) + 294))] = kernel[(((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 294) / 72) * 4608)) + (rc_outer_outer * 72)) + ((((int)threadIdx.x) + 6) % 72)))];
-        kernel_shared[((((int)threadIdx.x) + 392))] = kernel[(((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 392) / 72) * 4608)) + (rc_outer_outer * 72)) + ((((int)threadIdx.x) + 32) % 72)))];
-        kernel_shared[((((int)threadIdx.x) + 490))] = kernel[(((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 490) / 72) * 4608)) + (rc_outer_outer * 72)) + ((((int)threadIdx.x) + 58) % 72)))];
-        kernel_shared[((((int)threadIdx.x) + 588))] = kernel[(((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 588) / 72) * 4608)) + (rc_outer_outer * 72)) + ((((int)threadIdx.x) + 12) % 72)))];
-        kernel_shared[((((int)threadIdx.x) + 686))] = kernel[(((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 686) / 72) * 4608)) + (rc_outer_outer * 72)) + ((((int)threadIdx.x) + 38) % 72)))];
-        kernel_shared[((((int)threadIdx.x) + 784))] = kernel[(((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 784) / 72) * 4608)) + (rc_outer_outer * 72)) + ((((int)threadIdx.x) + 64) % 72)))];
-        kernel_shared[((((int)threadIdx.x) + 882))] = kernel[(((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 882) / 72) * 4608)) + (rc_outer_outer * 72)) + ((((int)threadIdx.x) + 18) % 72)))];
-        kernel_shared[((((int)threadIdx.x) + 980))] = kernel[(((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 980) / 72) * 4608)) + (rc_outer_outer * 72)) + ((((int)threadIdx.x) + 44) % 72)))];
-        if (((int)threadIdx.x) < 74) {
-          kernel_shared[((((int)threadIdx.x) + 1078))] = kernel[(((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1078) / 72) * 4608)) + (rc_outer_outer * 72)) + ((((int)threadIdx.x) + 70) % 72)))];
+        if (((int)threadIdx.x) < 104) {
+          pad_temp_shared[((((int)threadIdx.x) * 6) + 673)] = (((((3 <= (((((int)threadIdx.x) * 2) + 8) % 27)) && ((((((int)threadIdx.x) * 6) + 25) % 81) < 72)) && (1 <= (((((int)threadIdx.x) * 6) + 7) % 9))) && ((((((int)threadIdx.x) * 6) + 7) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + ((((((int)threadIdx.x) * 2) + 224) / 27) * 49)) + (((((((int)threadIdx.x) * 2) + 8) % 27) / 3) * 7)) + (((((int)threadIdx.x) * 6) + 7) % 9)) - 8)] : 0.000000e+00f);
         }
-        __syncthreads();
-        for (int rc_outer_inner = 0; rc_outer_inner < 2; ++rc_outer_inner) {
-          for (int ry_outer_inner = 0; ry_outer_inner < 3; ++ry_outer_inner) {
-            for (int ff_outer_inner = 0; ff_outer_inner < 2; ++ff_outer_inner) {
-              conv2d_nchw[((ff_outer_inner * 4))] = (conv2d_nchw[((ff_outer_inner * 4))] + (pad_temp_shared[(((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)))] * kernel_shared[((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 1))] = (conv2d_nchw[(((ff_outer_inner * 4) + 1))] + (pad_temp_shared[(((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 72))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 2))] = (conv2d_nchw[(((ff_outer_inner * 4) + 2))] + (pad_temp_shared[(((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 144))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 3))] = (conv2d_nchw[(((ff_outer_inner * 4) + 3))] + (pad_temp_shared[(((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 216))]));
-              conv2d_nchw[((ff_outer_inner * 4))] = (conv2d_nchw[((ff_outer_inner * 4))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 1))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 1))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 1))] = (conv2d_nchw[(((ff_outer_inner * 4) + 1))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 1))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 73))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 2))] = (conv2d_nchw[(((ff_outer_inner * 4) + 2))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 1))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 145))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 3))] = (conv2d_nchw[(((ff_outer_inner * 4) + 3))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 1))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 217))]));
-              conv2d_nchw[((ff_outer_inner * 4))] = (conv2d_nchw[((ff_outer_inner * 4))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 2))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 2))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 1))] = (conv2d_nchw[(((ff_outer_inner * 4) + 1))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 2))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 74))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 2))] = (conv2d_nchw[(((ff_outer_inner * 4) + 2))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 2))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 146))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 3))] = (conv2d_nchw[(((ff_outer_inner * 4) + 3))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 2))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 218))]));
-              conv2d_nchw[((ff_outer_inner * 4))] = (conv2d_nchw[((ff_outer_inner * 4))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 81))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 9))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 1))] = (conv2d_nchw[(((ff_outer_inner * 4) + 1))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 81))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 81))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 2))] = (conv2d_nchw[(((ff_outer_inner * 4) + 2))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 81))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 153))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 3))] = (conv2d_nchw[(((ff_outer_inner * 4) + 3))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 81))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 225))]));
-              conv2d_nchw[((ff_outer_inner * 4))] = (conv2d_nchw[((ff_outer_inner * 4))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 82))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 10))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 1))] = (conv2d_nchw[(((ff_outer_inner * 4) + 1))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 82))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 82))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 2))] = (conv2d_nchw[(((ff_outer_inner * 4) + 2))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 82))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 154))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 3))] = (conv2d_nchw[(((ff_outer_inner * 4) + 3))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 82))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 226))]));
-              conv2d_nchw[((ff_outer_inner * 4))] = (conv2d_nchw[((ff_outer_inner * 4))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 83))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 11))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 1))] = (conv2d_nchw[(((ff_outer_inner * 4) + 1))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 83))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 83))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 2))] = (conv2d_nchw[(((ff_outer_inner * 4) + 2))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 83))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 155))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 3))] = (conv2d_nchw[(((ff_outer_inner * 4) + 3))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 83))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 227))]));
-              conv2d_nchw[((ff_outer_inner * 4))] = (conv2d_nchw[((ff_outer_inner * 4))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 162))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 18))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 1))] = (conv2d_nchw[(((ff_outer_inner * 4) + 1))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 162))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 90))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 2))] = (conv2d_nchw[(((ff_outer_inner * 4) + 2))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 162))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 162))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 3))] = (conv2d_nchw[(((ff_outer_inner * 4) + 3))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 162))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 234))]));
-              conv2d_nchw[((ff_outer_inner * 4))] = (conv2d_nchw[((ff_outer_inner * 4))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 163))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 19))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 1))] = (conv2d_nchw[(((ff_outer_inner * 4) + 1))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 163))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 91))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 2))] = (conv2d_nchw[(((ff_outer_inner * 4) + 2))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 163))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 163))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 3))] = (conv2d_nchw[(((ff_outer_inner * 4) + 3))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 163))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 235))]));
-              conv2d_nchw[((ff_outer_inner * 4))] = (conv2d_nchw[((ff_outer_inner * 4))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 164))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 20))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 1))] = (conv2d_nchw[(((ff_outer_inner * 4) + 1))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 164))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 92))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 2))] = (conv2d_nchw[(((ff_outer_inner * 4) + 2))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 164))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 164))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 3))] = (conv2d_nchw[(((ff_outer_inner * 4) + 3))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 164))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 236))]));
-              conv2d_nchw[((ff_outer_inner * 4))] = (conv2d_nchw[((ff_outer_inner * 4))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 243))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 27))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 1))] = (conv2d_nchw[(((ff_outer_inner * 4) + 1))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 243))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 99))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 2))] = (conv2d_nchw[(((ff_outer_inner * 4) + 2))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 243))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 171))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 3))] = (conv2d_nchw[(((ff_outer_inner * 4) + 3))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 243))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 243))]));
-              conv2d_nchw[((ff_outer_inner * 4))] = (conv2d_nchw[((ff_outer_inner * 4))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 244))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 28))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 1))] = (conv2d_nchw[(((ff_outer_inner * 4) + 1))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 244))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 100))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 2))] = (conv2d_nchw[(((ff_outer_inner * 4) + 2))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 244))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 172))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 3))] = (conv2d_nchw[(((ff_outer_inner * 4) + 3))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 244))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 244))]));
-              conv2d_nchw[((ff_outer_inner * 4))] = (conv2d_nchw[((ff_outer_inner * 4))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 245))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 29))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 1))] = (conv2d_nchw[(((ff_outer_inner * 4) + 1))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 245))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 101))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 2))] = (conv2d_nchw[(((ff_outer_inner * 4) + 2))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 245))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 173))]));
-              conv2d_nchw[(((ff_outer_inner * 4) + 3))] = (conv2d_nchw[(((ff_outer_inner * 4) + 3))] + (pad_temp_shared[((((((rc_outer_inner * 324) + (((((int)threadIdx.x) % 49) / 7) * 9)) + (ry_outer_inner * 9)) + (((int)threadIdx.x) % 7)) + 245))] * kernel_shared[(((((((((int)threadIdx.x) / 49) * 576) + (ff_outer_inner * 288)) + (rc_outer_inner * 36)) + (ry_outer_inner * 3)) + 245))]));
-            }
-          }
+        if (((int)threadIdx.x) < 104) {
+          pad_temp_shared[((((int)threadIdx.x) * 6) + 674)] = (((((3 <= (((((int)threadIdx.x) * 2) + 8) % 27)) && ((((((int)threadIdx.x) * 6) + 26) % 81) < 72)) && (1 <= (((((int)threadIdx.x) * 6) + 8) % 9))) && ((((((int)threadIdx.x) * 6) + 8) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + ((((((int)threadIdx.x) * 2) + 224) / 27) * 49)) + (((((((int)threadIdx.x) * 2) + 8) % 27) / 3) * 7)) + (((((int)threadIdx.x) * 6) + 8) % 9)) - 8)] : 0.000000e+00f);
+        }
+        if (((int)threadIdx.x) < 104) {
+          pad_temp_shared[((((int)threadIdx.x) * 6) + 675)] = (((((1 <= ((((((int)threadIdx.x) * 2) / 3) + 3) % 9)) && ((((((int)threadIdx.x) * 6) + 27) % 81) < 72)) && (1 <= ((((int)threadIdx.x) * 6) % 9))) && (((((int)threadIdx.x) * 6) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + ((((((int)threadIdx.x) * 2) + 225) / 27) * 49)) + (((((((int)threadIdx.x) * 2) / 3) + 3) % 9) * 7)) + ((((int)threadIdx.x) * 6) % 9)) - 8)] : 0.000000e+00f);
+        }
+        if (((int)threadIdx.x) < 104) {
+          pad_temp_shared[((((int)threadIdx.x) * 6) + 676)] = (((((1 <= ((((((int)threadIdx.x) * 2) / 3) + 3) % 9)) && ((((((int)threadIdx.x) * 6) + 28) % 81) < 72)) && (1 <= (((((int)threadIdx.x) * 6) + 1) % 9))) && ((((((int)threadIdx.x) * 6) + 1) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + ((((((int)threadIdx.x) * 2) + 225) / 27) * 49)) + (((((((int)threadIdx.x) * 2) / 3) + 3) % 9) * 7)) + (((((int)threadIdx.x) * 6) + 1) % 9)) - 8)] : 0.000000e+00f);
         }
+        if (((int)threadIdx.x) < 104) {
+          pad_temp_shared[((((int)threadIdx.x) * 6) + 677)] = (((((1 <= ((((((int)threadIdx.x) * 2) / 3) + 3) % 9)) && ((((((int)threadIdx.x) * 6) + 29) % 81) < 72)) && (1 <= (((((int)threadIdx.x) * 6) + 2) % 9))) && ((((((int)threadIdx.x) * 6) + 2) % 9) < 8)) ? data[(((((rc_outer_outer * 784) + ((((((int)threadIdx.x) * 2) + 225) / 27) * 49)) + (((((((int)threadIdx.x) * 2) / 3) + 3) % 9) * 7)) + (((((int)threadIdx.x) * 6) + 2) % 9)) - 8)] : 0.000000e+00f);
+        }
+        kernel_shared[((int)threadIdx.x)] = kernel[(((((int)blockIdx.x) * 73728) + (rc_outer_outer * 144)) + ((int)threadIdx.x))];
+        kernel_shared[(((int)threadIdx.x) + 112)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 112) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 112) % 144))];
+        kernel_shared[(((int)threadIdx.x) + 224)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 224) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 80) % 144))];
+        kernel_shared[(((int)threadIdx.x) + 336)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 336) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 48) % 144))];
+        kernel_shared[(((int)threadIdx.x) + 448)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 448) / 144) * 4608)) + (rc_outer_outer * 144)) + (((int)threadIdx.x) + 16))];
+        kernel_shared[(((int)threadIdx.x) + 560)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 560) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 128) % 144))];
+        kernel_shared[(((int)threadIdx.x) + 672)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 672) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 96) % 144))];
+        kernel_shared[(((int)threadIdx.x) + 784)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 784) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 64) % 144))];
+        kernel_shared[(((int)threadIdx.x) + 896)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 896) / 144) * 4608)) + (rc_outer_outer * 144)) + (((int)threadIdx.x) + 32))];
+        kernel_shared[(((int)threadIdx.x) + 1008)] = kernel[((((((int)blockIdx.x) * 73728) + (rc_outer_outer * 144)) + ((int)threadIdx.x)) + 32256)];
+        kernel_shared[(((int)threadIdx.x) + 1120)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1120) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 112) % 144))];
+        kernel_shared[(((int)threadIdx.x) + 1232)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1232) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 80) % 144))];
+        kernel_shared[(((int)threadIdx.x) + 1344)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1344) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 48) % 144))];
+        kernel_shared[(((int)threadIdx.x) + 1456)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1456) / 144) * 4608)) + (rc_outer_outer * 144)) + (((int)threadIdx.x) + 16))];
+        kernel_shared[(((int)threadIdx.x) + 1568)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1568) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 128) % 144))];
+        kernel_shared[(((int)threadIdx.x) + 1680)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1680) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 96) % 144))];
+        kernel_shared[(((int)threadIdx.x) + 1792)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1792) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 64) % 144))];
+        kernel_shared[(((int)threadIdx.x) + 1904)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 1904) / 144) * 4608)) + (rc_outer_outer * 144)) + (((int)threadIdx.x) + 32))];
+        kernel_shared[(((int)threadIdx.x) + 2016)] = kernel[((((((int)blockIdx.x) * 73728) + (rc_outer_outer * 144)) + ((int)threadIdx.x)) + 64512)];
+        kernel_shared[(((int)threadIdx.x) + 2128)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 2128) / 144) * 4608)) + (rc_outer_outer * 144)) + ((((int)threadIdx.x) + 112) % 144))];
+        if (((int)threadIdx.x) < 64) {
+          kernel_shared[(((int)threadIdx.x) + 2240)] = kernel[((((((int)blockIdx.x) * 73728) + (((((int)threadIdx.x) + 2240) / 144) * 4608)) + (rc_outer_outer * 144)) + (((int)threadIdx.x) + 80))];
+        }
+        __syncthreads();
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((int)threadIdx.x) % 7)] * kernel_shared[((((int)threadIdx.x) / 7) * 144)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 81)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 9)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 162)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 18)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 243)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 27)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 324)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 36)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 405)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 45)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 486)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 54)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 567)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 63)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 9)] * kernel_shared[((((int)threadIdx.x) / 7) * 144)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 90)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 9)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 171)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 18)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 252)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 27)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 333)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 36)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 414)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 45)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 495)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 54)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 576)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 63)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 18)] * kernel_shared[((((int)threadIdx.x) / 7) * 144)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 99)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 9)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 180)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 18)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 261)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 27)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 342)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 36)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 423)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 45)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 504)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 54)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 585)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 63)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 27)] * kernel_shared[((((int)threadIdx.x) / 7) * 144)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 108)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 9)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 189)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 18)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 270)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 27)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 351)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 36)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 432)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 45)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 513)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 54)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 594)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 63)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 36)] * kernel_shared[((((int)threadIdx.x) / 7) * 144)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 117)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 9)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 198)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 18)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 279)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 27)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 360)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 36)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 441)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 45)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 522)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 54)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 603)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 63)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 45)] * kernel_shared[((((int)threadIdx.x) / 7) * 144)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 126)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 9)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 207)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 18)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 288)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 27)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 369)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 36)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 450)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 45)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 531)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 54)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 612)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 63)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 54)] * kernel_shared[((((int)threadIdx.x) / 7) * 144)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 135)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 9)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 216)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 18)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 297)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 27)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 378)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 36)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 459)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 45)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 540)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 54)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 621)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 63)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 1)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 82)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 10)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 163)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 19)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 244)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 28)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 325)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 37)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 406)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 46)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 487)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 55)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 568)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 64)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 10)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 1)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 91)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 10)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 172)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 19)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 253)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 28)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 334)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 37)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 415)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 46)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 496)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 55)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 577)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 64)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 19)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 1)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 100)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 10)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 181)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 19)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 262)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 28)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 343)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 37)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 424)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 46)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 505)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 55)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 586)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 64)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 28)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 1)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 109)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 10)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 190)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 19)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 271)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 28)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 352)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 37)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 433)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 46)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 514)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 55)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 595)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 64)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 37)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 1)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 118)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 10)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 199)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 19)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 280)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 28)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 361)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 37)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 442)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 46)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 523)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 55)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 604)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 64)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 46)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 1)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 127)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 10)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 208)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 19)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 289)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 28)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 370)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 37)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 451)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 46)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 532)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 55)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 613)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 64)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 55)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 1)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 136)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 10)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 217)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 19)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 298)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 28)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 379)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 37)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 460)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 46)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 541)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 55)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 622)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 64)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 2)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 2)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 83)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 11)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 164)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 20)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 245)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 29)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 326)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 38)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 407)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 47)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 488)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 56)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 569)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 65)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 11)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 2)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 92)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 11)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 173)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 20)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 254)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 29)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 335)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 38)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 416)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 47)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 497)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 56)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 578)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 65)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 20)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 2)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 101)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 11)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 182)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 20)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 263)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 29)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 344)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 38)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 425)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 47)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 506)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 56)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 587)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 65)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 29)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 2)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 110)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 11)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 191)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 20)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 272)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 29)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 353)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 38)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 434)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 47)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 515)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 56)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 596)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 65)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 38)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 2)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 119)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 11)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 200)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 20)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 281)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 29)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 362)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 38)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 443)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 47)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 524)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 56)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 605)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 65)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 47)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 2)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 128)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 11)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 209)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 20)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 290)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 29)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 371)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 38)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 452)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 47)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 533)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 56)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 614)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 65)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 56)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 2)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 137)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 11)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 218)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 20)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 299)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 29)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 380)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 38)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 461)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 47)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 542)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 56)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 623)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 65)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 9)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 3)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 90)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 12)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 171)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 21)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 252)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 30)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 333)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 39)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 414)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 48)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 495)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 57)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 576)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 66)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 18)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 3)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 99)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 12)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 180)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 21)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 261)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 30)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 342)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 39)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 423)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 48)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 504)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 57)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 585)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 66)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 27)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 3)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 108)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 12)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 189)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 21)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 270)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 30)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 351)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 39)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 432)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 48)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 513)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 57)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 594)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 66)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 36)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 3)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 117)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 12)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 198)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 21)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 279)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 30)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 360)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 39)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 441)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 48)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 522)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 57)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 603)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 66)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 45)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 3)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 126)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 12)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 207)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 21)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 288)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 30)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 369)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 39)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 450)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 48)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 531)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 57)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 612)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 66)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 54)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 3)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 135)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 12)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 216)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 21)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 297)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 30)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 378)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 39)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 459)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 48)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 540)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 57)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 621)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 66)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 63)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 3)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 144)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 12)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 225)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 21)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 306)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 30)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 387)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 39)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 468)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 48)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 549)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 57)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 630)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 66)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 10)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 4)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 91)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 13)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 172)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 22)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 253)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 31)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 334)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 40)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 415)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 49)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 496)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 58)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 577)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 67)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 19)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 4)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 100)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 13)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 181)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 22)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 262)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 31)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 343)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 40)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 424)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 49)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 505)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 58)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 586)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 67)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 28)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 4)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 109)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 13)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 190)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 22)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 271)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 31)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 352)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 40)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 433)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 49)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 514)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 58)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 595)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 67)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 37)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 4)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 118)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 13)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 199)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 22)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 280)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 31)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 361)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 40)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 442)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 49)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 523)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 58)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 604)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 67)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 46)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 4)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 127)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 13)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 208)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 22)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 289)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 31)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 370)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 40)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 451)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 49)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 532)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 58)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 613)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 67)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 55)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 4)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 136)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 13)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 217)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 22)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 298)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 31)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 379)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 40)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 460)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 49)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 541)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 58)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 622)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 67)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 64)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 4)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 145)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 13)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 226)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 22)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 307)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 31)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 388)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 40)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 469)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 49)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 550)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 58)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 631)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 67)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 11)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 5)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 92)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 14)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 173)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 23)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 254)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 32)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 335)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 41)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 416)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 50)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 497)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 59)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 578)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 68)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 20)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 5)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 101)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 14)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 182)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 23)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 263)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 32)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 344)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 41)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 425)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 50)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 506)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 59)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 587)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 68)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 29)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 5)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 110)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 14)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 191)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 23)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 272)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 32)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 353)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 41)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 434)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 50)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 515)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 59)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 596)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 68)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 38)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 5)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 119)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 14)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 200)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 23)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 281)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 32)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 362)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 41)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 443)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 50)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 524)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 59)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 605)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 68)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 47)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 5)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 128)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 14)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 209)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 23)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 290)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 32)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 371)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 41)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 452)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 50)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 533)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 59)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 614)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 68)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 56)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 5)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 137)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 14)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 218)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 23)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 299)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 32)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 380)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 41)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 461)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 50)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 542)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 59)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 623)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 68)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 65)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 5)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 146)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 14)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 227)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 23)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 308)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 32)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 389)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 41)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 470)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 50)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 551)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 59)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 632)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 68)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 18)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 6)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 99)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 15)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 180)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 24)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 261)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 33)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 342)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 42)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 423)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 51)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 504)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 60)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 585)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 69)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 27)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 6)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 108)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 15)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 189)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 24)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 270)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 33)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 351)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 42)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 432)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 51)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 513)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 60)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 594)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 69)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 36)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 6)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 117)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 15)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 198)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 24)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 279)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 33)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 360)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 42)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 441)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 51)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 522)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 60)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 603)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 69)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 45)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 6)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 126)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 15)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 207)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 24)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 288)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 33)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 369)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 42)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 450)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 51)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 531)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 60)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 612)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 69)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 54)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 6)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 135)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 15)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 216)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 24)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 297)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 33)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 378)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 42)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 459)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 51)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 540)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 60)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 621)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 69)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 63)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 6)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 144)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 15)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 225)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 24)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 306)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 33)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 387)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 42)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 468)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 51)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 549)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 60)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 630)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 69)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 72)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 6)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 153)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 15)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 234)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 24)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 315)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 33)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 396)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 42)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 477)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 51)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 558)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 60)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 639)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 69)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 19)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 7)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 100)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 16)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 181)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 25)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 262)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 34)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 343)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 43)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 424)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 52)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 505)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 61)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 586)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 70)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 28)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 7)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 109)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 16)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 190)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 25)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 271)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 34)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 352)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 43)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 433)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 52)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 514)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 61)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 595)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 70)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 37)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 7)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 118)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 16)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 199)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 25)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 280)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 34)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 361)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 43)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 442)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 52)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 523)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 61)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 604)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 70)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 46)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 7)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 127)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 16)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 208)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 25)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 289)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 34)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 370)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 43)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 451)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 52)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 532)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 61)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 613)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 70)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 55)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 7)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 136)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 16)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 217)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 25)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 298)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 34)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 379)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 43)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 460)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 52)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 541)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 61)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 622)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 70)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 64)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 7)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 145)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 16)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 226)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 25)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 307)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 34)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 388)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 43)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 469)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 52)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 550)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 61)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 631)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 70)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 73)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 7)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 154)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 16)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 235)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 25)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 316)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 34)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 397)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 43)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 478)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 52)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 559)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 61)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 640)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 70)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 20)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 8)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 101)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 17)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 182)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 26)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 263)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 35)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 344)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 44)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 425)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 53)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 506)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 62)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 587)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 71)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 29)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 8)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 110)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 17)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 191)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 26)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 272)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 35)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 353)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 44)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 434)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 53)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 515)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 62)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 596)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 71)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 38)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 8)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 119)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 17)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 200)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 26)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 281)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 35)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 362)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 44)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 443)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 53)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 524)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 62)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 605)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 71)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 47)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 8)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 128)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 17)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 209)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 26)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 290)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 35)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 371)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 44)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 452)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 53)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 533)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 62)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 614)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 71)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 56)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 8)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 137)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 17)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 218)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 26)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 299)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 35)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 380)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 44)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 461)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 53)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 542)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 62)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 623)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 71)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 65)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 8)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 146)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 17)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 227)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 26)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 308)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 35)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 389)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 44)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 470)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 53)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 551)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 62)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 632)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 71)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 74)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 8)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 155)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 17)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 236)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 26)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 317)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 35)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 398)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 44)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 479)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 53)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 560)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 62)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 641)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 71)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 648)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 72)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 729)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 81)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 810)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 90)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 891)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 99)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 972)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 108)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1053)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 117)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1134)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 126)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1215)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 135)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 657)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 72)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 738)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 81)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 819)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 90)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 900)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 99)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 981)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 108)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1062)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 117)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1143)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 126)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1224)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 135)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 666)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 72)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 747)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 81)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 828)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 90)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 909)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 99)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 990)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 108)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1071)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 117)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1152)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 126)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1233)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 135)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 675)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 72)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 756)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 81)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 837)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 90)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 918)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 99)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 999)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 108)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1080)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 117)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1161)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 126)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1242)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 135)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 684)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 72)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 765)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 81)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 846)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 90)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 927)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 99)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1008)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 108)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1089)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 117)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1170)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 126)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1251)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 135)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 693)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 72)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 774)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 81)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 855)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 90)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 936)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 99)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1017)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 108)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1098)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 117)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1179)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 126)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1260)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 135)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 702)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 72)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 783)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 81)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 864)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 90)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 945)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 99)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1026)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 108)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1107)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 117)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1188)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 126)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1269)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 135)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 649)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 73)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 730)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 82)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 811)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 91)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 892)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 100)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 973)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 109)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1054)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 118)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1135)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 127)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1216)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 136)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 658)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 73)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 739)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 82)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 820)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 91)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 901)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 100)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 982)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 109)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1063)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 118)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1144)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 127)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1225)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 136)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 667)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 73)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 748)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 82)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 829)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 91)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 910)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 100)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 991)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 109)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1072)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 118)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1153)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 127)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1234)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 136)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 676)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 73)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 757)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 82)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 838)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 91)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 919)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 100)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1000)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 109)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1081)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 118)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1162)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 127)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1243)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 136)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 685)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 73)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 766)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 82)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 847)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 91)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 928)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 100)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1009)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 109)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1090)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 118)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1171)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 127)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1252)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 136)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 694)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 73)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 775)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 82)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 856)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 91)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 937)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 100)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1018)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 109)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1099)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 118)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1180)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 127)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1261)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 136)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 703)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 73)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 784)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 82)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 865)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 91)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 946)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 100)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1027)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 109)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1108)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 118)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1189)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 127)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1270)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 136)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 650)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 74)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 731)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 83)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 812)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 92)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 893)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 101)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 974)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 110)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1055)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 119)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1136)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 128)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1217)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 137)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 659)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 74)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 740)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 83)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 821)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 92)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 902)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 101)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 983)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 110)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1064)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 119)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1145)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 128)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1226)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 137)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 668)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 74)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 749)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 83)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 830)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 92)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 911)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 101)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 992)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 110)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1073)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 119)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1154)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 128)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1235)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 137)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 677)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 74)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 758)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 83)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 839)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 92)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 920)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 101)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1001)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 110)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1082)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 119)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1163)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 128)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1244)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 137)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 686)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 74)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 767)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 83)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 848)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 92)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 929)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 101)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1010)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 110)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1091)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 119)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1172)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 128)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1253)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 137)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 695)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 74)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 776)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 83)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 857)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 92)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 938)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 101)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1019)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 110)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1100)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 119)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1181)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 128)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1262)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 137)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 704)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 74)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 785)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 83)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 866)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 92)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 947)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 101)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1028)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 110)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1109)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 119)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1190)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 128)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1271)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 137)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 657)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 75)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 738)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 84)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 819)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 93)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 900)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 102)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 981)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 111)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1062)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 120)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1143)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 129)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1224)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 138)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 666)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 75)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 747)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 84)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 828)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 93)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 909)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 102)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 990)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 111)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1071)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 120)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1152)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 129)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1233)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 138)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 675)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 75)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 756)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 84)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 837)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 93)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 918)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 102)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 999)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 111)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1080)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 120)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1161)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 129)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1242)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 138)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 684)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 75)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 765)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 84)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 846)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 93)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 927)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 102)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1008)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 111)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1089)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 120)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1170)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 129)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1251)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 138)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 693)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 75)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 774)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 84)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 855)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 93)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 936)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 102)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1017)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 111)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1098)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 120)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1179)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 129)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1260)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 138)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 702)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 75)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 783)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 84)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 864)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 93)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 945)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 102)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1026)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 111)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1107)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 120)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1188)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 129)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1269)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 138)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 711)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 75)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 792)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 84)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 873)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 93)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 954)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 102)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1035)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 111)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1116)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 120)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1197)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 129)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1278)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 138)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 658)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 76)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 739)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 85)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 820)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 94)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 901)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 103)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 982)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 112)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1063)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 121)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1144)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 130)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1225)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 139)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 667)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 76)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 748)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 85)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 829)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 94)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 910)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 103)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 991)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 112)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1072)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 121)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1153)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 130)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1234)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 139)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 676)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 76)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 757)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 85)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 838)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 94)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 919)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 103)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1000)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 112)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1081)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 121)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1162)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 130)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1243)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 139)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 685)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 76)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 766)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 85)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 847)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 94)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 928)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 103)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1009)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 112)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1090)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 121)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1171)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 130)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1252)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 139)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 694)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 76)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 775)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 85)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 856)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 94)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 937)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 103)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1018)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 112)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1099)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 121)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1180)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 130)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1261)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 139)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 703)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 76)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 784)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 85)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 865)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 94)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 946)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 103)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1027)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 112)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1108)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 121)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1189)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 130)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1270)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 139)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 712)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 76)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 793)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 85)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 874)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 94)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 955)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 103)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1036)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 112)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1117)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 121)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1198)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 130)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1279)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 139)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 659)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 77)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 740)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 86)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 821)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 95)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 902)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 104)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 983)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 113)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1064)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 122)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1145)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 131)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1226)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 140)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 668)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 77)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 749)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 86)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 830)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 95)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 911)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 104)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 992)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 113)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1073)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 122)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1154)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 131)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1235)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 140)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 677)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 77)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 758)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 86)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 839)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 95)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 920)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 104)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1001)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 113)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1082)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 122)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1163)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 131)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1244)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 140)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 686)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 77)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 767)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 86)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 848)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 95)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 929)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 104)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1010)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 113)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1091)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 122)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1172)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 131)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1253)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 140)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 695)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 77)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 776)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 86)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 857)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 95)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 938)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 104)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1019)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 113)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1100)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 122)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1181)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 131)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1262)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 140)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 704)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 77)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 785)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 86)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 866)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 95)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 947)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 104)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1028)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 113)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1109)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 122)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1190)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 131)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1271)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 140)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 713)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 77)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 794)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 86)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 875)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 95)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 956)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 104)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1037)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 113)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1118)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 122)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1199)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 131)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1280)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 140)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 666)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 78)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 747)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 87)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 828)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 96)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 909)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 105)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 990)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 114)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1071)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 123)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1152)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 132)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1233)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 141)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 675)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 78)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 756)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 87)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 837)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 96)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 918)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 105)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 999)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 114)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1080)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 123)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1161)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 132)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1242)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 141)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 684)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 78)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 765)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 87)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 846)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 96)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 927)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 105)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1008)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 114)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1089)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 123)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1170)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 132)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1251)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 141)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 693)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 78)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 774)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 87)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 855)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 96)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 936)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 105)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1017)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 114)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1098)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 123)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1179)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 132)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1260)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 141)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 702)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 78)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 783)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 87)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 864)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 96)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 945)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 105)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1026)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 114)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1107)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 123)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1188)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 132)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1269)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 141)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 711)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 78)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 792)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 87)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 873)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 96)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 954)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 105)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1035)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 114)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1116)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 123)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1197)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 132)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1278)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 141)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 720)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 78)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 801)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 87)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 882)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 96)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 963)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 105)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1044)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 114)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1125)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 123)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1206)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 132)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1287)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 141)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 667)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 79)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 748)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 88)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 829)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 97)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 910)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 106)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 991)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 115)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1072)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 124)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1153)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 133)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1234)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 142)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 676)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 79)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 757)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 88)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 838)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 97)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 919)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 106)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1000)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 115)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1081)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 124)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1162)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 133)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1243)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 142)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 685)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 79)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 766)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 88)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 847)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 97)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 928)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 106)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1009)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 115)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1090)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 124)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1171)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 133)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1252)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 142)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 694)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 79)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 775)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 88)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 856)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 97)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 937)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 106)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1018)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 115)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1099)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 124)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1180)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 133)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1261)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 142)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 703)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 79)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 784)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 88)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 865)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 97)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 946)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 106)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1027)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 115)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1108)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 124)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1189)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 133)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1270)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 142)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 712)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 79)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 793)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 88)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 874)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 97)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 955)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 106)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1036)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 115)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1117)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 124)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1198)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 133)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1279)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 142)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 721)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 79)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 802)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 88)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 883)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 97)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 964)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 106)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1045)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 115)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1126)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 124)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1207)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 133)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1288)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 142)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 668)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 80)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 749)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 89)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 830)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 98)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 911)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 107)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 992)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 116)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1073)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 125)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1154)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 134)]));
+        conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1235)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 143)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 677)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 80)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 758)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 89)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 839)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 98)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 920)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 107)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1001)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 116)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1082)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 125)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1163)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 134)]));
+        conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1244)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 143)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 686)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 80)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 767)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 89)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 848)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 98)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 929)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 107)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1010)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 116)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1091)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 125)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1172)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 134)]));
+        conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1253)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 143)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 695)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 80)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 776)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 89)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 857)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 98)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 938)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 107)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1019)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 116)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1100)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 125)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1181)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 134)]));
+        conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1262)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 143)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 704)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 80)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 785)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 89)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 866)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 98)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 947)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 107)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1028)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 116)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1109)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 125)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1190)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 134)]));
+        conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1271)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 143)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 713)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 80)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 794)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 89)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 875)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 98)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 956)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 107)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1037)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 116)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1118)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 125)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1199)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 134)]));
+        conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1280)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 143)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 722)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 80)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 803)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 89)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 884)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 98)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 965)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 107)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1046)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 116)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1127)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 125)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1208)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 134)]));
+        conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[((((int)threadIdx.x) % 7) + 1289)] * kernel_shared[(((((int)threadIdx.x) / 7) * 144) + 143)]));
       }
-      for (int i1_inner = 0; i1_inner < 8; ++i1_inner) {
-        compute[(((((((int)blockIdx.x) * 784) + ((((int)threadIdx.x) / 49) * 392)) + (i1_inner * 49)) + (((int)threadIdx.x) % 49)))] = max((conv2d_nchw[(i1_inner)] + bias[((((((int)blockIdx.x) * 16) + ((((int)threadIdx.x) / 49) * 8)) + i1_inner))]), 0.000000e+00f);
+      for (int i2_inner = 0; i2_inner < 7; ++i2_inner) {
+        compute[((((((int)blockIdx.x) * 784) + ((((int)threadIdx.x) / 7) * 49)) + (i2_inner * 7)) + (((int)threadIdx.x) % 7))] = max((conv2d_nchw[i2_inner] + bias[((((int)blockIdx.x) * 16) + (((int)threadIdx.x) / 7))]), 0.000000e+00f);
       }
     }
 
@@ -667,7 +2621,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  11.914 seconds)
+   **Total running time of the script:** ( 2 minutes  26.864 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 9a16fda..5a79ed0 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)  
-       9.7203       9.7139       9.7465       9.7004       0.0194   
+       9.8594       9.8517       9.9018       9.8247       0.0320   
                
 
 
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 0b08372..ab7ea3d 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)  
-      723.3195     725.0324     729.4568     715.4694      5.8373   
+      760.1292     760.3889     760.6901     759.3086      0.5931   
                
 
 
@@ -658,7 +658,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  17.218 seconds)
+   **Total running time of the script:** ( 1 minutes  20.793 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 831b034..9b9ad9f 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
@@ -355,37 +355,36 @@ layout transformation, parallelization, vectorization, unrolling, and operator f
     Lowered TIR:
     @main = primfn(placeholder_5: handle, placeholder_6: handle, placeholder_7: handle, placeholder_8: handle, placeholder_9: handle, compute_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {placeholder_3: Buffer(placeholder_10: Pointer(float32), float32, [4916, 16, 1], []),
-                 placeholder_4: Buffer(placeholder_11: Pointer(int32), int32, [4916], []),
-                 compute: Buffer(compute_2: Pointer(float32), float32, [128, 512], []),
-                 placeholder_2: Buffer(placeholder_12: Pointer(float32), float32, [128, 512], []),
-                 placeholder: Buffer(placeholder_13: Pointer(float32), float32, [128, 256], []),
+      buffers = {placeholder_4: Buffer(placeholder_10: Pointer(float32), float32, [32768], []),
+                 placeholder_2: Buffer(placeholder_11: Pointer(float32), float32, [78656], []),
+                 placeholder_3: Buffer(placeholder_12: Pointer(int32), int32, [4916], []),
+                 compute: Buffer(compute_2: Pointer(float32), float32, [65536], []),
+                 placeholder: Buffer(placeholder_13: Pointer(float32), float32, [65536], []),
                  placeholder_1: Buffer(placeholder_14: Pointer(int32), int32, [33], [])}
-      buffer_map = {placeholder_5: placeholder, placeholder_8: placeholder_1, placeholder_9: placeholder_2, compute_1: compute, placeholder_6: placeholder_3, placeholder_7: placeholder_4} {
-      for (i0.outer.i1.outer.fused: int32, 0, 32) "parallel" {
-        allocate(compute_3: Pointer(global float32), float32, [2048]), storage_scope = global {
+      buffer_map = {placeholder_9: placeholder, placeholder_8: placeholder_1, compute_1: compute, placeholder_6: placeholder_2, placeholder_7: placeholder_3, placeholder_5: placeholder_4} {
+      allocate(compute_3: Pointer(global float32), float32, [4096]), storage_scope = global;
+      for (i1.outer: int32, 0, 16) {
+        for (i.outer.inner: int32, 0, 16) {
           for (nb_j.inner: int32, 0, 2) {
-            for (i.inner.init: int32, 0, 64) {
+            for (i.inner.init: int32, 0, 8) {
               for (j.init: int32, 0, 16) {
-                compute_3[(((i.inner.init*32) + (nb_j.inner*16)) + j.init)] = 0f32
+                compute_4: Buffer(compute_3, float32, [4096], [])[((((i.outer.inner*256) + (i.inner.init*32)) + (nb_j.inner*16)) + j.init)] = 0f32
               }
             }
-            for (elem_idx: int32, 0, let cse_var_1: int32 = ((floormod(i0.outer.i1.outer.fused, 16)*2) + nb_j.inner) in ((int32*)placeholder_14[(cse_var_1 + 1)] - (int32*)placeholder_14[cse_var_1])) {
-              for (i.inner: int32, 0, 64) {
+            for (elem_idx: int32, 0, let cse_var_1: int32 = ((i1.outer*2) + nb_j.inner) in (placeholder_1[(cse_var_1 + 1)] - placeholder_1[cse_var_1])) {
+              for (i.inner: int32, 0, 8) {
                 for (j: int32, 0, 16) {
-                  let cse_var_3: int32 = ((floormod(i0.outer.i1.outer.fused, 16)*2) + nb_j.inner)
-                  let cse_var_2: int32 = (((i.inner*32) + (nb_j.inner*16)) + j)
-                  compute_3[cse_var_2] = ((float32*)compute_3[cse_var_2] + ((float32*)placeholder_10[((((int32*)placeholder_14[cse_var_3]*16) + (elem_idx*16)) + j)]*max((float32*)placeholder_13[(((floordiv(i0.outer.i1.outer.fused, 16)*16384) + (i.inner*256)) + (int32*)placeholder_11[((int32*)placeholder_14[cse_var_3] + elem_idx)])], 0f32)))
+                  let cse_var_3: int32 = ((i1.outer*2) + nb_j.inner)
+                  let cse_var_2: int32 = ((((i.outer.inner*256) + (i.inner*32)) + (nb_j.inner*16)) + j)
+                  compute_4[cse_var_2] = (compute_4[cse_var_2] + (placeholder_2[(((placeholder_1[cse_var_3]*16) + (elem_idx*16)) + j)]*max(placeholder_4[(((i.outer.inner*2048) + (i.inner*256)) + placeholder_3[(placeholder_1[cse_var_3] + elem_idx)])], 0f32)))
                 }
               }
             }
           }
-          for (i0.inner: int32, 0, 64) {
-            for (i1.inner: int32, 0, 32) {
-              let cse_var_4: int32 = ((((floordiv(i0.outer.i1.outer.fused, 16)*32768) + (i0.inner*512)) + (floormod(i0.outer.i1.outer.fused, 16)*32)) + i1.inner)
-              compute_2[cse_var_4] = max(((float32*)compute_3[((i0.inner*32) + i1.inner)] + (float32*)placeholder_12[cse_var_4]), 0f32)
-            }
-          }
+        }
+        for (i0.inner: int32, 0, 128) {
+          let cse_var_4: int32 = ((i0.inner*512) + (i1.outer*32))
+          compute[ramp(cse_var_4, 1, 32)] = max((compute_4[ramp((i0.inner*32), 1, 32)] + placeholder[ramp(cse_var_4, 1, 32)]), broadcast(0f32, 32))
         }
       }
     }
@@ -438,7 +437,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 1.539 ms
+    Execution time of this operator: 1.411 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 9eb9adf..195dd37 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:44.115** total execution time for **how_to_tune_with_autotvm** files:
+**00:44.397** total execution time for **how_to_tune_with_autotvm** files:
 
-- **00:43.277**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)
-- **00:00.227**: :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_mobile_gpu.py` (``tune_relay_mobile_gpu.py``)
-- **00:00.203**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)
-- **00:00.199**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)
+- **00:43.520**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)
+- **00:00.230**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)
+- **00:00.217**: :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)
+- **00:00.216**: :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_mobile_gpu.py` (``tune_relay_mobile_gpu.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 f6133ce..bc30aeb 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
@@ -244,26 +244,2160 @@ for this template
     waiting for device...
     device available
     Get devices for measurement successfully!
-    No: 1   GFLOPS: 0.00/0.00       result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 2   GFLOPS: 0.00/0.00       result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 3   GFLOPS: 0.00/0.00       result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 4   GFLOPS: 0.00/0.00       result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 5   GFLOPS: 0.00/0.00       result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 6   GFLOPS: 61.16/61.16     result: MeasureResult(costs=(0.0037853952666666666,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.7209014892578125, timestamp=1646086713.4698336)      [('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/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 8   GFLOPS: 0.00/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 9   GFLOPS: 0.00/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 10  GFLOPS: 0.00/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 142, in build\n    res = future.result()\n  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 432, in result\n    return self.__get_result()\n  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result\n    raise self._exception\n  File "/usr/lib/python3.6/concurrent/futures/thread.py [...]
-    No: 11  GFLOPS: 0.00/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 12  GFLOPS: 0.00/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 13  GFLOPS: 0.00/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 14  GFLOPS: 0.00/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 15  GFLOPS: 0.00/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 16  GFLOPS: 0.00/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 17  GFLOPS: 0.00/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 18  GFLOPS: 0.00/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 571, in __call__\n    func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 523, in _build_func_common\n    func = build(s, args, target_host=task.target_host, runtime=runtime)\n  File "/workspace/python/tvm/driver/build_mod [...]
-    No: 19  GFLOPS: 0.00/61.16      result: MeasureResult(costs=('Traceback (most recent call last):\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 721, in __call__\n    yield remote, remote.load_module(os.path.split(build_result.filename)[1])\n  File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 685, in run_through_rpc\n    costs = time_f(*args).results\n  File "/workspace/python/tvm/runtime/module.py", line 297, in evaluator\n    blob = feva [...]
-    No: 20  GFLOPS: 144.90/144.90   result: MeasureResult(costs=(0.0015976684199999998,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.39886474609375, timestamp=1646086737.836721) [('tile_f', [-1, 1, 4, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9881539
+    No: 1   GFLOPS: 0.00/0.00       result: 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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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, 2]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 128, 2]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7999494
+    No: 2   GFLOPS: 0.00/0.00       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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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, 8, 2]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 1, 64]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,5194279
+    No: 3   GFLOPS: 0.00/0.00       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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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, 32, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 2, 64]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9069983
+    No: 4   GFLOPS: 0.00/0.00       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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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, 16, 16, 1]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 16, 32]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,736818
+    No: 5   GFLOPS: 0.00/0.00       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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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: 100.79/100.79   result: MeasureResult(costs=(0.0022969085208333333,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.5907156467437744, timestamp=1647466290.0848103)      [('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/100.79     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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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/100.79     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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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/100.79     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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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/100.79     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.6/concurrent/futures/_base.py", line 432, in result
+        return self.__get_result()
+      File "/usr/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
+        raise self._exception
+      File "/usr/lib/python3.6/concurrent/futures/thread.py", line 56, in run
+        result = self.fn(*self.args, **self.kwargs)
+      File "/workspace/python/tvm/contrib/popen_pool.py", line 369, in <lambda>
+        worker = lambda *args: self._worker_run(*args)
+      File "/workspace/python/tvm/contrib/popen_pool.py", line 338, in _worker_run
+        return proc.recv()
+      File "/workspace/python/tvm/contrib/popen_pool.py", line 275, in recv
+        raise TimeoutError()
+    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/100.79     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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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/100.79     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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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/100.79     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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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/100.79     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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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/100.79     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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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/100.79     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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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/100.79     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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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/100.79     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
+        func = build(s, args, target_host=task.target_host, runtime=runtime)
+      File "/workspace/python/tvm/driver/build_module.py", line 225, in build
+        input_mod = lower(inputs, args, name=name, binds=binds)
+      File "/workspace/python/tvm/driver/build_module.py", line 133, in lower
+        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 267, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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
+
+    Traceback (most recent call last):
+      24: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      22: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      21: operator()
+            at /workspace/include/tvm/runtime/packed_func.h:1731
+      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
+            at /workspace/include/tvm/runtime/packed_func.h:1671
+      19: run<>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1631
+      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
+            at /workspace/include/tvm/runtime/packed_func.h:1646
+      13: operator()
+            at /workspace/src/driver/driver_api.cc:412
+      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, bool)
+            at /workspace/src/driver/driver_api.cc:399
+      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
+            at /workspace/src/driver/driver_api.cc:299
+      10: tvm::transform::Pass::operator()(tvm::IRModule) const
+            at /workspace/src/ir/transform.cc:255
+      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:431
+      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/ir/transform.cc:267
+      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
+            at /workspace/src/tir/ir/transform.cc:100
+      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
+            at /workspace/include/tvm/runtime/packed_func.h:1750
+      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
+            at /workspace/include/tvm/runtime/packed_func.h:1694
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/c_runtime_api.cc:534
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
+      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/100.79     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
+        costs = time_f(*args).results
+      File "/workspace/python/tvm/runtime/module.py", line 297, in evaluator
+        blob = feval(*args)
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 323, in tvm._ffi._cy3.core.PackedFuncBase.__call__
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 257, in tvm._ffi._cy3.core.FuncCall
+      File "tvm/_ffi/_cython/./packed_func.pxi", line 246, in tvm._ffi._cy3.core.FuncCall3
+      File "tvm/_ffi/_cython/./base.pxi", line 163, in tvm._ffi._cy3.core.CALL
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      4: TVMFuncCall
+            at /workspace/src/runtime/c_runtime_api.cc:477
+      3: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      2: tvm::runtime::RPCWrappedFunc::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/src/runtime/rpc/rpc_module.cc:127
+      1: tvm::runtime::RPCClientSession::CallFunc(void*, TVMValue const*, int const*, int, std::function<void (tvm::runtime::TVMArgs)> const&)
+            at /workspace/src/runtime/rpc/rpc_endpoint.cc:1009
+      0: tvm::runtime::RPCEndpoint::CallFunc(void*, TVMValue const*, int const*, int, std::function<void (tvm::runtime::TVMArgs)>)
+            at /workspace/src/runtime/rpc/rpc_endpoint.cc:801
+      File "/workspace/src/runtime/rpc/rpc_endpoint.cc", line 801
+    TVMError: 
+    ---------------------------------------------------------------
+    An error occurred during the execution of TVM.
+    For more information, please see: https://tvm.apache.org/docs/errors.html
+    ---------------------------------------------------------------
+      Check failed: (code == RPCCode::kReturn) is false: code=kShutdown
+
+    During handling of the above exception, another exception occurred:
+
+    Traceback (most recent call last):
+      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 685, in run_through_rpc
+        costs = time_f(*args).results
+      File "/usr/lib/python3.6/contextlib.py", line 99, in __exit__
+        self.gen.throw(type, value, traceback)
+      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 725, in __call__
+        remote.remove(build_result.filename)
+      File "/workspace/python/tvm/rpc/client.py", line 145, in remove
+        self._remote_funcs["remove"] = self.get_function("tvm.rpc.server.remove")
+      File "/workspace/python/tvm/rpc/client.py", line 73, in get_function
+        return self._sess.get_function(name)
+      File "/workspace/python/tvm/runtime/module.py", line 149, in get_function
+        self.handle, c_str(name), ctypes.c_int(query_imports), ctypes.byref(ret_handle)
+      File "/workspace/python/tvm/_ffi/base.py", line 348, in check_call
+        raise get_last_ffi_error()
+    tvm._ffi.base.TVMError: Traceback (most recent call last):
+      60: 0xffffffffffffffff
+      59: _start
+      58: __libc_start_main
+      57: main
+      56: Py_Main
+      55: 0x00000000006383ca
+      54: PyObject_Call
+      53: 0x000000000058961c
+      52: 0x0000000000507f93
+      51: _PyEval_EvalFrameDefault
+      50: 0x000000000050a6bc
+      49: 0x0000000000509cbf
+      48: 0x0000000000507f93
+      47: _PyEval_EvalFrameDefault
+      46: 0x000000000050a4ee
+      45: 0x0000000000516584
+      44: 0x0000000000507f93
+      43: _PyEval_EvalFrameDefault
+      42: 0x000000000050a6bc
+      41: 0x0000000000509cbf
+      40: 0x0000000000507f93
+      39: _PyEval_EvalFrameDefault
+      38: PyObject_Call
+      37: 0x0000000000589590
+      36: 0x0000000000507f93
+      35: _PyEval_EvalFrameDefault
+      34: PyObject_CallFunctionObjArgs
+      33: _PyObject_FastCallDict
+      32: 0x0000000000595350
+      31: _PyFunction_FastCallDict
+      30: _PyEval_EvalFrameDefault
+      29: 0x000000000050a4ee
+      28: 0x0000000000626e38
+      27: 0x0000000000626c1f
+      26: 0x000000000058eb57
+      25: _PyEval_EvalFrameDefault
+      24: 0x000000000050a6bc
+      23: 0x0000000000509988
+      22: _PyEval_EvalFrameDefault
+      21: 0x000000000050a6bc
+      20: 0x0000000000509988
+      19: _PyEval_EvalFrameDefault
+      18: 0x000000000050a6bc
+      17: 0x0000000000509cbf
+      16: 0x0000000000507f93
+      15: _PyEval_EvalFrameDefault
+      14: 0x000000000050a7f2
+      13: _PyObject_FastCallKeywords
+      12: 0x00007f1aafd34c12
+      11: _ctypes_callproc
+      10: ffi_call
+      9: ffi_call_unix64
+      8: TVMModGetFunction
+            at /workspace/src/runtime/c_runtime_api.cc:408
+      7: tvm::runtime::ModuleNode::GetFunction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)
+            at /workspace/src/runtime/module.cc:66
+      6: tvm::runtime::RPCModuleNode::GetFunction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, tvm::runtime::ObjectPtr<tvm::runtime::Object> const&)
+            at /workspace/src/runtime/rpc/rpc_module.cc:179
+      5: tvm::runtime::RPCClientSession::GetFunction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
+            at /workspace/src/runtime/rpc/rpc_endpoint.cc:1004
+      4: tvm::runtime::TVMRetValue tvm::runtime::RPCEndpoint::SysCallRemote<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(tvm::runtime::RPCCode, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
+            at /workspace/src/runtime/rpc/rpc_endpoint.h:209
+      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(int&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const
+            at /workspace/include/tvm/runtime/packed_func.h:1618
+      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
+            at /workspace/include/tvm/runtime/packed_func.h:1217
+      1: Call
+            at /workspace/include/tvm/runtime/packed_func.h:1213
+      0: operator()
+            at /workspace/src/runtime/rpc/rpc_endpoint.cc:681
+      File "/workspace/src/runtime/rpc/rpc_endpoint.cc", line 681
+    TVMError: 
+    ---------------------------------------------------------------
+    An error occurred during the execution of TVM.
+    For more information, please see: https://tvm.apache.org/docs/errors.html
+    ---------------------------------------------------------------
+      Check failed: (code == RPCCode::kReturn) is false: code=1
+
+    Traceback (most recent call last):
+      60: 0xffffffffffffffff
+      59: _start
+      58: __libc_start_main
+      57: main
+      56: Py_Main
+      55: 0x00000000006383ca
+      54: PyObject_Call
+      53: 0x000000000058961c
+      52: 0x0000000000507f93
+      51: _PyEval_EvalFrameDefault
+      50: 0x000000000050a6bc
+      49: 0x0000000000509cbf
+      48: 0x0000000000507f93
+      47: _PyEval_EvalFrameDefault
+      46: 0x000000000050a4ee
+      45: 0x0000000000516584
+      44: 0x0000000000507f93
+      43: _PyEval_EvalFrameDefault
+      42: 0x000000000050a6bc
+      41: 0x0000000000509cbf
+      40: 0x0000000000507f93
+      39: _PyEval_EvalFrameDefault
+      38: PyObject_Call
+      37: 0x0000000000589590
+      36: 0x0000000000507f93
+      35: _PyEval_EvalFrameDefault
+      34: PyObject_CallFunctionObjArgs
+      33: _PyObject_FastCallDict
+      32: 0x0000000000595350
+      31: _PyFunction_FastCallDict
+      30: _PyEval_EvalFrameDefault
+      29: 0x000000000050a4ee
+      28: 0x0000000000626e38
+      27: 0x0000000000626c1f
+      26: 0x000000000058eb57
+      25: _PyEval_EvalFrameDefault
+      24: 0x000000000050a6bc
+      23: 0x0000000000509988
+      22: _PyEval_EvalFrameDe       [('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: 144.43/144.43   result: MeasureResult(costs=(0.00160282077,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.4138598442077637, timestamp=1647466315.689689)       [('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
 
 
 
@@ -316,7 +2450,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.001956
+    Time cost of this operator: 0.001982
 
 
 
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 6c2f0c5..935221d 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:282: UserWarning: Try specifying cuda arch by adding 'arch=sm_xx' to your target.
+    /workspace/python/tvm/target/target.py:288: 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 6380bb6..9bc6ce0 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  302.9     98.73    (1, 2, 10, 10, 3)  2       1        
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.976     0.97     (1, 6, 10, 10)     1       1        
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.92      0.3      (1, 1, 10, 10, 3)  1       1        
-    Total_time                                    -                                             306.797   -        -                  -       -        
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  313.0     98.753   (1, 2, 10, 10, 3)  2       1        
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       3.0       0.947    (1, 6, 10, 10)     1       1        
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.953     0.301    (1, 1, 10, 10, 3)  1       1        
+    Total_time                                    -                                             316.953   -        -                  -       -        
 
 
 
@@ -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  79.6      96.785   (1, 6, 10, 10, 1)  2       1        
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.7       2.067    (1, 6, 10, 10)     1       1        
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.944     1.148    (1, 1, 10, 10, 3)  1       1        
-    Total_time                                    -                                             82.244    -        -                  -       -        
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  92.6      97.204   (1, 6, 10, 10, 1)  2       1        
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.741     1.828    (1, 6, 10, 10)     1       1        
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.922     0.968    (1, 1, 10, 10, 3)  1       1        
+    Total_time                                    -                                             95.263    -        -                  -       -        
 
 
 
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_tflite.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_tflite.rst.txt
index b089253..631465c 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_tflite.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_tflite.rst.txt
@@ -365,12 +365,9 @@ Now, compile the model for the target:
     #ifdef __cplusplus
     extern "C"
     #endif
-    TVM_DLL int32_t tvmgen_default_fused_nn_dense_add_nn_relu_1(void* args, void* arg_type_ids, int32_t num_args, void* out_ret_value, void* out_ret_tcode, void* resource_handle) {
-      void* arg0 = (((TVMValue*)args)[0].v_handle);
+    TVM_DLL int32_t tvmgen_default_fused_nn_dense_add(void* args, int32_t* arg_type_ids, int32_t num_args, void* out_ret_value, int32_t* out_ret_tcode, void* resource_handle) {
+      void* arg_placeholder = (((TVMValue*)args)[0].v_handle);
      - .
-     - ./src
-     - ./src/relay.txt
-     - ./metadata.json
      - ./codegen
      - ./codegen/host
      - ./codegen/host/src
@@ -381,6 +378,9 @@ Now, compile the model for the target:
      - ./executor-config/graph/graph.json
      - ./parameters
      - ./parameters/default.params
+     - ./metadata.json
+     - ./src
+     - ./src/relay.txt
 
 
 
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 4f518ee..3f75eea 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:46.457** total execution time for **how_to_work_with_microtvm** files:
+**00:48.468** total execution time for **how_to_work_with_microtvm** files:
 
-- **00:42.218**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)
-- **00:03.665**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)
-- **00:00.202**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_ethosu.py` (``micro_ethosu.py``)
-- **00:00.195**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_reference_vm.py` (``micro_reference_vm.py``)
-- **00:00.177**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_tvmc.py` (``micro_tvmc.py``)
+- **00:44.158**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)
+- **00:03.716**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)
+- **00:00.202**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_reference_vm.py` (``micro_reference_vm.py``)
+- **00:00.196**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_ethosu.py` (``micro_ethosu.py``)
+- **00:00.195**: :ref:`sphx_glr_how_to_work_with_microtvm_micro_tvmc.py` (``micro_tvmc.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 28cdea4..e6b54bf 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:04.508** total execution time for **how_to_work_with_relay** files:
+**00:04.646** total execution time for **how_to_work_with_relay** files:
 
-- **00:02.424**: :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)
-- **00:01.880**: :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)
-- **00:00.204**: :ref:`sphx_glr_how_to_work_with_relay_using_relay_viz.py` (``using_relay_viz.py``)
+- **00:02.572**: :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)
+- **00:01.855**: :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)
+- **00:00.219**: :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_relay/using_relay_viz.rst.txt b/docs/_sources/how_to/work_with_relay/using_relay_viz.rst.txt
index 2985715..6411288 100644
--- a/docs/_sources/how_to/work_with_relay/using_relay_viz.rst.txt
+++ b/docs/_sources/how_to/work_with_relay/using_relay_viz.rst.txt
@@ -24,6 +24,8 @@ Here we use a renderer rendering graph in the text-form.
 It is a lightweight, AST-like visualizer, inspired by `clang ast-dump <https://clang.llvm.org/docs/IntroductionToTheClangAST.html>`_.
 We will introduce how to implement customized parsers and renderers through interface classes.
 
+For more details, please refer to :py:mod:`tvm.contrib.relay_viz`.
+
 
 .. code-block:: default
 
diff --git a/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt b/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
index e108835..b22d798 100644
--- a/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
@@ -84,10 +84,10 @@ In the following example, we use :any:`tvm.tir.call_pure_extern` to call
     #endif
     extern "C" __global__ void __launch_bounds__(64) myexp_kernel0(float* __restrict__ B, float* __restrict__ A, int n, int stride, int stride1) {
       if (((int)blockIdx.x) < (n >> 6)) {
-        B[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1))] = __expf(A[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride))]);
+        B[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride)] = __expf(A[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1)]);
       } else {
         if (((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) < n) {
-          B[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1))] = __expf(A[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride))]);
+          B[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride)] = __expf(A[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1)]);
         }
       }
     }
@@ -148,10 +148,10 @@ The following code use te.exp instead, which create an intrinsic call
     #endif
     extern "C" __global__ void __launch_bounds__(64) myexp_kernel0(float* __restrict__ B, float* __restrict__ A, int n, int stride, int stride1) {
       if (((int)blockIdx.x) < (n >> 6)) {
-        B[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1))] = __expf(A[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride))]);
+        B[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride)] = __expf(A[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1)]);
       } else {
         if (((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) < n) {
-          B[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1))] = __expf(A[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride))]);
+          B[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride)] = __expf(A[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1)]);
         }
       }
     }
@@ -183,10 +183,10 @@ The same te.exp can also be used for float64 data types.
     // Function: myexp_kernel0
     __kernel void myexp_kernel0(__global float* restrict B, __global float* restrict A, int n, int stride, int stride1) {
       if (((int)get_group_id(0)) < (n >> 6)) {
-        B[((((((int)get_group_id(0)) * 64) + ((int)get_local_id(0))) * stride1))] = exp(A[((((((int)get_group_id(0)) * 64) + ((int)get_local_id(0))) * stride))]);
+        B[(((((int)get_group_id(0)) * 64) + ((int)get_local_id(0))) * stride)] = exp(A[(((((int)get_group_id(0)) * 64) + ((int)get_local_id(0))) * stride1)]);
       } else {
         if (((((int)get_group_id(0)) * 64) + ((int)get_local_id(0))) < n) {
-          B[((((((int)get_group_id(0)) * 64) + ((int)get_local_id(0))) * stride1))] = exp(A[((((((int)get_group_id(0)) * 64) + ((int)get_local_id(0))) * stride))]);
+          B[(((((int)get_group_id(0)) * 64) + ((int)get_local_id(0))) * stride)] = exp(A[(((((int)get_group_id(0)) * 64) + ((int)get_local_id(0))) * stride1)]);
         }
       }
     }
@@ -272,10 +272,10 @@ fast math version :code:`__expf`.
     #endif
     extern "C" __global__ void __launch_bounds__(64) myexp_kernel0(float* __restrict__ B, float* __restrict__ A, int n, int stride, int stride1) {
       if (((int)blockIdx.x) < (n >> 6)) {
-        B[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1))] = expf(A[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride))]);
+        B[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride)] = expf(A[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1)]);
       } else {
         if (((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) < n) {
-          B[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1))] = expf(A[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride))]);
+          B[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride)] = expf(A[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1)]);
         }
       }
     }
@@ -352,10 +352,10 @@ The following example add an intrinsic :code:`mylog` to the system.
     #endif
     extern "C" __global__ void __launch_bounds__(64) mylog_kernel0(float* __restrict__ B, float* __restrict__ A, int n, int stride, int stride1) {
       if (((int)blockIdx.x) < (n >> 6)) {
-        B[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1))] = logf(A[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride))]);
+        B[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride)] = logf(A[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1)]);
       } else {
         if (((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) < n) {
-          B[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1))] = logf(A[((((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride))]);
+          B[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride)] = logf(A[(((((int)blockIdx.x) * 64) + ((int)threadIdx.x)) * stride1)]);
         }
       }
     }
diff --git a/docs/_sources/how_to/work_with_schedules/reduction.rst.txt b/docs/_sources/how_to/work_with_schedules/reduction.rst.txt
index 264149c..1d9777c 100644
--- a/docs/_sources/how_to/work_with_schedules/reduction.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/reduction.rst.txt
@@ -95,13 +95,13 @@ Before doing anything, let us print out the IR code of default schedule.
 
     @main = primfn(A_1: handle, B_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [n: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [n, m: int32], [stride_1: int32, stride_2: int32], type="auto")}
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [(stride: int32*n: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*n)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B} {
       for (i: int32, 0, n) {
-        B_2[(i*stride)] = 0f32
-        for (k: int32, 0, m) {
-          B_2[(i*stride)] = ((float32*)B_2[(i*stride)] + (float32*)A_2[((i*stride_1) + (k*stride_2))])
+        B[(i*stride)] = 0f32
+        for (k: int32, 0, m: int32) {
+          B[(i*stride)] = (B[(i*stride)] + A[((i*stride_1) + (k*stride_2: int32))])
         }
       }
     }
@@ -136,20 +136,20 @@ axis by different factors. The result is a nested reduction.
 
     @main = primfn(A_1: handle, B_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [n: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [n, m: int32], [stride_1: int32, stride_2: int32], type="auto")}
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [(stride: int32*n: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*n)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B} {
       for (i.outer: int32, 0, floordiv((n + 31), 32)) {
         for (i.inner: int32, 0, 32) {
           if @tir.likely((((i.outer*32) + i.inner) < n), dtype=bool) {
-            B_2[(((i.outer*32) + i.inner)*stride)] = 0f32
+            B[(((i.outer*32) + i.inner)*stride)] = 0f32
           }
           if @tir.likely((((i.outer*32) + i.inner) < n), dtype=bool) {
-            for (k.outer: int32, 0, floordiv((m + 15), 16)) {
+            for (k.outer: int32, 0, floordiv((m: int32 + 15), 16)) {
               for (k.inner: int32, 0, 16) {
                 if @tir.likely((((k.outer*16) + k.inner) < m), dtype=bool) {
                   let cse_var_1: int32 = ((i.outer*32) + i.inner)
-                  B_2[(cse_var_1*stride)] = ((float32*)B_2[(cse_var_1*stride)] + (float32*)A_2[((cse_var_1*stride_1) + (((k.outer*16) + k.inner)*stride_2))])
+                  B[(cse_var_1*stride)] = (B[(cse_var_1*stride)] + A[((cse_var_1*stride_1) + (((k.outer*16) + k.inner)*stride_2: int32))])
                 }
               }
             }
@@ -183,19 +183,19 @@ If we are building a GPU kernel, we can bind the rows of B to GPU threads.
 
     @main = primfn(A_1: handle, B_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [n: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [n, m: int32], [stride_1: int32, stride_2: int32], type="auto")}
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [(stride: int32*n: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*n)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B} {
       attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = floordiv((n + 31), 32);
       attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 32 {
         if @tir.likely((((blockIdx.x*32) + threadIdx.x) < n), dtype=bool) {
-          B_2[(((blockIdx.x*32) + threadIdx.x)*stride)] = 0f32
+          B[(((blockIdx.x*32) + threadIdx.x)*stride)] = 0f32
         }
-        for (k.outer: int32, 0, floordiv((m + 15), 16)) {
+        for (k.outer: int32, 0, floordiv((m: int32 + 15), 16)) {
           for (k.inner: int32, 0, 16) {
             if @tir.likely((((blockIdx.x*32) + threadIdx.x) < n), dtype=bool) {
               if @tir.likely((((k.outer*16) + k.inner) < m), dtype=bool) {
-                B_2[(((blockIdx.x*32) + threadIdx.x)*stride)] = ((float32*)B_2[(((blockIdx.x*32) + threadIdx.x)*stride)] + (float32*)A_2[((((blockIdx.x*32) + threadIdx.x)*stride_1) + (((k.outer*16) + k.inner)*stride_2))])
+                B[(((blockIdx.x*32) + threadIdx.x)*stride)] = (B[(((blockIdx.x*32) + threadIdx.x)*stride)] + A[((((blockIdx.x*32) + threadIdx.x)*stride_1) + (((k.outer*16) + k.inner)*stride_2: int32))])
               }
             }
           }
@@ -239,24 +239,24 @@ result B.rf. The factored dimension becomes the first dimension of B.rf.
 
     @main = primfn(A_1: handle, B_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [n: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [n, m: int32], [stride_1: int32, stride_2: int32], type="auto")}
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [(stride: int32*n: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*n)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B} {
       allocate(B.rf: Pointer(global float32), float32, [(n*16)]), storage_scope = global {
         for (k.inner: int32, 0, 16) {
           for (i: int32, 0, n) {
-            B.rf[((k.inner*n) + i)] = 0f32
-            for (k.outer: int32, 0, floordiv((m + 15), 16)) {
+            B.rf_1: Buffer(B.rf, float32, [(16*n)], [])[((k.inner*n) + i)] = 0f32
+            for (k.outer: int32, 0, floordiv((m: int32 + 15), 16)) {
               if @tir.likely((((k.outer*16) + k.inner) < m), dtype=bool) {
-                B.rf[((k.inner*n) + i)] = ((float32*)B.rf[((k.inner*n) + i)] + (float32*)A_2[((i*stride_1) + (((k.outer*16) + k.inner)*stride_2))])
+                B.rf_1[((k.inner*n) + i)] = (B.rf_1[((k.inner*n) + i)] + A[((i*stride_1) + (((k.outer*16) + k.inner)*stride_2: int32))])
               }
             }
           }
         }
         for (ax0: int32, 0, n) {
-          B_2[(ax0*stride)] = 0f32
+          B[(ax0*stride)] = 0f32
           for (k.inner.v: int32, 0, 16) {
-            B_2[(ax0*stride)] = ((float32*)B_2[(ax0*stride)] + (float32*)B.rf[((k.inner.v*n) + ax0)])
+            B[(ax0*stride)] = (B[(ax0*stride)] + B.rf_1[((k.inner.v*n) + ax0)])
           }
         }
       }
@@ -354,34 +354,34 @@ columns by threadIdx.x and finally do a cross thread reduction over threadIdx.x
     extern "C" __global__ void __launch_bounds__(512) default_function_kernel0(float* __restrict__ A, float* __restrict__ B, int m, int n, int stride, int stride1, int stride2) {
       float B_rf[1];
       float red_buf0[1];
-      B_rf[(0)] = 0.000000e+00f;
+      B_rf[0] = 0.000000e+00f;
       for (int k_outer = 0; k_outer < (m >> 4); ++k_outer) {
         if (((((int)blockIdx.x) * 32) + ((int)threadIdx.y)) < n) {
-          B_rf[(0)] = (B_rf[(0)] + A[(((((((int)blockIdx.x) * 32) + ((int)threadIdx.y)) * stride) + (((k_outer * 16) + ((int)threadIdx.x)) * stride1)))]);
+          B_rf[0] = (B_rf[0] + A[((((((int)blockIdx.x) * 32) + ((int)threadIdx.y)) * stride) + (((k_outer * 16) + ((int)threadIdx.x)) * stride1))]);
         }
       }
       for (int k_outer1 = 0; k_outer1 < (((m & 15) + 15) >> 4); ++k_outer1) {
         if (((((int)blockIdx.x) * 32) + ((int)threadIdx.y)) < n) {
           if (((((m >> 4) * 16) + (k_outer1 * 16)) + ((int)threadIdx.x)) < m) {
-            B_rf[(0)] = (B_rf[(0)] + A[(((((((int)blockIdx.x) * 32) + ((int)threadIdx.y)) * stride) + (((((m >> 4) * 16) + (k_outer1 * 16)) + ((int)threadIdx.x)) * stride1)))]);
+            B_rf[0] = (B_rf[0] + A[((((((int)blockIdx.x) * 32) + ((int)threadIdx.y)) * stride) + (((((m >> 4) * 16) + (k_outer1 * 16)) + ((int)threadIdx.x)) * stride1))]);
           }
         }
       }
       uint mask[1];
       float t0[1];
-      red_buf0[(0)] = B_rf[(0)];
-      mask[(0)] = (__activemask() & ((uint)(65535 << (((int)threadIdx.y) * 16))));
-      t0[(0)] = __shfl_down_sync(mask[(0)], red_buf0[(0)], 8, 32);
-      red_buf0[(0)] = (red_buf0[(0)] + t0[(0)]);
-      t0[(0)] = __shfl_down_sync(mask[(0)], red_buf0[(0)], 4, 32);
-      red_buf0[(0)] = (red_buf0[(0)] + t0[(0)]);
-      t0[(0)] = __shfl_down_sync(mask[(0)], red_buf0[(0)], 2, 32);
-      red_buf0[(0)] = (red_buf0[(0)] + t0[(0)]);
-      t0[(0)] = __shfl_down_sync(mask[(0)], red_buf0[(0)], 1, 32);
-      red_buf0[(0)] = (red_buf0[(0)] + t0[(0)]);
-      red_buf0[(0)] = __shfl_sync(mask[(0)], red_buf0[(0)], (((int)threadIdx.y) * 16), 32);
+      red_buf0[0] = B_rf[0];
+      mask[0] = (__activemask() & ((uint)(65535 << (((int)threadIdx.y) * 16))));
+      t0[0] = __shfl_down_sync(mask[0], red_buf0[0], 8, 32);
+      red_buf0[0] = (red_buf0[0] + t0[0]);
+      t0[0] = __shfl_down_sync(mask[0], red_buf0[0], 4, 32);
+      red_buf0[0] = (red_buf0[0] + t0[0]);
+      t0[0] = __shfl_down_sync(mask[0], red_buf0[0], 2, 32);
+      red_buf0[0] = (red_buf0[0] + t0[0]);
+      t0[0] = __shfl_down_sync(mask[0], red_buf0[0], 1, 32);
+      red_buf0[0] = (red_buf0[0] + t0[0]);
+      red_buf0[0] = __shfl_sync(mask[0], red_buf0[0], (((int)threadIdx.y) * 16), 32);
       if (((int)threadIdx.x) == 0) {
-        B[((((((int)blockIdx.x) * 32) + ((int)threadIdx.y)) * stride2))] = red_buf0[(0)];
+        B[(((((int)blockIdx.x) * 32) + ((int)threadIdx.y)) * stride2)] = red_buf0[0];
       }
     }
 
@@ -442,16 +442,16 @@ Here is an example for 2D convolution with filter size = [3, 3] and strides = [1
 
     @main = primfn(Input_1: handle, Filter_1: handle, Output_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {Output: Buffer(Output_2: Pointer(float32), float32, [(n: int32 - 2), (n - 2)], []),
-                 Input: Buffer(Input_2: Pointer(float32), float32, [n, n], [stride: int32, stride_1: int32], type="auto"),
-                 Filter: Buffer(Filter_2: Pointer(float32), float32, [3, 3], [])}
+      buffers = {Output: Buffer(Output_2: Pointer(float32), float32, [((n: int32 - 2)*(n - 2))], []),
+                 Input: Buffer(Input_2: Pointer(float32), float32, [(stride: int32*n)], [], type="auto"),
+                 Filter: Buffer(Filter_2: Pointer(float32), float32, [9], [])}
       buffer_map = {Input_1: Input, Filter_1: Filter, Output_1: Output} {
       for (i: int32, 0, (n - 2)) {
         for (j: int32, 0, (n - 2)) {
-          Output_2[((i*(n - 2)) + j)] = 0f32
+          Output[((i*(n - 2)) + j)] = 0f32
           for (di: int32, 0, 3) {
             for (dj: int32, 0, 3) {
-              Output_2[((i*(n - 2)) + j)] = ((float32*)Output_2[((i*(n - 2)) + j)] + ((float32*)Input_2[(((i + di)*stride) + ((j + dj)*stride_1))]*(float32*)Filter_2[((di*3) + dj)]))
+              Output[((i*(n - 2)) + j)] = (Output[((i*(n - 2)) + j)] + (Input[(((i + di)*stride) + ((j + dj)*stride_1: int32))]*Filter[((di*3) + dj)]))
             }
           }
         }
diff --git a/docs/_sources/how_to/work_with_schedules/scan.rst.txt b/docs/_sources/how_to/work_with_schedules/scan.rst.txt
index b2f2486..6966557 100644
--- a/docs/_sources/how_to/work_with_schedules/scan.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/scan.rst.txt
@@ -101,20 +101,20 @@ To split on the time iteration, user can schedule on scan_op.scan_axis instead.
 
     @main = primfn(X_1: handle, scan_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {scan: Buffer(scan_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 X: Buffer(X_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto")}
+      buffers = {scan: Buffer(scan_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 X: Buffer(X_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto")}
       buffer_map = {X_1: X, scan_1: scan} {
-      attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = floordiv((n + 255), 256);
+      attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = floordiv((n: int32 + 255), 256);
       attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 256;
       if @tir.likely((((blockIdx.x*256) + threadIdx.x) < n), dtype=bool) {
-        scan_2[(((blockIdx.x*256) + threadIdx.x)*stride_1)] = (float32*)X_2[(((blockIdx.x*256) + threadIdx.x)*stride_3)]
+        scan[(((blockIdx.x*256) + threadIdx.x)*stride_2: int32)] = X[(((blockIdx.x*256) + threadIdx.x)*stride_3: int32)]
       }
       for (scan.idx: int32, 0, (m - 1)) {
         attr [IterVar(blockIdx.x, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = floordiv((n + 255), 256);
         attr [IterVar(threadIdx.x, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 256;
         if @tir.likely((((blockIdx.x*256) + threadIdx.x) < n), dtype=bool) {
           let cse_var_1: int32 = (scan.idx + 1)
-          scan_2[((cse_var_1*stride) + (((blockIdx.x*256) + threadIdx.x)*stride_1))] = ((float32*)scan_2[((scan.idx*stride) + (((blockIdx.x*256) + threadIdx.x)*stride_1))] + (float32*)X_2[((cse_var_1*stride_2) + (((blockIdx.x*256) + threadIdx.x)*stride_3))])
+          scan[((cse_var_1*stride) + (((blockIdx.x*256) + threadIdx.x)*stride_2))] = (scan[((scan.idx*stride) + (((blockIdx.x*256) + threadIdx.x)*stride_2))] + X[((cse_var_1*stride_1) + (((blockIdx.x*256) + threadIdx.x)*stride_3))])
         }
       }
     }
@@ -201,25 +201,25 @@ the body of scan to be compute_at locations outside the scan loop.
 
     @main = primfn(X_1: handle, scan_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {scan: Buffer(scan_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 X: Buffer(X_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto")}
+      buffers = {scan: Buffer(scan_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 X: Buffer(X_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto")}
       buffer_map = {X_1: X, scan_1: scan} {
       allocate(s1: Pointer(global float32), float32, [32]), storage_scope = global {
-        for (i: int32, 0, n) {
-          scan_2[(i*stride_1)] = (float32*)X_2[(i*stride_3)]
+        for (i: int32, 0, n: int32) {
+          scan[(i*stride_2: int32)] = X[(i*stride_3: int32)]
         }
         for (scan.idx: int32, 0, (m - 1)) {
           for (i.outer: int32, 0, floordiv((n + 31), 32)) {
             for (i_1: int32, 0, 32) {
               if @tir.likely((((i.outer*32) + i_1) < n), dtype=bool) {
-                s1[i_1] = ((float32*)scan_2[((scan.idx*stride) + (((i.outer*32) + i_1)*stride_1))]*2f32)
+                s1_1: Buffer(s1, float32, [32], [])[i_1] = (scan[((scan.idx*stride) + (((i.outer*32) + i_1)*stride_2))]*2f32)
               }
             }
             for (i.inner: int32, 0, 32) {
               if @tir.likely((((i.outer*32) + i.inner) < n), dtype=bool) {
                 let cse_var_2: int32 = (scan.idx + 1)
                 let cse_var_1: int32 = ((i.outer*32) + i.inner)
-                scan_2[((cse_var_2*stride) + (cse_var_1*stride_1))] = ((float32*)s1[i.inner] + (float32*)X_2[((cse_var_2*stride_2) + (cse_var_1*stride_3))])
+                scan[((cse_var_2*stride) + (cse_var_1*stride_2))] = (s1_1[i.inner] + X[((cse_var_2*stride_1) + (cse_var_1*stride_3))])
               }
             }
           }
@@ -269,23 +269,23 @@ The following example demonstrates how we can build recurrence with two states.
 
     @main = primfn(X_1: handle, scan_2: handle, scan_3: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {scan_1: Buffer(scan_4: Pointer(float32), float32, [m: int32, l: int32], [stride: int32, stride_1: int32], type="auto"),
-                 X: Buffer(X_2: Pointer(float32), float32, [m, n: int32], [stride_2: int32, stride_3: int32], type="auto"),
-                 scan: Buffer(scan_5: Pointer(float32), float32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
+      buffers = {scan_1: Buffer(scan_4: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 X: Buffer(X_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto"),
+                 scan: Buffer(scan_5: Pointer(float32), float32, [(stride_2: int32*m)], [], type="auto")}
       buffer_map = {X_1: X, scan_2: scan, scan_3: scan_1} {
-      for (i: int32, 0, n) {
-        scan_5[(i*stride_5)] = (float32*)X_2[(i*stride_3)]
+      for (i: int32, 0, n: int32) {
+        scan[(i*stride_3: int32)] = X[(i*stride_4: int32)]
       }
-      for (i_1: int32, 0, l) {
-        scan_4[(i_1*stride_1)] = 0f32
+      for (i_1: int32, 0, l: int32) {
+        scan_1[(i_1*stride_5: int32)] = 0f32
       }
       for (scan.idx: int32, 0, (m - 1)) {
         for (i_2: int32, 0, n) {
           let cse_var_1: int32 = (scan.idx + 1)
-          scan_5[((cse_var_1*stride_4) + (i_2*stride_5))] = ((float32*)scan_5[((scan.idx*stride_4) + (i_2*stride_5))] + (float32*)X_2[((cse_var_1*stride_2) + (i_2*stride_3))])
+          scan[((cse_var_1*stride_2) + (i_2*stride_3))] = (scan[((scan.idx*stride_2) + (i_2*stride_3))] + X[((cse_var_1*stride_1) + (i_2*stride_4))])
         }
         for (i_3: int32, 0, l) {
-          scan_4[(((scan.idx + 1)*stride) + (i_3*stride_1))] = ((float32*)scan_4[((scan.idx*stride) + (i_3*stride_1))] + (float32*)scan_5[(scan.idx*stride_4)])
+          scan_1[(((scan.idx + 1)*stride) + (i_3*stride_5))] = (scan_1[((scan.idx*stride) + (i_3*stride_5))] + scan[(scan.idx*stride_2)])
         }
       }
     }
diff --git a/docs/_sources/how_to/work_with_schedules/schedule_primitives.rst.txt b/docs/_sources/how_to/work_with_schedules/schedule_primitives.rst.txt
index 5b55409..b9b7ead 100644
--- a/docs/_sources/how_to/work_with_schedules/schedule_primitives.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/schedule_primitives.rst.txt
@@ -87,13 +87,13 @@ schedule computes tensor in a serial manner in a row-major order.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
-                 B: Buffer(B_2: Pointer(float32), float32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto"),
+                 B: Buffer(B_2: Pointer(float32), float32, [(stride_2: int32*m)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, m) {
-        for (j: int32, 0, n) {
-          C_2[((i*stride) + (j*stride_1))] = ((float32*)A_2[((i*stride_2) + (j*stride_3))]*(float32*)B_2[((i*stride_4) + (j*stride_5))])
+        for (j: int32, 0, n: int32) {
+          C[((i*stride) + (j*stride_3: int32))] = (A[((i*stride_1) + (j*stride_4: int32))]*B[((i*stride_2) + (j*stride_5: int32))])
         }
       }
     }
@@ -133,14 +133,14 @@ split
 
     @main = primfn(A_1: handle, B_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto")}
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B} {
       for (i.outer: int32, 0, floordiv((m + 31), 32)) {
         for (i.inner: int32, 0, 32) {
           if @tir.likely((((i.outer*32) + i.inner) < m), dtype=bool) {
             let cse_var_1: int32 = ((i.outer*32) + i.inner)
-            B_2[(cse_var_1*stride)] = ((float32*)A_2[(cse_var_1*stride_1)]*2f32)
+            B[(cse_var_1*stride)] = (A[(cse_var_1*stride_1)]*2f32)
           }
         }
       }
@@ -175,13 +175,13 @@ contrary with :code:`factor`.
 
     @main = primfn(A_1: handle, B_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto")}
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B} {
       for (i.outer: int32, 0, 32) {
         for (i.inner: int32, 0, floordiv((m + 31), 32)) {
           if @tir.likely(((i.inner + (i.outer*floordiv((m + 31), 32))) < m), dtype=bool) {
-            B_2[((i.inner + (i.outer*floordiv((m + 31), 32)))*stride)] = (float32*)A_2[((i.inner + (i.outer*floordiv((m + 31), 32)))*stride_1)]
+            B[((i.inner + (i.outer*floordiv((m + 31), 32)))*stride)] = A[((i.inner + (i.outer*floordiv((m + 31), 32)))*stride_1)]
           }
         }
       }
@@ -218,18 +218,18 @@ axes.
 
     @main = primfn(A_1: handle, B_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto")}
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B} {
       for (i.outer: int32, 0, floordiv((m + 9), 10)) {
-        for (j.outer: int32, 0, floordiv((n + 4), 5)) {
+        for (j.outer: int32, 0, floordiv((n: int32 + 4), 5)) {
           for (i.inner: int32, 0, 10) {
             if @tir.likely((((i.outer*10) + i.inner) < m), dtype=bool) {
               for (j.inner: int32, 0, 5) {
                 if @tir.likely((((j.outer*5) + j.inner) < n), dtype=bool) {
                   let cse_var_2: int32 = ((j.outer*5) + j.inner)
                   let cse_var_1: int32 = ((i.outer*10) + i.inner)
-                  B_2[((cse_var_1*stride) + (cse_var_2*stride_1))] = (float32*)A_2[((cse_var_1*stride_2) + (cse_var_2*stride_3))]
+                  B[((cse_var_1*stride) + (cse_var_2*stride_2: int32))] = A[((cse_var_1*stride_1) + (cse_var_2*stride_3: int32))]
                 }
               }
             }
@@ -271,17 +271,17 @@ fuse
 
     @main = primfn(A_1: handle, B_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto")}
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B} {
       for (i.outer: int32, 0, floordiv((m + 9), 10)) {
-        for (j.outer: int32, 0, floordiv((n + 4), 5)) {
+        for (j.outer: int32, 0, floordiv((n: int32 + 4), 5)) {
           for (i.inner.j.inner.fused: int32, 0, 50) {
             if @tir.likely((((i.outer*10) + floordiv(i.inner.j.inner.fused, 5)) < m), dtype=bool) {
               if @tir.likely((((j.outer*5) + floormod(i.inner.j.inner.fused, 5)) < n), dtype=bool) {
                 let cse_var_2: int32 = ((j.outer*5) + floormod(i.inner.j.inner.fused, 5))
                 let cse_var_1: int32 = ((i.outer*10) + floordiv(i.inner.j.inner.fused, 5))
-                B_2[((cse_var_1*stride) + (cse_var_2*stride_1))] = (float32*)A_2[((cse_var_1*stride_2) + (cse_var_2*stride_3))]
+                B[((cse_var_1*stride) + (cse_var_2*stride_2: int32))] = A[((cse_var_1*stride_1) + (cse_var_2*stride_3: int32))]
               }
             }
           }
@@ -322,18 +322,18 @@ reorder
 
     @main = primfn(A_1: handle, B_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto")}
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B} {
       for (i.inner: int32, 0, 10) {
-        for (j.outer: int32, 0, floordiv((n + 4), 5)) {
+        for (j.outer: int32, 0, floordiv((n: int32 + 4), 5)) {
           for (i.outer: int32, 0, floordiv((m + 9), 10)) {
             if @tir.likely((((i.outer*10) + i.inner) < m), dtype=bool) {
               for (j.inner: int32, 0, 5) {
                 if @tir.likely((((j.outer*5) + j.inner) < n), dtype=bool) {
                   let cse_var_2: int32 = ((j.outer*5) + j.inner)
                   let cse_var_1: int32 = ((i.outer*10) + i.inner)
-                  B_2[((cse_var_1*stride) + (cse_var_2*stride_1))] = (float32*)A_2[((cse_var_1*stride_2) + (cse_var_2*stride_3))]
+                  B[((cse_var_1*stride) + (cse_var_2*stride_2: int32))] = A[((cse_var_1*stride_1) + (cse_var_2*stride_3: int32))]
                 }
               }
             }
@@ -375,13 +375,13 @@ in gpu programming.
 
     @main = primfn(A_1: handle, B_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [n: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [n], [stride_1: int32], type="auto")}
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [(stride: int32*n: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*n)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B} {
       attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = floordiv((n + 63), 64);
       attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
       if @tir.likely((((blockIdx.x*64) + threadIdx.x) < n), dtype=bool) {
-        B_2[(((blockIdx.x*64) + threadIdx.x)*stride)] = ((float32*)A_2[(((blockIdx.x*64) + threadIdx.x)*stride_1)]*2f32)
+        B[(((blockIdx.x*64) + threadIdx.x)*stride)] = (A[(((blockIdx.x*64) + threadIdx.x)*stride_1)]*2f32)
       }
     }
 
@@ -416,15 +416,15 @@ tensors at the root separately by default.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
-                 B: Buffer(B_2: Pointer(float32), float32, [m], [stride_2: int32], type="auto")}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto"),
+                 B: Buffer(B_2: Pointer(float32), float32, [(stride_2: int32*m)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, m) {
-        B_2[(i*stride_2)] = ((float32*)A_2[(i*stride_1)] + 1f32)
+        B[(i*stride_2)] = (A[(i*stride_1)] + 1f32)
       }
       for (i_1: int32, 0, m) {
-        C_2[(i_1*stride)] = ((float32*)B_2[(i_1*stride_2)]*2f32)
+        C[(i_1*stride)] = (B[(i_1*stride_2)]*2f32)
       }
     }
 
@@ -458,13 +458,13 @@ of computation of `C`.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
-                 B: Buffer(B_2: Pointer(float32), float32, [m], [stride_2: int32], type="auto")}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto"),
+                 B: Buffer(B_2: Pointer(float32), float32, [(stride_2: int32*m)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, m) {
-        B_2[(i*stride_2)] = ((float32*)A_2[(i*stride_1)] + 1f32)
-        C_2[(i*stride)] = ((float32*)B_2[(i*stride_2)]*2f32)
+        B[(i*stride_2)] = (A[(i*stride_1)] + 1f32)
+        C[(i*stride)] = (B[(i*stride_2)]*2f32)
       }
     }
 
@@ -501,12 +501,12 @@ tensor is required.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
-                 B: Buffer(B_2: Pointer(float32), float32, [m], [stride_2: int32], type="auto")}
+      buffers = {A: Buffer(A_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 C: Buffer(C_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto"),
+                 B: Buffer(B_2: Pointer(float32), float32, [(stride_2: int32*m)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, m) {
-        C_2[(i*stride)] = (((float32*)A_2[(i*stride_1)] + 1f32)*2f32)
+        C[(i*stride_1)] = ((A[(i*stride)] + 1f32)*2f32)
       }
     }
 
@@ -542,15 +542,15 @@ compute_root
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
-                 B: Buffer(B_2: Pointer(float32), float32, [m], [stride_2: int32], type="auto")}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto"),
+                 B: Buffer(B_2: Pointer(float32), float32, [(stride_2: int32*m)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, m) {
-        B_2[(i*stride_2)] = ((float32*)A_2[(i*stride_1)] + 1f32)
+        B[(i*stride_2)] = (A[(i*stride_1)] + 1f32)
       }
       for (i_1: int32, 0, m) {
-        C_2[(i_1*stride)] = ((float32*)B_2[(i_1*stride_2)]*2f32)
+        C[(i_1*stride)] = (B[(i_1*stride_2)]*2f32)
       }
     }
 
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 e784942..6dcb06b 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.781** total execution time for **how_to_work_with_schedules** files:
+**00:06.155** total execution time for **how_to_work_with_schedules** files:
 
-- **00:02.131**: :ref:`sphx_glr_how_to_work_with_schedules_intrin_math.py` (``intrin_math.py``)
-- **00:01.204**: :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)
-- **00:00.736**: :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)
-- **00:00.727**: :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)
-- **00:00.309**: :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)
-- **00:00.232**: :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``)
-- **00:00.227**: :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)
-- **00:00.214**: :ref:`sphx_glr_how_to_work_with_schedules_tuple_inputs.py` (``tuple_inputs.py``)
+- **00:02.225**: :ref:`sphx_glr_how_to_work_with_schedules_intrin_math.py` (``intrin_math.py``)
+- **00:01.355**: :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)
+- **00:00.770**: :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)
+- **00:00.766**: :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)
+- **00:00.330**: :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)
+- **00:00.244**: :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``)
+- **00:00.240**: :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)
+- **00:00.225**: :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 a26ab6b..28c5969 100644
--- a/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt
@@ -71,16 +71,16 @@ The following lines describe the computation :code:`A * B^T` in TVM.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 512], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 64], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [512, 64], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [524288], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [65536], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [32768], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, 1024) {
         for (j: int32, 0, 512) {
-          C_2[((i*512) + j)] = 0f32
+          C[((i*512) + j)] = 0f32
           for (k: int32, 0, 64) {
             let cse_var_1: int32 = ((i*512) + j)
-            C_2[cse_var_1] = ((float32*)C_2[cse_var_1] + ((float32*)A_2[((i*64) + k)]*(float32*)B_2[((j*64) + k)]))
+            C[cse_var_1] = (C[cse_var_1] + (A[((i*64) + k)]*B[((j*64) + k)]))
           }
         }
       }
@@ -121,17 +121,17 @@ Thus we break down the matmul loops to make the innermost loops a (16x64) GEMV.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 512], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 64], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [512, 64], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [524288], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [65536], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [32768], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, 1024) {
         for (j.outer: int32, 0, 32) {
           for (j.inner: int32, 0, 16) {
-            C_2[(((i*512) + (j.outer*16)) + j.inner)] = 0f32
+            C[(((i*512) + (j.outer*16)) + j.inner)] = 0f32
             for (k: int32, 0, 64) {
               let cse_var_1: int32 = (((i*512) + (j.outer*16)) + j.inner)
-              C_2[cse_var_1] = ((float32*)C_2[cse_var_1] + ((float32*)A_2[((i*64) + k)]*(float32*)B_2[(((j.outer*1024) + (j.inner*64)) + k)]))
+              C[cse_var_1] = (C[cse_var_1] + (A[((i*64) + k)]*B[(((j.outer*1024) + (j.inner*64)) + k)]))
             }
           }
         }
@@ -239,9 +239,9 @@ such placeholder can be put to let TVM automatically bind the inferred value for
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 512], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 64], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [512, 64], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [524288], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [65536], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [32768], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, 1024) {
         for (j.outer: int32, 0, 32) {
@@ -311,12 +311,12 @@ The importing needs to happen before the tensorized GEMV being executed.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 512], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 64], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [512, 64], [])}
+      buffers = {A: Buffer(A_2: Pointer(float32), float32, [65536], []),
+                 C: Buffer(C_2: Pointer(float32), float32, [524288], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [32768], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
-      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpc2h1yvzp/input0.cc'
-    source_filename = "/tmp/tmpc2h1yvzp/input0.cc"
+      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpmr8tne_a/input0.cc'
+    source_filename = "/tmp/tmpmr8tne_a/input0.cc"
     target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
     target triple = "x86_64-pc-linux-gnu"
 
diff --git a/docs/_sources/how_to/work_with_schedules/tuple_inputs.rst.txt b/docs/_sources/how_to/work_with_schedules/tuple_inputs.rst.txt
index 2cac989..4399c31 100644
--- a/docs/_sources/how_to/work_with_schedules/tuple_inputs.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/tuple_inputs.rst.txt
@@ -64,15 +64,15 @@ together in the next schedule procedure.
 
     @main = primfn(A0_1: handle, A1_1: handle, B_2: handle, B_3: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_4: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 A0: Buffer(A0_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
-                 B_1: Buffer(B_5: Pointer(float32), float32, [m, n], [stride_4: int32, stride_5: int32], type="auto"),
-                 A1: Buffer(A1_2: Pointer(float32), float32, [m, n], [stride_6: int32, stride_7: int32], type="auto")}
+      buffers = {B_1: Buffer(B_4: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 B: Buffer(B_5: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto"),
+                 A0: Buffer(A0_2: Pointer(float32), float32, [(stride_2: int32*m)], [], type="auto"),
+                 A1: Buffer(A1_2: Pointer(float32), float32, [(stride_3: int32*m)], [], type="auto")}
       buffer_map = {A0_1: A0, A1_1: A1, B_2: B, B_3: B_1} {
       for (i: int32, 0, m) {
-        for (j: int32, 0, n) {
-          B_4[((i*stride) + (j*stride_1))] = ((float32*)A0_2[((i*stride_2) + (j*stride_3))] + 2f32)
-          B_5[((i*stride_4) + (j*stride_5))] = ((float32*)A1_2[((i*stride_6) + (j*stride_7))]*3f32)
+        for (j: int32, 0, n: int32) {
+          B[((i*stride_1) + (j*stride_4: int32))] = (A0[((i*stride_2) + (j*stride_5: int32))] + 2f32)
+          B_1[((i*stride) + (j*stride_6: int32))] = (A1[((i*stride_3) + (j*stride_7: int32))]*3f32)
         }
       }
     }
@@ -135,17 +135,17 @@ with :py:func:`te.comm_reducer` as below:
 
     @main = primfn(idx_1: handle, val_1: handle, T_2: handle, T_3: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {T: Buffer(T_4: Pointer(int32), int32, [m: int32], [stride: int32], type="auto"),
-                 T_1: Buffer(T_5: Pointer(int32), int32, [m], [stride_1: int32], type="auto"),
-                 idx: Buffer(idx_2: Pointer(int32), int32, [m, n: int32], [stride_2: int32, stride_3: int32], type="auto"),
-                 val: Buffer(val_2: Pointer(int32), int32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
+      buffers = {T_1: Buffer(T_4: Pointer(int32), int32, [(stride: int32*m: int32)], [], type="auto"),
+                 T: Buffer(T_5: Pointer(int32), int32, [(stride_1: int32*m)], [], type="auto"),
+                 idx: Buffer(idx_2: Pointer(int32), int32, [(stride_2: int32*m)], [], type="auto"),
+                 val: Buffer(val_2: Pointer(int32), int32, [(stride_3: int32*m)], [], type="auto")}
       buffer_map = {idx_1: idx, val_1: val, T_2: T, T_3: T_1} {
       for (i: int32, 0, m) {
-        T_4[(i*stride)] = -1
-        T_5[(i*stride_1)] = -2147483648
-        for (k: int32, 0, n) {
-          T_4[(i*stride)] = @tir.if_then_else(((int32*)val_2[((i*stride_4) + (k*stride_5))] <= (int32*)T_5[(i*stride_1)]), (int32*)T_4[(i*stride)], (int32*)idx_2[((i*stride_2) + (k*stride_3))], dtype=int32)
-          T_5[(i*stride_1)] = @tir.if_then_else(((int32*)val_2[((i*stride_4) + (k*stride_5))] <= (int32*)T_5[(i*stride_1)]), (int32*)T_5[(i*stride_1)], (int32*)val_2[((i*stride_4) + (k*stride_5))], dtype=int32)
+        T[(i*stride_1)] = -1
+        T_1[(i*stride)] = -2147483648
+        for (k: int32, 0, n: int32) {
+          T[(i*stride_1)] = @tir.if_then_else((val[((i*stride_3) + (k*stride_4: int32))] <= T_1[(i*stride)]), T[(i*stride_1)], idx[((i*stride_2) + (k*stride_5: int32))], dtype=int32)
+          T_1[(i*stride)] = @tir.if_then_else((val[((i*stride_3) + (k*stride_4))] <= T_1[(i*stride)]), T_1[(i*stride)], val[((i*stride_3) + (k*stride_4))], dtype=int32)
         }
       }
     }
@@ -193,19 +193,19 @@ in terms of operation.
 
     @main = primfn(A0_1: handle, A1_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 A0: Buffer(A0_2: Pointer(float32), float32, [m, n], [stride_2: int32, stride_3: int32], type="auto"),
-                 A1: Buffer(A1_2: Pointer(float32), float32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
+      buffers = {A0: Buffer(A0_2: Pointer(float32), float32, [(stride: int32*m: int32)], [], type="auto"),
+                 C: Buffer(C_2: Pointer(float32), float32, [(stride_1: int32*m)], [], type="auto"),
+                 A1: Buffer(A1_2: Pointer(float32), float32, [(stride_2: int32*m)], [], type="auto")}
       buffer_map = {A0_1: A0, A1_1: A1, C_1: C} {
-      allocate(B.v0: Pointer(global float32), float32, [n]), storage_scope = global;
+      allocate(B.v0: Pointer(global float32), float32, [n: int32]), storage_scope = global;
       allocate(B.v1: Pointer(global float32), float32, [n]), storage_scope = global;
       for (i: int32, 0, m) {
         for (j: int32, 0, n) {
-          B.v0[j] = ((float32*)A0_2[((i*stride_2) + (j*stride_3))] + 2f32)
-          B.v1[j] = ((float32*)A0_2[((i*stride_2) + (j*stride_3))]*3f32)
+          B.v0_1: Buffer(B.v0, float32, [n], [])[j] = (A0[((i*stride) + (j*stride_3: int32))] + 2f32)
+          B.v1_1: Buffer(B.v1, float32, [n], [])[j] = (A0[((i*stride) + (j*stride_3))]*3f32)
         }
         for (j_1: int32, 0, n) {
-          C_2[((i*stride) + (j_1*stride_1))] = ((float32*)A1_2[((i*stride_4) + (j_1*stride_5))] + (float32*)B.v0[j_1])
+          C[((i*stride_1) + (j_1*stride_4: int32))] = (A1[((i*stride_2) + (j_1*stride_5: int32))] + B.v0_1[j_1])
         }
       }
     }
diff --git a/docs/_sources/reference/api/python/contrib.rst.txt b/docs/_sources/reference/api/python/contrib.rst.txt
index 52d3faf..26b5abb 100644
--- a/docs/_sources/reference/api/python/contrib.rst.txt
+++ b/docs/_sources/reference/api/python/contrib.rst.txt
@@ -97,10 +97,12 @@ tvm.contrib.relay_viz
 ~~~~~~~~~~~~~~~~~~~~~
 .. automodule:: tvm.contrib.relay_viz
     :members:
-.. automodule:: tvm.contrib.relay_viz.interface
+.. automodule:: tvm.contrib.relay_viz.dot
     :members:
 .. automodule:: tvm.contrib.relay_viz.terminal
     :members:
+.. automodule:: tvm.contrib.relay_viz.interface
+    :members:
 
 
 tvm.contrib.rocblas
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 f3875a0..2f4a50a 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:19.321** total execution time for **topic_vta_tutorials_autotvm** files:
+**00:20.768** total execution time for **topic_vta_tutorials_autotvm** files:
 
-- **00:19.128**: :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``)
-- **00:00.193**: :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_alu_vta.py` (``tune_alu_vta.py``)
+- **00:20.557**: :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``)
+- **00:00.211**: :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 67fff90..a0d8f30 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:429: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+    /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)
       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 20.26s!
+    resnet18_v1 inference graph built in 20.80s!
 
 
 
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 e3b10cf..96568e8 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:429: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
+    /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)
       DeprecationWarning,
-    yolov3-tiny inference graph built in 14.10s!
+    yolov3-tiny inference graph built in 14.62s!
 
 
 
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 caa29b8..f889d0a 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:25.223** total execution time for **topic_vta_tutorials_frontend** files:
+**01:27.591** total execution time for **topic_vta_tutorials_frontend** files:
 
-- **00:45.286**: :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``)
-- **00:39.936**: :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``)
+- **00:46.614**: :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``)
+- **00:40.977**: :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``)
diff --git a/docs/_sources/topic/vta/tutorials/matrix_multiply.rst.txt b/docs/_sources/topic/vta/tutorials/matrix_multiply.rst.txt
index b204129..9d9c68d 100644
--- a/docs/_sources/topic/vta/tutorials/matrix_multiply.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/matrix_multiply.rst.txt
@@ -304,9 +304,9 @@ After we construct the schedule, by default the schedule computes
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(int8), int8, [1, 16, 1, 16], []),
-                 A: Buffer(A_2: Pointer(int8), int8, [1, 16, 1, 16], []),
-                 B: Buffer(B_2: Pointer(int8), int8, [16, 16, 16, 16], [])}
+      buffers = {C: Buffer(C_2: Pointer(int8), int8, [256], []),
+                 A: Buffer(A_2: Pointer(int8), int8, [256], []),
+                 B: Buffer(B_2: Pointer(int8), int8, [65536], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       allocate(A_buf: Pointer(global int8), int8, [256]), storage_scope = global;
       allocate(B_buf: Pointer(global int8), int8, [65536]), storage_scope = global;
@@ -314,7 +314,7 @@ After we construct the schedule, by default the schedule computes
         for (i1: int32, 0, 16) {
           for (i3: int32, 0, 16) {
             let cse_var_1: int32 = ((i1*16) + i3)
-            A_buf[cse_var_1] = (int8*)A_2[cse_var_1]
+            A_buf_1: Buffer(A_buf, int8, [256], [])[cse_var_1] = A[cse_var_1]
           }
         }
         for (i0: int32, 0, 16) {
@@ -322,18 +322,18 @@ After we construct the schedule, by default the schedule computes
             for (i2: int32, 0, 16) {
               for (i3_1: int32, 0, 16) {
                 let cse_var_2: int32 = ((((i0*4096) + (i1_1*256)) + (i2*16)) + i3_1)
-                B_buf[cse_var_2] = (int8*)B_2[cse_var_2]
+                B_buf_1: Buffer(B_buf, int8, [65536], [])[cse_var_2] = B[cse_var_2]
               }
             }
           }
         }
         for (co: int32, 0, 16) {
           for (ci: int32, 0, 16) {
-            C_buf[((co*16) + ci)] = 0
+            C_buf_1: Buffer(C_buf, int32, [256], [])[((co*16) + ci)] = 0
             for (ko: int32, 0, 16) {
               for (ki: int32, 0, 16) {
                 let cse_var_3: int32 = ((co*16) + ci)
-                C_buf[cse_var_3] = ((int32*)C_buf[cse_var_3] + (cast(int32, (int8*)A_buf[((ko*16) + ki)])*cast(int32, (int8*)B_buf[((((co*4096) + (ko*256)) + (ci*16)) + ki)])))
+                C_buf_1[cse_var_3] = (C_buf_1[cse_var_3] + (cast(int32, A_buf_1[((ko*16) + ki)])*cast(int32, B_buf_1[((((co*4096) + (ko*256)) + (ci*16)) + ki)])))
               }
             }
           }
@@ -341,7 +341,7 @@ After we construct the schedule, by default the schedule computes
         for (i1_2: int32, 0, 16) {
           for (i3_2: int32, 0, 16) {
             let cse_var_4: int32 = ((i1_2*16) + i3_2)
-            C_2[cse_var_4] = cast(int8, (int32*)C_buf[cse_var_4])
+            C[cse_var_4] = cast(int8, C_buf_1[cse_var_4])
           }
         }
       }
@@ -451,28 +451,28 @@ moving the copy operations into the matrix multiplication loop.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(int8), int8, [1, 16, 1, 16], []),
-                 A: Buffer(A_2: Pointer(int8), int8, [1, 16, 1, 16], []),
-                 B: Buffer(B_2: Pointer(int8), int8, [16, 16, 16, 16], [])}
+      buffers = {C: Buffer(C_2: Pointer(int8), int8, [256], []),
+                 A: Buffer(A_2: Pointer(int8), int8, [256], []),
+                 B: Buffer(B_2: Pointer(int8), int8, [65536], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       allocate(C_buf: Pointer(local.acc_buffer int32), int32, [256]), storage_scope = local.acc_buffer;
       allocate(A_buf: Pointer(local.inp_buffer int8), int8, [16]), storage_scope = local.inp_buffer;
       allocate(B_buf: Pointer(local.wgt_buffer int8), int8, [16]), storage_scope = local.wgt_buffer {
         for (co: int32, 0, 16) {
           for (ci: int32, 0, 16) {
-            C_buf[((co*16) + ci)] = 0
+            C_buf_1: Buffer(C_buf, int32, [256], [], scope="local.acc_buffer", align=16)[((co*16) + ci)] = 0
             for (ko: int32, 0, 16) {
               attr [IterVar(i0: int32, (nullptr), "DataPar", "")] "pragma_dma_copy" = 1;
               for (i3: int32, 0, 16) {
-                A_buf[i3] = (int8*)A_2[((ko*16) + i3)]
+                A_buf_1: Buffer(A_buf, int8, [16], [], scope="local.inp_buffer", align=16)[i3] = A[((ko*16) + i3)]
               }
               attr [IterVar(i0_1: int32, (nullptr), "DataPar", "")] "pragma_dma_copy" = 1;
               for (i3_1: int32, 0, 16) {
-                B_buf[i3_1] = (int8*)B_2[((((co*4096) + (ko*256)) + (ci*16)) + i3_1)]
+                B_buf_1: Buffer(B_buf, int8, [16], [], scope="local.wgt_buffer", align=256)[i3_1] = B[((((co*4096) + (ko*256)) + (ci*16)) + i3_1)]
               }
               for (ki: int32, 0, 16) {
                 let cse_var_1: int32 = ((co*16) + ci)
-                C_buf[cse_var_1] = ((int32*)C_buf[cse_var_1] + (cast(int32, (int8*)A_buf[ki])*cast(int32, (int8*)B_buf[ki])))
+                C_buf_1[cse_var_1] = (C_buf_1[cse_var_1] + (cast(int32, A_buf_1[ki])*cast(int32, B_buf_1[ki])))
               }
             }
           }
@@ -481,7 +481,7 @@ moving the copy operations into the matrix multiplication loop.
         for (i1: int32, 0, 16) {
           for (i3_2: int32, 0, 16) {
             let cse_var_2: int32 = ((i1*16) + i3_2)
-            C_2[cse_var_2] = cast(int8, (int32*)C_buf[cse_var_2])
+            C[cse_var_2] = cast(int8, C_buf_1[cse_var_2])
           }
         }
       }
@@ -535,9 +535,9 @@ by the VTA runtime JIT compiler.
 
     @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(int8), int8, [1, 16, 1, 16], []),
-                 C: Buffer(C_2: Pointer(int8), int8, [1, 16, 1, 16], []),
-                 B: Buffer(B_2: Pointer(int8), int8, [16, 16, 16, 16], [])}
+      buffers = {C: Buffer(C_2: Pointer(int8), int8, [256], []),
+                 A: Buffer(A_2: Pointer(int8), int8, [256], []),
+                 B: Buffer(B_2: Pointer(int8), int8, [65536], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [IterVar(vta: int32, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 2 {
         attr [IterVar(vta, (nullptr), "ThreadIndex", "vta")] "coproc_uop_scope" = "VTAPushGEMMOp" {
diff --git a/docs/_sources/topic/vta/tutorials/optimize/convolution_opt.rst.txt b/docs/_sources/topic/vta/tutorials/optimize/convolution_opt.rst.txt
index 0894298..c5b91d9 100644
--- a/docs/_sources/topic/vta/tutorials/optimize/convolution_opt.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/optimize/convolution_opt.rst.txt
@@ -252,9 +252,9 @@ Those include:
 
     @main = primfn(data_1: handle, kernel_1: handle, res_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
-                 data: Buffer(data_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
-                 kernel: Buffer(kernel_2: Pointer(int8), int8, [16, 16, 3, 3, 16, 16], [])}
+      buffers = {res: Buffer(res_2: Pointer(int8), int8, [50176], []),
+                 data: Buffer(data_2: Pointer(int8), int8, [50176], []),
+                 kernel: Buffer(kernel_2: Pointer(int8), int8, [589824], [])}
       buffer_map = {data_1: data, kernel_1: kernel, res_1: res} {
       allocate(data_buf: Pointer(global int8), int8, [65536]), storage_scope = global;
       allocate(kernel_buf: Pointer(global int8), int8, [589824]), storage_scope = global;
@@ -264,7 +264,7 @@ Those include:
             for (i3: int32, 0, 16) {
               for (i5: int32, 0, 16) {
                 let cse_var_1: int32 = (i3*16)
-                data_buf[((((i1*4096) + (i2*256)) + cse_var_1) + i5)] = @tir.if_then_else(((((1 <= i2) && (i2 < 15)) && (1 <= i3)) && (i3 < 15)), (int8*)data_2[(((((i1*3136) + (i2*224)) + cse_var_1) + i5) - 240)], 0i8, dtype=int8)
+                data_buf_1: Buffer(data_buf, int8, [65536], [])[((((i1*4096) + (i2*256)) + cse_var_1) + i5)] = @tir.if_then_else(((((1 <= i2) && (i2 < 15)) && (1 <= i3)) && (i3 < 15)), data[(((((i1*3136) + (i2*224)) + cse_var_1) + i5) - 240)], 0i8, dtype=int8)
               }
             }
           }
@@ -276,7 +276,7 @@ Those include:
                 for (i4: int32, 0, 16) {
                   for (i5_1: int32, 0, 16) {
                     let cse_var_2: int32 = ((((((i0*36864) + (i1_1*2304)) + (i2_1*768)) + (i3_1*256)) + (i4*16)) + i5_1)
-                    kernel_buf[cse_var_2] = (int8*)kernel_2[cse_var_2]
+                    kernel_buf_1: Buffer(kernel_buf, int8, [589824], [])[cse_var_2] = kernel[cse_var_2]
                   }
                 }
               }
@@ -287,14 +287,14 @@ Those include:
           for (i: int32, 0, 14) {
             for (j: int32, 0, 14) {
               for (ci: int32, 0, 16) {
-                res_conv[((((co*3136) + (i*224)) + (j*16)) + ci)] = 0
+                res_conv_1: Buffer(res_conv, int32, [50176], [])[((((co*3136) + (i*224)) + (j*16)) + ci)] = 0
                 for (ic: int32, 0, 16) {
                   for (dy: int32, 0, 3) {
                     for (dx: int32, 0, 3) {
                       for (ic_tns: int32, 0, 16) {
                         let cse_var_4: int32 = (j*16)
                         let cse_var_3: int32 = ((((co*3136) + (i*224)) + cse_var_4) + ci)
-                        res_conv[cse_var_3] = ((int32*)res_conv[cse_var_3] + (cast(int32, (int8*)data_buf[((((((ic*4096) + (i*256)) + (dy*256)) + cse_var_4) + (dx*16)) + ic_tns)])*cast(int32, (int8*)kernel_buf[((((((co*36864) + (ic*2304)) + (dy*768)) + (dx*256)) + (ci*16)) + ic_tns)])))
+                        res_conv_1[cse_var_3] = (res_conv_1[cse_var_3] + (cast(int32, data_buf_1[((((((ic*4096) + (i*256)) + (dy*256)) + cse_var_4) + (dx*16)) + ic_tns)])*cast(int32, kernel_buf_1[((((((co*36864) + (ic*2304)) + (dy*768)) + (dx*256)) + (ci*16)) + ic_tns)])))
                       }
                     }
                   }
@@ -308,7 +308,7 @@ Those include:
             for (i3_2: int32, 0, 14) {
               for (i5_2: int32, 0, 16) {
                 let cse_var_5: int32 = ((((i1_2*3136) + (i2_2*224)) + (i3_2*16)) + i5_2)
-                res_conv[cse_var_5] = @tir.shift_right((int32*)res_conv[cse_var_5], 8, dtype=int32)
+                res_conv_2: Buffer(res_conv, int32, [50176], [])[cse_var_5] = @tir.shift_right(res_conv_1[cse_var_5], 8, dtype=int32)
               }
             }
           }
@@ -318,7 +318,7 @@ Those include:
             for (i3_3: int32, 0, 14) {
               for (i5_3: int32, 0, 16) {
                 let cse_var_6: int32 = ((((i1_3*3136) + (i2_3*224)) + (i3_3*16)) + i5_3)
-                res_conv[cse_var_6] = max((int32*)res_conv[cse_var_6], 0)
+                res_conv_3: Buffer(res_conv, int32, [50176], [])[cse_var_6] = max(res_conv_2[cse_var_6], 0)
               }
             }
           }
@@ -328,7 +328,7 @@ Those include:
             for (i3_4: int32, 0, 14) {
               for (i5_4: int32, 0, 16) {
                 let cse_var_7: int32 = ((((i1_4*3136) + (i2_4*224)) + (i3_4*16)) + i5_4)
-                res_conv[cse_var_7] = min((int32*)res_conv[cse_var_7], 127)
+                res_conv_4: Buffer(res_conv, int32, [50176], [])[cse_var_7] = min(res_conv_3[cse_var_7], 127)
               }
             }
           }
@@ -338,7 +338,7 @@ Those include:
             for (i3_5: int32, 0, 14) {
               for (i5_5: int32, 0, 16) {
                 let cse_var_8: int32 = ((((i1_5*3136) + (i2_5*224)) + (i3_5*16)) + i5_5)
-                res_2[cse_var_8] = cast(int8, (int32*)res_conv[cse_var_8])
+                res[cse_var_8] = cast(int8, res_conv_4[cse_var_8])
               }
             }
           }
@@ -453,9 +453,9 @@ below.
 
     @main = primfn(data_1: handle, kernel_1: handle, res_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
-                 data: Buffer(data_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
-                 kernel: Buffer(kernel_2: Pointer(int8), int8, [16, 16, 3, 3, 16, 16], [])}
+      buffers = {res: Buffer(res_2: Pointer(int8), int8, [50176], []),
+                 data: Buffer(data_2: Pointer(int8), int8, [50176], []),
+                 kernel: Buffer(kernel_2: Pointer(int8), int8, [589824], [])}
       buffer_map = {data_1: data, kernel_1: kernel, res_1: res} {
       allocate(data_buf: Pointer(global int8), int8, [65536]), storage_scope = global;
       allocate(kernel_buf: Pointer(global int8), int8, [589824]), storage_scope = global;
@@ -465,7 +465,7 @@ below.
             for (i3: int32, 0, 16) {
               for (i5: int32, 0, 16) {
                 let cse_var_1: int32 = (i3*16)
-                data_buf[((((i1*4096) + (i2*256)) + cse_var_1) + i5)] = @tir.if_then_else(((((1 <= i2) && (i2 < 15)) && (1 <= i3)) && (i3 < 15)), (int8*)data_2[(((((i1*3136) + (i2*224)) + cse_var_1) + i5) - 240)], 0i8, dtype=int8)
+                data_buf_1: Buffer(data_buf, int8, [65536], [])[((((i1*4096) + (i2*256)) + cse_var_1) + i5)] = @tir.if_then_else(((((1 <= i2) && (i2 < 15)) && (1 <= i3)) && (i3 < 15)), data[(((((i1*3136) + (i2*224)) + cse_var_1) + i5) - 240)], 0i8, dtype=int8)
               }
             }
           }
@@ -477,7 +477,7 @@ below.
                 for (i4: int32, 0, 16) {
                   for (i5_1: int32, 0, 16) {
                     let cse_var_2: int32 = ((((((i0*36864) + (i1_1*2304)) + (i2_1*768)) + (i3_1*256)) + (i4*16)) + i5_1)
-                    kernel_buf[cse_var_2] = (int8*)kernel_2[cse_var_2]
+                    kernel_buf_1: Buffer(kernel_buf, int8, [589824], [])[cse_var_2] = kernel[cse_var_2]
                   }
                 }
               }
@@ -491,8 +491,8 @@ below.
                 for (ci.init: int32, 0, 16) {
                   let cse_var_3: int32 = ((((co.init*1568) + (i.init*224)) + (j.init*16)) + ci.init)
                    {
-                    res_conv[cse_var_3] = 0
-                    res_conv[(cse_var_3 + 12544)] = 0
+                    res_conv_1: Buffer(res_conv, int32, [157351936], [])[cse_var_3] = 0
+                    res_conv_1[(cse_var_3 + 12544)] = 0
                   }
                 }
               }
@@ -512,8 +512,8 @@ below.
                           let cse_var_5: int32 = ((((((co*36864) + (ic.outer*2304)) + (dy*768)) + (dx*256)) + (ci*16)) + ic_tns)
                           let cse_var_4: int32 = (((((((ic.outer*4096) + (i2.outer*1792)) + (i*256)) + (dy*256)) + cse_var_8) + (dx*16)) + ic_tns)
                            {
-                            res_conv[cse_var_7] = ((int32*)res_conv[cse_var_7] + (cast(int32, (int8*)data_buf[cse_var_4])*cast(int32, (int8*)kernel_buf[cse_var_5])))
-                            res_conv[cse_var_6] = ((int32*)res_conv[cse_var_6] + (cast(int32, (int8*)data_buf[cse_var_4])*cast(int32, (int8*)kernel_buf[(cse_var_5 + 294912)])))
+                            res_conv_1[cse_var_7] = (res_conv_1[cse_var_7] + (cast(int32, data_buf_1[cse_var_4])*cast(int32, kernel_buf_1[cse_var_5])))
+                            res_conv_1[cse_var_6] = (res_conv_1[cse_var_6] + (cast(int32, data_buf_1[cse_var_4])*cast(int32, kernel_buf_1[(cse_var_5 + 294912)])))
                           }
                         }
                       }
@@ -530,8 +530,8 @@ below.
                   let cse_var_10: int32 = ((((i1_2*1568) + (i2_2*224)) + (i3_2*16)) + i5_2)
                   let cse_var_9: int32 = (cse_var_10 + 12544)
                    {
-                    res_conv[cse_var_10] = @tir.shift_right((int32*)res_conv[cse_var_10], 8, dtype=int32)
-                    res_conv[cse_var_9] = @tir.shift_right((int32*)res_conv[cse_var_9], 8, dtype=int32)
+                    res_conv_2: Buffer(res_conv, int32, [157351936], [])[cse_var_10] = @tir.shift_right(res_conv_1[cse_var_10], 8, dtype=int32)
+                    res_conv_2[cse_var_9] = @tir.shift_right(res_conv_1[cse_var_9], 8, dtype=int32)
                   }
                 }
               }
@@ -544,8 +544,8 @@ below.
                   let cse_var_12: int32 = ((((i1_3*1568) + (i2_3*224)) + (i3_3*16)) + i5_3)
                   let cse_var_11: int32 = (cse_var_12 + 12544)
                    {
-                    res_conv[cse_var_12] = max((int32*)res_conv[cse_var_12], 0)
-                    res_conv[cse_var_11] = max((int32*)res_conv[cse_var_11], 0)
+                    res_conv_3: Buffer(res_conv, int32, [157351936], [])[cse_var_12] = max(res_conv_2[cse_var_12], 0)
+                    res_conv_3[cse_var_11] = max(res_conv_2[cse_var_11], 0)
                   }
                 }
               }
@@ -558,8 +558,8 @@ below.
                   let cse_var_14: int32 = ((((i1_4*1568) + (i2_4*224)) + (i3_4*16)) + i5_4)
                   let cse_var_13: int32 = (cse_var_14 + 12544)
                    {
-                    res_conv[cse_var_14] = min((int32*)res_conv[cse_var_14], 127)
-                    res_conv[cse_var_13] = min((int32*)res_conv[cse_var_13], 127)
+                    res_conv_4: Buffer(res_conv, int32, [157351936], [])[cse_var_14] = min(res_conv_3[cse_var_14], 127)
+                    res_conv_4[cse_var_13] = min(res_conv_3[cse_var_13], 127)
                   }
                 }
               }
@@ -574,8 +574,8 @@ below.
                   let cse_var_16: int32 = ((((i1.inner*1568) + cse_var_18) + cse_var_17) + i5_5)
                   let cse_var_15: int32 = (((((i1.inner*3136) + (i2.outer*1568)) + cse_var_18) + cse_var_17) + i5_5)
                    {
-                    res_2[cse_var_15] = cast(int8, (int32*)res_conv[cse_var_16])
-                    res_2[(cse_var_15 + 25088)] = cast(int8, (int32*)res_conv[(cse_var_16 + 12544)])
+                    res[cse_var_15] = cast(int8, res_conv_4[cse_var_16])
+                    res[(cse_var_15 + 25088)] = cast(int8, res_conv_4[(cse_var_16 + 12544)])
                   }
                 }
               }
@@ -663,9 +663,9 @@ and mapping the shift, and clipping computation to the vector ALU.
 
     @main = primfn(data_1: handle, kernel_1: handle, res_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
-                 data: Buffer(data_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
-                 kernel: Buffer(kernel_2: Pointer(int8), int8, [16, 16, 3, 3, 16, 16], [])}
+      buffers = {res: Buffer(res_2: Pointer(int8), int8, [50176], []),
+                 data: Buffer(data_2: Pointer(int8), int8, [50176], []),
+                 kernel: Buffer(kernel_2: Pointer(int8), int8, [589824], [])}
       buffer_map = {data_1: data, kernel_1: kernel, res_1: res} {
       @tir.vta.coproc_dep_push(3, 2, dtype=int32)
       @tir.vta.coproc_dep_push(3, 2, dtype=int32)
diff --git a/docs/_sources/topic/vta/tutorials/optimize/matrix_multiply_opt.rst.txt b/docs/_sources/topic/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
index d4e59ed..b15e627 100644
--- a/docs/_sources/topic/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
@@ -189,9 +189,9 @@ Those include:
 
     @main = primfn(data_1: handle, weight_1: handle, res_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 data: Buffer(data_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 weight: Buffer(weight_2: Pointer(int8), int8, [64, 64, 16, 16], [])}
+      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1024], []),
+                 data: Buffer(data_2: Pointer(int8), int8, [1024], []),
+                 weight: Buffer(weight_2: Pointer(int8), int8, [1048576], [])}
       buffer_map = {data_1: data, weight_1: weight, res_1: res} {
       allocate(data_buf: Pointer(global int8), int8, [1024]), storage_scope = global;
       allocate(weight_buf: Pointer(global int8), int8, [1048576]), storage_scope = global;
@@ -199,7 +199,7 @@ Those include:
         for (i1: int32, 0, 64) {
           for (i3: int32, 0, 16) {
             let cse_var_1: int32 = ((i1*16) + i3)
-            data_buf[cse_var_1] = (int8*)data_2[cse_var_1]
+            data_buf_1: Buffer(data_buf, int8, [1024], [])[cse_var_1] = data[cse_var_1]
           }
         }
         for (i0: int32, 0, 64) {
@@ -207,18 +207,18 @@ Those include:
             for (i2: int32, 0, 16) {
               for (i3_1: int32, 0, 16) {
                 let cse_var_2: int32 = ((((i0*16384) + (i1_1*256)) + (i2*16)) + i3_1)
-                weight_buf[cse_var_2] = (int8*)weight_2[cse_var_2]
+                weight_buf_1: Buffer(weight_buf, int8, [1048576], [])[cse_var_2] = weight[cse_var_2]
               }
             }
           }
         }
         for (co: int32, 0, 64) {
           for (ci: int32, 0, 16) {
-            res_gem[((co*16) + ci)] = 0
+            res_gem_1: Buffer(res_gem, int32, [1024], [])[((co*16) + ci)] = 0
             for (ic: int32, 0, 64) {
               for (ic_tns: int32, 0, 16) {
                 let cse_var_3: int32 = ((co*16) + ci)
-                res_gem[cse_var_3] = ((int32*)res_gem[cse_var_3] + (cast(int32, (int8*)data_buf[((ic*16) + ic_tns)])*cast(int32, (int8*)weight_buf[((((co*16384) + (ic*256)) + (ci*16)) + ic_tns)])))
+                res_gem_1[cse_var_3] = (res_gem_1[cse_var_3] + (cast(int32, data_buf_1[((ic*16) + ic_tns)])*cast(int32, weight_buf_1[((((co*16384) + (ic*256)) + (ci*16)) + ic_tns)])))
               }
             }
           }
@@ -226,25 +226,25 @@ Those include:
         for (i1_2: int32, 0, 64) {
           for (i3_2: int32, 0, 16) {
             let cse_var_4: int32 = ((i1_2*16) + i3_2)
-            res_gem[cse_var_4] = @tir.shift_right((int32*)res_gem[cse_var_4], 8, dtype=int32)
+            res_gem_2: Buffer(res_gem, int32, [1024], [])[cse_var_4] = @tir.shift_right(res_gem_1[cse_var_4], 8, dtype=int32)
           }
         }
         for (i1_3: int32, 0, 64) {
           for (i3_3: int32, 0, 16) {
             let cse_var_5: int32 = ((i1_3*16) + i3_3)
-            res_gem[cse_var_5] = max((int32*)res_gem[cse_var_5], 0)
+            res_gem_3: Buffer(res_gem, int32, [1024], [])[cse_var_5] = max(res_gem_2[cse_var_5], 0)
           }
         }
         for (i1_4: int32, 0, 64) {
           for (i3_4: int32, 0, 16) {
             let cse_var_6: int32 = ((i1_4*16) + i3_4)
-            res_gem[cse_var_6] = min((int32*)res_gem[cse_var_6], 127)
+            res_gem_4: Buffer(res_gem, int32, [1024], [])[cse_var_6] = min(res_gem_3[cse_var_6], 127)
           }
         }
         for (i1_5: int32, 0, 64) {
           for (i3_5: int32, 0, 16) {
             let cse_var_7: int32 = ((i1_5*16) + i3_5)
-            res_2[cse_var_7] = cast(int8, (int32*)res_gem[cse_var_7])
+            res[cse_var_7] = cast(int8, res_gem_4[cse_var_7])
           }
         }
       }
@@ -355,9 +355,9 @@ below:
 
     @main = primfn(data_1: handle, weight_1: handle, res_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 data: Buffer(data_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 weight: Buffer(weight_2: Pointer(int8), int8, [64, 64, 16, 16], [])}
+      buffers = {data: Buffer(data_2: Pointer(int8), int8, [1024], []),
+                 res: Buffer(res_2: Pointer(int8), int8, [1024], []),
+                 weight: Buffer(weight_2: Pointer(int8), int8, [1048576], [])}
       buffer_map = {data_1: data, weight_1: weight, res_1: res} {
       allocate(data_buf: Pointer(global int8), int8, [1024]), storage_scope = global;
       allocate(weight_buf: Pointer(global int8), int8, [1048576]), storage_scope = global;
@@ -365,7 +365,7 @@ below:
         for (i1: int32, 0, 64) {
           for (i3: int32, 0, 16) {
             let cse_var_1: int32 = ((i1*16) + i3)
-            data_buf[cse_var_1] = (int8*)data_2[cse_var_1]
+            data_buf_1: Buffer(data_buf, int8, [1024], [])[cse_var_1] = data[cse_var_1]
           }
         }
         for (i0: int32, 0, 64) {
@@ -373,7 +373,7 @@ below:
             for (i2: int32, 0, 16) {
               for (i3_1: int32, 0, 16) {
                 let cse_var_2: int32 = ((((i0*16384) + (i1_1*256)) + (i2*16)) + i3_1)
-                weight_buf[cse_var_2] = (int8*)weight_2[cse_var_2]
+                weight_buf_1: Buffer(weight_buf, int8, [1048576], [])[cse_var_2] = weight[cse_var_2]
               }
             }
           }
@@ -381,7 +381,7 @@ below:
         for (i1.outer: int32, 0, 4) {
           for (co.init: int32, 0, 16) {
             for (ci.init: int32, 0, 16) {
-              res_gem[((co.init*16) + ci.init)] = 0
+              res_gem_1: Buffer(res_gem, int32, [256], [])[((co.init*16) + ci.init)] = 0
             }
           }
           for (ic.outer: int32, 0, 4) {
@@ -390,7 +390,7 @@ below:
                 for (ci: int32, 0, 16) {
                   for (ic_tns: int32, 0, 16) {
                     let cse_var_3: int32 = ((co*16) + ci)
-                    res_gem[cse_var_3] = ((int32*)res_gem[cse_var_3] + (cast(int32, (int8*)data_buf[(((ic.outer*256) + (ic.inner*16)) + ic_tns)])*cast(int32, (int8*)weight_buf[((((((i1.outer*262144) + (co*16384)) + (ic.outer*4096)) + (ic.inner*256)) + (ci*16)) + ic_tns)])))
+                    res_gem_1[cse_var_3] = (res_gem_1[cse_var_3] + (cast(int32, data_buf_1[(((ic.outer*256) + (ic.inner*16)) + ic_tns)])*cast(int32, weight_buf_1[((((((i1.outer*262144) + (co*16384)) + (ic.outer*4096)) + (ic.inner*256)) + (ci*16)) + ic_tns)])))
                   }
                 }
               }
@@ -399,25 +399,25 @@ below:
           for (i1_2: int32, 0, 16) {
             for (i3_2: int32, 0, 16) {
               let cse_var_4: int32 = ((i1_2*16) + i3_2)
-              res_gem[cse_var_4] = @tir.shift_right((int32*)res_gem[cse_var_4], 8, dtype=int32)
+              res_gem_2: Buffer(res_gem, int32, [256], [])[cse_var_4] = @tir.shift_right(res_gem_1[cse_var_4], 8, dtype=int32)
             }
           }
           for (i1_3: int32, 0, 16) {
             for (i3_3: int32, 0, 16) {
               let cse_var_5: int32 = ((i1_3*16) + i3_3)
-              res_gem[cse_var_5] = max((int32*)res_gem[cse_var_5], 0)
+              res_gem_3: Buffer(res_gem, int32, [256], [])[cse_var_5] = max(res_gem_2[cse_var_5], 0)
             }
           }
           for (i1_4: int32, 0, 16) {
             for (i3_4: int32, 0, 16) {
               let cse_var_6: int32 = ((i1_4*16) + i3_4)
-              res_gem[cse_var_6] = min((int32*)res_gem[cse_var_6], 127)
+              res_gem_4: Buffer(res_gem, int32, [256], [])[cse_var_6] = min(res_gem_3[cse_var_6], 127)
             }
           }
           for (i1.inner: int32, 0, 16) {
             for (i3_5: int32, 0, 16) {
               let cse_var_7: int32 = (i1.inner*16)
-              res_2[(((i1.outer*256) + cse_var_7) + i3_5)] = cast(int8, (int32*)res_gem[(cse_var_7 + i3_5)])
+              res[(((i1.outer*256) + cse_var_7) + i3_5)] = cast(int8, res_gem_4[(cse_var_7 + i3_5)])
             }
           }
         }
@@ -502,9 +502,9 @@ and mapping the shift, and clipping computation to the vector ALU.
 
     @main = primfn(data_1: handle, weight_1: handle, res_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 data: Buffer(data_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 weight: Buffer(weight_2: Pointer(int8), int8, [64, 64, 16, 16], [])}
+      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1024], []),
+                 data: Buffer(data_2: Pointer(int8), int8, [1024], []),
+                 weight: Buffer(weight_2: Pointer(int8), int8, [1048576], [])}
       buffer_map = {data_1: data, weight_1: weight, res_1: res} {
       @tir.vta.coproc_dep_push(3, 2, dtype=int32)
       for (i1.outer: int32, 0, 4) {
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 bd0099f..94fe3fd 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.518** total execution time for **topic_vta_tutorials_optimize** files:
+**00:03.694** total execution time for **topic_vta_tutorials_optimize** files:
 
-- **00:02.970**: :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)
-- **00:00.548**: :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``)
+- **00:03.107**: :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)
+- **00:00.586**: :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 5f8d9a0..4c5b0ab 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:01.051** total execution time for **topic_vta_tutorials** files:
+**00:01.001** total execution time for **topic_vta_tutorials** files:
 
-- **00:00.530**: :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``)
-- **00:00.521**: :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``)
+- **00:00.506**: :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``)
+- **00:00.495**: :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``)
diff --git a/docs/_sources/topic/vta/tutorials/vta_get_started.rst.txt b/docs/_sources/topic/vta/tutorials/vta_get_started.rst.txt
index 9900241..ed54e6b 100644
--- a/docs/_sources/topic/vta/tutorials/vta_get_started.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/vta_get_started.rst.txt
@@ -304,34 +304,34 @@ After we construct the schedule, by default the schedule computes
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 A: Buffer(A_2: Pointer(int32), int32, [1, 64, 1, 16], []),
-                 B: Buffer(B_2: Pointer(int32), int32, [1, 64, 1, 16], [])}
+      buffers = {C: Buffer(C_2: Pointer(int8), int8, [1024], []),
+                 A: Buffer(A_2: Pointer(int32), int32, [1024], []),
+                 B: Buffer(B_2: Pointer(int32), int32, [1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       allocate(A_buf: Pointer(global int32), int32, [1024]), storage_scope = global;
       allocate(B_buf: Pointer(global int32), int32, [1024]), storage_scope = global {
         for (i1: int32, 0, 64) {
           for (i3: int32, 0, 16) {
             let cse_var_1: int32 = ((i1*16) + i3)
-            A_buf[cse_var_1] = (int32*)A_2[cse_var_1]
+            A_buf_1: Buffer(A_buf, int32, [1024], [])[cse_var_1] = A[cse_var_1]
           }
         }
         for (i1_1: int32, 0, 64) {
           for (i3_1: int32, 0, 16) {
             let cse_var_2: int32 = ((i1_1*16) + i3_1)
-            B_buf[cse_var_2] = (int32*)B_2[cse_var_2]
+            B_buf_1: Buffer(B_buf, int32, [1024], [])[cse_var_2] = B[cse_var_2]
           }
         }
         for (i1_2: int32, 0, 64) {
           for (i3_2: int32, 0, 16) {
             let cse_var_3: int32 = ((i1_2*16) + i3_2)
-            A_buf[cse_var_3] = ((int32*)A_buf[cse_var_3] + (int32*)B_buf[cse_var_3])
+            A_buf_2: Buffer(A_buf, int32, [1024], [])[cse_var_3] = (A_buf_1[cse_var_3] + B_buf_1[cse_var_3])
           }
         }
         for (i1_3: int32, 0, 64) {
           for (i3_3: int32, 0, 16) {
             let cse_var_4: int32 = ((i1_3*16) + i3_3)
-            C_2[cse_var_4] = cast(int8, (int32*)A_buf[cse_var_4])
+            C[cse_var_4] = cast(int8, A_buf_2[cse_var_4])
           }
         }
       }
@@ -429,9 +429,9 @@ with an :code:`env.alu` pragma.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 A: Buffer(A_2: Pointer(int32), int32, [1, 64, 1, 16], []),
-                 B: Buffer(B_2: Pointer(int32), int32, [1, 64, 1, 16], [])}
+      buffers = {C: Buffer(C_2: Pointer(int8), int8, [1024], []),
+                 A: Buffer(A_2: Pointer(int32), int32, [1024], []),
+                 B: Buffer(B_2: Pointer(int32), int32, [1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [IterVar(vta: int32, (nullptr), "ThreadIndex", "vta")] "coproc_scope" = 2 {
         @tir.call_extern("VTALoadBuffer2D", @tir.tvm_thread_context(@tir.vta.command_handle(, dtype=handle), dtype=handle), A_2, 0, 64, 1, 64, 0, 0, 0, 0, 0, 3, dtype=int32)
diff --git a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
index 6046333..b742a5a 100644
--- a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
+++ b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
@@ -216,17 +216,17 @@ operator fusion.
     Lowered TIR:
     @main = primfn(A_1: handle, B_1: handle, C_1: handle, out_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {out: Buffer(out_2: Pointer(float32), float32, [1024, 1024], []),
-                 C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {out: Buffer(out_2: Pointer(float32), float32, [1048576], []),
+                 C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C, out_1: out} {
       allocate(auto_scheduler_layout_transform: Pointer(global float32), float32, [1048576]), storage_scope = global {
         for (ax0.ax1.fused.ax2.fused: int32, 0, 128) "parallel" {
           for (ax4: int32, 0, 256) {
             for (ax6: int32, 0, 4) {
               for (ax7: int32, 0, 8) {
-                auto_scheduler_layout_transform[((((ax0.ax1.fused.ax2.fused*8192) + (ax4*32)) + (ax6*8)) + ax7)] = (float32*)B_2[((((ax4*4096) + (ax6*1024)) + (ax0.ax1.fused.ax2.fused*8)) + ax7)]
+                auto_scheduler_layout_transform_1: Buffer(auto_scheduler_layout_transform, float32, [1048576], [])[((((ax0.ax1.fused.ax2.fused*8192) + (ax4*32)) + (ax6*8)) + ax7)] = B[((((ax4*4096) + (ax6*1024)) + (ax0.ax1.fused.ax2.fused*8)) + ax7)]
               }
             }
           }
@@ -234,25 +234,25 @@ operator fusion.
         for (i.outer.outer.j.outer.outer.fused: int32, 0, 16384) "parallel" {
           allocate(matmul: Pointer(global float32x8), float32x8, [4]), storage_scope = global;
           for (i.outer.inner: int32, 0, 2) {
-            matmul[ramp(0, 1, 8)] = broadcast(0f32, 8)
-            matmul[ramp(8, 1, 8)] = broadcast(0f32, 8)
-            matmul[ramp(16, 1, 8)] = broadcast(0f32, 8)
-            matmul[ramp(24, 1, 8)] = broadcast(0f32, 8)
+            matmul_1: Buffer(matmul, float32x8, [4], [])[0] = broadcast(0f32, 8)
+            matmul_1[1] = broadcast(0f32, 8)
+            matmul_1[2] = broadcast(0f32, 8)
+            matmul_1[3] = broadcast(0f32, 8)
             for (k.outer: int32, 0, 256) {
               for (k.inner: int32, 0, 4) {
                 let cse_var_2: int32 = (((floormod(i.outer.outer.j.outer.outer.fused, 128)*8192) + (k.outer*32)) + (k.inner*8))
                 let cse_var_1: int32 = ((((floordiv(i.outer.outer.j.outer.outer.fused, 128)*8192) + (i.outer.inner*4096)) + (k.outer*4)) + k.inner)
                  {
-                  matmul[ramp(0, 1, 8)] = ((float32x8*)matmul[ramp(0, 1, 8)] + (broadcast((float32*)A_2[cse_var_1], 8)*(float32x8*)auto_scheduler_layout_transform[ramp(cse_var_2, 1, 8)]))
-                  matmul[ramp(8, 1, 8)] = ((float32x8*)matmul[ramp(8, 1, 8)] + (broadcast((float32*)A_2[(cse_var_1 + 1024)], 8)*(float32x8*)auto_scheduler_layout_transform[ramp(cse_var_2, 1, 8)]))
-                  matmul[ramp(16, 1, 8)] = ((float32x8*)matmul[ramp(16, 1, 8)] + (broadcast((float32*)A_2[(cse_var_1 + 2048)], 8)*(float32x8*)auto_scheduler_layout_transform[ramp(cse_var_2, 1, 8)]))
-                  matmul[ramp(24, 1, 8)] = ((float32x8*)matmul[ramp(24, 1, 8)] + (broadcast((float32*)A_2[(cse_var_1 + 3072)], 8)*(float32x8*)auto_scheduler_layout_transform[ramp(cse_var_2, 1, 8)]))
+                  matmul_1[0] = (matmul_1[0] + (broadcast(A[cse_var_1], 8)*auto_scheduler_layout_transform_1[ramp(cse_var_2, 1, 8)]))
+                  matmul_1[1] = (matmul_1[1] + (broadcast(A[(cse_var_1 + 1024)], 8)*auto_scheduler_layout_transform_1[ramp(cse_var_2, 1, 8)]))
+                  matmul_1[2] = (matmul_1[2] + (broadcast(A[(cse_var_1 + 2048)], 8)*auto_scheduler_layout_transform_1[ramp(cse_var_2, 1, 8)]))
+                  matmul_1[3] = (matmul_1[3] + (broadcast(A[(cse_var_1 + 3072)], 8)*auto_scheduler_layout_transform_1[ramp(cse_var_2, 1, 8)]))
                 }
               }
             }
             for (i.inner: int32, 0, 4) {
               let cse_var_3: int32 = ((((floordiv(i.outer.outer.j.outer.outer.fused, 128)*8192) + (i.outer.inner*4096)) + (i.inner*1024)) + (floormod(i.outer.outer.j.outer.outer.fused, 128)*8))
-              out_2[ramp(cse_var_3, 1, 8)] = ((float32x8*)matmul[ramp((i.inner*8), 1, 8)] + (float32x8*)C_2[ramp(cse_var_3, 1, 8)])
+              out[ramp(cse_var_3, 1, 8)] = (matmul_1[i.inner] + C[ramp(cse_var_3, 1, 8)])
             }
           }
         }
@@ -305,7 +305,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 91.622 ms
+    Execution time of this operator: 92.564 ms
 
 
 
diff --git a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
index 20482c5..df3edf8 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': 459.8331874300493, 'median': 459.8385572000552, 'std': 0.2678026040172383}
+    {'mean': 491.39024845000677, 'median': 491.3854500499838, 'std': 1.1300138324741626}
 
 
 
@@ -482,31 +482,29 @@ 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:   12.00/  20.18 GFLOPS | Progress: (4/10) | 6.26 s
    [Task  1/25]  Current/Best:   19.98/  20.18 GFLOPS | Progress: (8/10) | 11.05 s
    [Task  1/25]  Current/Best:   23.96/  23.96 GFLOPS | Progress: (10/10) | 12.50 s Done.
-
    [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  2/25]  Current/Best:    6.71/  13.64 GFLOPS | Progress: (4/10) | 2.89 s
    [Task  2/25]  Current/Best:    6.58/  13.64 GFLOPS | Progress: (8/10) | 4.51 s
    [Task  2/25]  Current/Best:    5.29/  13.64 GFLOPS | Progress: (10/10) | 5.68 s Done.
-
    [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  3/25]  Current/Best:    9.58/  21.40 GFLOPS | Progress: (4/10) | 2.89 s
    [Task  3/25]  Current/Best:   15.20/  22.16 GFLOPS | Progress: (8/10) | 5.15 s
    [Task  3/25]  Current/Best:    7.97/  23.21 GFLOPS | Progress: (10/10) | 6.04 s Done.
-
    [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  4/25]  Current/Best:   10.19/  22.76 GFLOPS | Progress: (4/10) | 3.68 s
    [Task  4/25]  Current/Best:   13.63/  23.56 GFLOPS | Progress: (8/10) | 5.49 s
    [Task  4/25]  Current/Best:   20.99/  23.56 GFLOPS | Progress: (10/10) | 6.25 s Done.
-
    [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  5/25]  Current/Best:   16.69/  16.69 GFLOPS | Progress: (4/10) | 3.06 s
    [Task  5/25]  Current/Best:   10.42/  22.03 GFLOPS | Progress: (8/10) | 4.75 s
    [Task  5/25]  Current/Best:    5.36/  22.03 GFLOPS | Progress: (10/10) | 5.78 s Done.
-
    [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  6/25]  Current/Best:    6.07/  15.12 GFLOPS | Progress: (4/10) | 4.71 s
    [Task  6/25]  Current/Best:    9.64/  15.96 GFLOPS | Progress: (8/10) | 7.27 s
    [Task  6/25]  Current/Best:    5.89/  16.72 GFLOPS | Progress: (10/10) | 8.30 s Done.
-
    [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  7/25]  Current/Best:   16.39/  17.92 GFLOPS | Progress: (4/10) | 3.65 s
    [Task  7/25]  Current/Best:   17.33/  20.57 GFLOPS | Progress: (8/10) | 5.35 s
    [Task  7/25]  Current/Best:   13.11/  20.57 GFLOPS | Progress: (10/10) | 7.05 s Done.
-
    [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  8/25]  Current/Best:   12.15/  20.70 GFLOPS | Progress: (4/10) | 3.17 s
    [Task  8/25]  Current/Best:   15.53/  20.70 GFLOPS | Progress: (8/10) | 7.20 s
    [Task  8/25]  Current/Best:    5.75/  20.70 GFLOPS | Progress: (10/10) | 9.71 s Done.
-
    [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  9/25]  Current/Best:   17.19/  17.19 GFLOPS | Progress: (4/10) | 11.31 s
    [Task  9/25]  Current/Best:    7.20/  17.19 GFLOPS | Progress: (8/10) | 19.23 s
    [Task  9/25]  Current/Best:    6.45/  17.19 GFLOPS | Progress: (10/10) | 20.47 s Done.
-
    [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 10/25]  Current/Best:   14.43/  14.43 GFLOPS | Progress: (4/10) | 3.40 s
    [Task 10/25]  Current/Best:    9.74/  23.23 GFLOPS | Progress: (8/10) | 5.28 s
    [Task 10/25]  Current/Best:   18.50/  23.23 GFLOPS | Progress: (10/10) | 6.03 s Done.
-
    [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 11/25]  Current/Best:   19.10/  24.39 GFLOPS | Progress: (4/10) | 3.24 s
    [Task 11/25]  Current/Best:   12.62/  24.39 GFLOPS | Progress: (8/10) | 5.06 s
    [Task 11/25]  Current/Best:   21.89/  24.39 GFLOPS | Progress: (10/10) | 5.85 s Done.
-
    [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 12/25]  Current/Best:    4.56/  14.43 GFLOPS | Progress: (4/10) | 4.40 s
    [Task 12/25]  Current/Best:    7.56/  23.38 GFLOPS | Progress: (8/10) | 6.08 s
    [Task 12/25]  Current/Best:    3.24/  23.38 GFLOPS | Progress: (10/10) | 7.56 s Done.
-
    [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 13/25]  Current/Best:   11.17/  21.64 GFLOPS | Progress: (4/10) | 3.73 s
    [Task 13/25]  Current/Best:   16.35/  21.64 GFLOPS | Progress: (8/10) | 6.35 s
    [Task 13/25]  Current/Best:   21.42/  21.64 GFLOPS | Progress: (10/10) | 7.11 s Done.
-
    [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 14/25]  Current/Best:   18.97/  19.83 GFLOPS | Progress: (4/10) | 3.52 s
    [Task 14/25]  Current/Best:    3.11/  19.83 GFLOPS | Progress: (8/10) | 6.08 s
    [Task 14/25]  Current/Best:   11.74/  19.83 GFLOPS | Progress: (10/10) | 8.62 s
    [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s Done.
-
    [Task 15/25]  Current/Best:   20.59/  21.77 GFLOPS | Progress: (4/10) | 3.09 s
    [Task 15/25]  Current/Best:   13.93/  21.77 GFLOPS | Progress: (8/10) | 7.36 s
    [Task 15/25]  Current/Best:   21.38/  21.77 GFLOPS | Progress: (10/10) | 7.93 s Done.
-
    [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 16/25]  Current/Best:    8.78/  21.39 GFLOPS | Progress: (4/10) | 2.30 s
    [Task 16/25]  Current/Best:   14.24/  21.39 GFLOPS | Progress: (8/10) | 3.66 s
    [Task 16/25]  Current/Best:    5.92/  21.39 GFLOPS | Progress: (10/10) | 4.50 s Done.
-
    [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 17/25]  Current/Best:    9.69/  20.59 GFLOPS | Progress: (4/10) | 3.14 s
    [Task 17/25]  Current/Best:   11.01/  20.59 GFLOPS | Progress: (8/10) | 5.87 s
    [Task 17/25]  Current/Best:    1.60/  20.59 GFLOPS | Progress: (10/10) | 8.10 s Done.
-
    [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 18/25]  Current/Best:   10.86/  19.19 GFLOPS | Progress: (4/10) | 3.84 s
    [Task 18/25]  Current/Best:   11.35/  19.19 GFLOPS | Progress: (8/10) | 5.88 s
    [Task 18/25]  Current/Best:   13.62/  19.19 GFLOPS | Progress: (10/10) | 6.74 s Done.
-
    [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 19/25]  Current/Best:   23.08/  23.08 GFLOPS | Progress: (4/10) | 4.53 s
    [Task 19/25]  Current/Best:    9.62/  23.08 GFLOPS | Progress: (8/10) | 7.95 s
    [Task 19/25]  Current/Best:    5.18/  23.08 GFLOPS | Progress: (10/10) | 9.66 s Done.
-
    [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 20/25]  Current/Best:    6.59/  12.13 GFLOPS | Progress: (4/10) | 4.85 s
    [Task 20/25]  Current/Best:    2.60/  14.53 GFLOPS | Progress: (8/10) | 7.88 s
    [Task 20/25]  Current/Best:    0.00/  14.53 GFLOPS | Progress: (10/10) | 9.15 s
    [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 21/25]  Current/Best:   10.35/  18.02 GFLOPS | Progress: (4/10) | 4.38 s
    [Task 21/25]  Current/Best:   21.50/  21.50 GFLOPS | Progress: (8/10) | 6.25 s
    [Task 21/25]  Current/Best:   21.30/  21.50 GFLOPS | Progress: (10/10) | 6.82 s Done.
-
    [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 22/25]  Current/Best:   17.15/  20.50 GFLOPS | Progress: (4/10) | 2.49 s
    [Task 22/25]  Current/Best:   12.77/  20.50 GFLOPS | Progress: (8/10) | 4.14 s
    [Task 22/25]  Current/Best:   11.40/  21.55 GFLOPS | Progress: (10/10) | 4.99 s Done.
-
    [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 23/25]  Current/Best:   10.44/  15.17 GFLOPS | Progress: (4/10) | 3.50 s
    [Task 23/25]  Current/Best:   24.04/  24.04 GFLOPS | Progress: (8/10) | 5.56 s
    [Task 23/25]  Current/Best:   13.29/  24.04 GFLOPS | Progress: (10/10) | 7.00 s Done.
-
    [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 24/25]  Current/Best:    1.88/   1.88 GFLOPS | Progress: (4/10) | 90.91 s
    [Task 24/25]  Current/Best:   10.92/  10.92 GFLOPS | Progress: (8/10) | 93.46 s
    [Task 24/25]  Current/Best:    7.54/  10.92 GFLOPS | Progress: (10/10) | 120.90 s
    [Task 25/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:   16.59/  19.72 GFLOPS | Progress: (4/10) | 6.62 s
    [Task  1/25]  Current/Best:    8.71/  24.21 GFLOPS | Progress: (8/10) | 9.03 s
    [Task  1/25]  Current/Best:   14.61/  24.21 GFLOPS | Progress: (10/10) | 10.26 s Done.
+
    [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  2/25]  Current/Best:    6.48/  23.19 GFLOPS | Progress: (4/10) | 2.38 s
    [Task  2/25]  Current/Best:   15.35/  23.19 GFLOPS | Progress: (8/10) | 4.00 s
    [Task  2/25]  Current/Best:   16.23/  23.19 GFLOPS | Progress: (10/10) | 4.52 s Done.
+
    [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  3/25]  Current/Best:   10.40/  17.90 GFLOPS | Progress: (4/10) | 3.11 s
    [Task  3/25]  Current/Best:   10.60/  19.79 GFLOPS | Progress: (8/10) | 4.71 s
    [Task  3/25]  Current/Best:    6.46/  19.79 GFLOPS | Progress: (10/10) | 5.75 s Done.
+
    [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  4/25]  Current/Best:   10.00/  14.78 GFLOPS | Progress: (4/10) | 5.94 s
    [Task  4/25]  Current/Best:    4.83/  15.69 GFLOPS | Progress: (8/10) | 8.00 s
    [Task  4/25]  Current/Best:    6.73/  15.69 GFLOPS | Progress: (10/10) | 9.03 s Done.
+
    [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  5/25]  Current/Best:    1.80/  13.93 GFLOPS | Progress: (4/10) | 3.34 s
    [Task  5/25]  Current/Best:   15.89/  17.56 GFLOPS | Progress: (8/10) | 5.12 s
    [Task  5/25]  Current/Best:   18.71/  18.71 GFLOPS | Progress: (10/10) | 5.74 s Done.
+
    [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  6/25]  Current/Best:   12.13/  12.13 GFLOPS | Progress: (4/10) | 4.49 s
    [Task  6/25]  Current/Best:   12.37/  20.90 GFLOPS | Progress: (8/10) | 8.33 s
    [Task  6/25]  Current/Best:   10.21/  20.90 GFLOPS | Progress: (10/10) | 9.56 s Done.
+
    [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  7/25]  Current/Best:   14.03/  14.03 GFLOPS | Progress: (4/10) | 5.09 s
    [Task  7/25]  Current/Best:   13.51/  19.35 GFLOPS | Progress: (8/10) | 6.94 s
    [Task  7/25]  Current/Best:   11.50/  19.35 GFLOPS | Progress: (10/10) | 7.81 s Done.
+
    [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  8/25]  Current/Best:    5.31/  14.41 GFLOPS | Progress: (4/10) | 3.91 s
    [Task  8/25]  Current/Best:   13.50/  14.41 GFLOPS | Progress: (8/10) | 6.92 s
    [Task  8/25]  Current/Best:   10.07/  14.41 GFLOPS | Progress: (10/10) | 7.95 s Done.
+
    [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task  9/25]  Current/Best:   18.89/  18.89 GFLOPS | Progress: (4/10) | 12.79 s
    [Task  9/25]  Current/Best:   12.54/  18.89 GFLOPS | Progress: (8/10) | 15.36 s
    [Task  9/25]  Current/Best:   19.53/  19.53 GFLOPS | Progress: (10/10) | 15.98 s
    [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 10/25]  Current/Best:   16.60/  16.60 GFLOPS | Progress: (4/10) | 2.44 s
    [Task 10/25]  Current/Best:    5.55/  16.60 GFLOPS | Progress: (8/10) | 4.54 s
    [Task 10/25]  Current/Best:    3.02/  16.60 GFLOPS | Progress: (10/10) | 5.66 s Done.
+
    [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 11/25]  Current/Best:   16.64/  24.25 GFLOPS | Progress: (4/10) | 3.43 s
    [Task 11/25]  Current/Best:   15.92/  24.25 GFLOPS | Progress: (8/10) | 5.04 s
    [Task 11/25]  Current/Best:    7.66/  24.25 GFLOPS | Progress: (10/10) | 6.47 s Done.
+
    [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 12/25]  Current/Best:   16.28/  16.28 GFLOPS | Progress: (4/10) | 2.89 s
    [Task 12/25]  Current/Best:    6.13/  16.28 GFLOPS | Progress: (8/10) | 5.21 s
    [Task 12/25]  Current/Best:   15.14/  16.28 GFLOPS | Progress: (10/10) | 6.30 s Done.
+
    [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 13/25]  Current/Best:    5.59/  18.23 GFLOPS | Progress: (4/10) | 4.28 s
    [Task 13/25]  Current/Best:    7.01/  18.23 GFLOPS | Progress: (8/10) | 8.00 s
    [Task 13/25]  Current/Best:   18.35/  18.35 GFLOPS | Progress: (10/10) | 9.94 s Done.
+
    [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 14/25]  Current/Best:   12.10/  19.33 GFLOPS | Progress: (4/10) | 2.75 s Done.
+
    [Task 14/25]  Current/Best:    7.03/  22.96 GFLOPS | Progress: (8/10) | 4.67 s
    [Task 14/25]  Current/Best:    6.45/  22.96 GFLOPS | Progress: (10/10) | 5.79 s
    [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 15/25]  Current/Best:   19.92/  19.92 GFLOPS | Progress: (4/10) | 8.23 s
    [Task 15/25]  Current/Best:   16.07/  19.92 GFLOPS | Progress: (8/10) | 10.46 s
    [Task 15/25]  Current/Best:   21.98/  21.98 GFLOPS | Progress: (10/10) | 11.00 s
    [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 16/25]  Current/Best:   19.37/  19.37 GFLOPS | Progress: (4/10) | 2.99 s
    [Task 16/25]  Current/Best:    3.09/  19.37 GFLOPS | Progress: (8/10) | 5.24 s
    [Task 16/25]  Current/Best:   15.73/  19.37 GFLOPS | Progress: (10/10) | 6.00 s Done.
+
    [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 17/25]  Current/Best:   14.95/  19.05 GFLOPS | Progress: (4/10) | 3.28 s
    [Task 17/25]  Current/Best:   10.16/  19.05 GFLOPS | Progress: (8/10) | 5.93 s
    [Task 17/25]  Current/Best:   15.91/  19.05 GFLOPS | Progress: (10/10) | 6.80 s Done.
+
    [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 18/25]  Current/Best:   18.66/  21.87 GFLOPS | Progress: (4/10) | 2.61 s
    [Task 18/25]  Current/Best:   18.28/  22.39 GFLOPS | Progress: (8/10) | 4.23 s
    [Task 18/25]  Current/Best:    9.77/  22.39 GFLOPS | Progress: (10/10) | 8.23 s Done.
+
    [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 19/25]  Current/Best:   24.07/  24.07 GFLOPS | Progress: (4/10) | 4.21 s
    [Task 19/25]  Current/Best:   12.72/  24.07 GFLOPS | Progress: (8/10) | 7.59 s
    [Task 19/25]  Current/Best:   14.15/  24.07 GFLOPS | Progress: (10/10) | 8.47 s Done.
+
    [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 20/25]  Current/Best:    5.33/  19.46 GFLOPS | Progress: (4/10) | 3.67 s
    [Task 20/25]  Current/Best:   18.59/  19.46 GFLOPS | Progress: (8/10) | 6.51 s
    [Task 20/25]  Current/Best:   10.74/  19.46 GFLOPS | Progress: (10/10) | 7.48 s
    [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 21/25]  Current/Best:   17.19/  17.19 GFLOPS | Progress: (4/10) | 2.97 s
    [Task 21/25]  Current/Best:    9.14/  17.19 GFLOPS | Progress: (8/10) | 5.76 s Done.
      Done.
-
    [Task 25/25]  Current/Best:    1.56/   8.24 GFLOPS | Progress: (4/10) | 14.05 s
    [Task 25/25]  Current/Best:   10.02/  10.02 GFLOPS | Progress: (8/10) | 15.69 s
    [Task 25/25]  Current/Best:    9.62/  10.02 GFLOPS | Progress: (10/10) | 37.57 s
+
    [Task 21/25]  Current/Best:    2.62/  17.19 GFLOPS | Progress: (10/10) | 7.20 s
    [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 22/25]  Current/Best:   18.09/  18.09 GFLOPS | Progress: (4/10) | 3.31 s
    [Task 22/25]  Current/Best:   10.16/  18.09 GFLOPS | Progress: (8/10) | 6.01 s
    [Task 22/25]  Current/Best:    7.34/  18.09 GFLOPS | Progress: (10/10) | 6.92 s Done.
+
    [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 23/25]  Current/Best:   12.15/  18.24 GFLOPS | Progress: (4/10) | 3.84 s
    [Task 23/25]  Current/Best:   13.76/  18.39 GFLOPS | Progress: (8/10) | 6.53 s
    [Task 23/25]  Current/Best:   11.21/  18.39 GFLOPS | Progress: (10/10) | 8.34 s Done.
+
    [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s
    [Task 24/25]  Current/Best:    4.82/   4.82 GFLOPS | Progress: (4/10) | 1514.50 s
    [Task 24/25]  Current/Best:    3.36/   7.91 GFLOPS | Progress: (8/10) | 1540.02 s
    [Task 24/25]  Current/Best:    1.53/   7.91 GFLOPS | Progress: (10/10) | 1550.12 s
    [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/10) | 0.00 s Done.
+
    [Task 25/25]  Current/Best:    8.56/   8.96 GFLOPS | Progress: (4/10) | 29.42 s
    [Task 25/25]  Current/Best:    9.53/   9.53 GFLOPS | Progress: (8/10) | 42.32 s
    [Task 25/25]  Current/Best:    7.92/   9.53 GFLOPS | Progress: (10/10) | 42.82 s
 
 
 The output from this tuning process will look something like this:
@@ -594,7 +592,7 @@ Verify that the optimized model runs and produces the same results:
 
  .. code-block:: none
 
-    class='n02123045 tabby, tabby cat' with probability=0.610551
+    class='n02123045 tabby, tabby cat' with probability=0.610552
     class='n02123159 tiger cat' with probability=0.367180
     class='n02124075 Egyptian cat' with probability=0.019365
     class='n02129604 tiger, Panthera tigris' with probability=0.001273
@@ -648,8 +646,8 @@ improvement in comparing the optimized model to the unoptimized model.
 
  .. code-block:: none
 
-    optimized: {'mean': 400.77897977995235, 'median': 400.63379584998984, 'std': 0.7712409727095774}
-    unoptimized: {'mean': 459.8331874300493, 'median': 459.8385572000552, 'std': 0.2678026040172383}
+    optimized: {'mean': 450.5758023400267, 'median': 450.24263310006063, 'std': 1.294131255260828}
+    unoptimized: {'mean': 491.39024845000677, 'median': 491.3854500499838, 'std': 1.1300138324741626}
 
 
 
@@ -669,7 +667,7 @@ profiling/benchmarking.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 8 minutes  40.851 seconds)
+   **Total running time of the script:** ( 32 minutes  41.859 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 5bf6d66..d13821f 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.22e-07 secs/op
+    1.243e-07 secs/op
 
 
 
diff --git a/docs/_sources/tutorial/intro_topi.rst.txt b/docs/_sources/tutorial/intro_topi.rst.txt
index 4009acf..2fb1239 100644
--- a/docs/_sources/tutorial/intro_topi.rst.txt
+++ b/docs/_sources/tutorial/intro_topi.rst.txt
@@ -77,13 +77,13 @@ and to examine the IR code in human readable format, we can do
 
     @main = primfn(A_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {A: Buffer(A_2: Pointer(float32), float32, [n: int32, m: int32], [stride: int32, stride_1: int32], type="auto")}
+      buffers = {A: Buffer(A_2: Pointer(float32), float32, [(stride: int32*n: int32)], [], type="auto")}
       buffer_map = {A_1: A} {
       allocate(B: Pointer(global float32), float32, [n]), storage_scope = global;
       for (i: int32, 0, n) {
-        B[i] = 0f32
-        for (k: int32, 0, m) {
-          B[i] = ((float32*)B[i] + (float32*)A_2[((i*stride) + (k*stride_1))])
+        B_1: Buffer(B, float32, [n], [])[i] = 0f32
+        for (k: int32, 0, m: int32) {
+          B_1[i] = (B_1[i] + A[((i*stride) + (k*stride_1: int32))])
         }
       }
     }
@@ -116,13 +116,13 @@ Fortunately, we can replace those two lines with simple :code:`topi.sum` much li
 
     @main = primfn(A_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {A: Buffer(A_2: Pointer(float32), float32, [n: int32, m: int32], [stride: int32, stride_1: int32], type="auto")}
+      buffers = {A: Buffer(A_2: Pointer(float32), float32, [(stride: int32*n: int32)], [], type="auto")}
       buffer_map = {A_1: A} {
       allocate(A_red: Pointer(global float32), float32, [n]), storage_scope = global;
       for (ax0: int32, 0, n) {
-        A_red[ax0] = 0f32
-        for (k1: int32, 0, m) {
-          A_red[ax0] = ((float32*)A_red[ax0] + (float32*)A_2[((ax0*stride) + (k1*stride_1))])
+        A_red_1: Buffer(A_red, float32, [n], [])[ax0] = 0f32
+        for (k1: int32, 0, m: int32) {
+          A_red_1[ax0] = (A_red_1[ax0] + A[((ax0*stride) + (k1*stride_1: int32))])
         }
       }
     }
@@ -183,27 +183,27 @@ we can schedule the following series of operations ending with :code:`topi.sum`
 
  .. code-block:: none
 
-    /workspace/python/tvm/target/target.py:282: UserWarning: Try specifying cuda arch by adding 'arch=sm_xx' to your target.
+    /workspace/python/tvm/target/target.py:288: 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}
-      buffers = {b: Buffer(b_2: Pointer(float32), float32, [10, 10], []),
-                 a: Buffer(a_2: Pointer(float32), float32, [100, 10, 10], [])}
+      buffers = {b: Buffer(b_2: Pointer(float32), float32, [100], []),
+                 a: Buffer(a_2: Pointer(float32), float32, [10000], [])}
       buffer_map = {a_1: a, b_1: b} {
       allocate(T_divide_red: Pointer(global float32), float32, [1]), storage_scope = global;
       attr [IterVar(threadIdx.x: int32, [0:1024], "ThreadIndex", "threadIdx.x")] "thread_extent" = 1024;
       allocate(T_divide_red.rf: Pointer(local float32), float32, [1]), storage_scope = local;
       allocate(reduce_temp0: Pointer(local float32), float32, [1]), storage_scope = local {
-        T_divide_red.rf[0] = 0f32
+        T_divide_red.rf_1: Buffer(T_divide_red.rf, float32, [1], [], scope="local", align=4)[0] = 0f32
         for (k0.k1.fused.k2.fused.outer: int32, 0, 10) {
           if @tir.likely((((((k0.k1.fused.k2.fused.outer*64) + floordiv(threadIdx.x, 16)) < 625) && (((k0.k1.fused.k2.fused.outer*64) + floordiv(threadIdx.x, 16)) < 625)) && (((k0.k1.fused.k2.fused.outer*64) + floordiv(threadIdx.x, 16)) < 625)), dtype=bool) {
-            T_divide_red.rf[0] = ((float32*)T_divide_red.rf[0] + ((((float32*)a_2[((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x)] + (float32*)b_2[floormod(((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x), 100)]) + ((float32*)a_2[((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x)]*(float32*)b_2[floormod(((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x), 100)]))*0.5f32))
+            T_divide_red.rf_1[0] = (T_divide_red.rf_1[0] + (((a[((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x)] + b[floormod(((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x), 100)]) + (a[((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x)]*b[floormod(((k0.k1.fused.k2.fused.outer*1024) + threadIdx.x), 100)]))*0.5f32))
           }
         }
         attr [meta[tir.CommReducer][0]] "reduce_scope" = @tir.reinterpret(0u64, dtype=handle);
-        @tir.tvm_thread_allreduce(1u32, (float32*)T_divide_red.rf[0], True, reduce_temp0, threadIdx.x, dtype=handle)
+        @tir.tvm_thread_allreduce(1u32, T_divide_red.rf_1[0], True, reduce_temp0_1: Buffer(reduce_temp0, float32, [1], [], scope="local")[0], threadIdx.x, dtype=handle)
         if (threadIdx.x == 0) {
-          T_divide_red[0] = (float32*)reduce_temp0[0]
+          T_divide_red_1: Buffer(T_divide_red, float32, [1], [], align=4)[0] = reduce_temp0_1[0]
         }
       }
     }
@@ -230,7 +230,7 @@ As you can see, scheduled stages of computation have been accumulated and we can
 
  .. code-block:: none
 
-    [stage(a, placeholder(a, 0xa97c570)), stage(b, placeholder(b, 0x1b9f3040)), 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, 0x2092de30)), stage(b, placeholder(b, 0x22703940)), 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(mi [...]
 
 
 
@@ -281,7 +281,7 @@ TOPI also provides common neural nets operations such as _softmax_ with optimize
 
     @main = primfn(tarray_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {tarray: Buffer(tarray_2: Pointer(float32), float32, [512, 512], [])}
+      buffers = {tarray: Buffer(tarray_2: Pointer(float32), float32, [262144], [])}
       buffer_map = {tarray_1: tarray} {
       allocate(T_softmax_norm: Pointer(global float32x4), float32x4, [65536]), storage_scope = global;
       attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 512;
@@ -291,27 +291,26 @@ TOPI also provides common neural nets operations such as _softmax_ with optimize
       allocate(normal_reduce_temp0_1: Pointer(local float32), float32, [1]), storage_scope = local;
       allocate(reduce_temp0_1: Pointer(local float32), float32, [1]), storage_scope = local {
         attr [IterVar(threadIdx.x: int32, [0:32], "ThreadIndex", "threadIdx.x")] "thread_extent" = 32 {
-          normal_reduce_temp0[0] = -3.40282e+38f32
+          normal_reduce_temp0_2: Buffer(normal_reduce_temp0, float32, [1], [], scope="local")[0] = -3.40282e+38f32
           for (k.inner: int32, 0, 16) {
-            normal_reduce_temp0[0] = max((float32*)normal_reduce_temp0[0], (float32*)tarray_2[(((blockIdx.x*512) + (threadIdx.x*16)) + k.inner)])
+            normal_reduce_temp0_2[0] = max(normal_reduce_temp0_2[0], tarray[(((blockIdx.x*512) + (threadIdx.x*16)) + k.inner)])
           }
           attr [meta[tir.CommReducer][0]] "reduce_scope" = @tir.reinterpret(0u64, dtype=handle);
-          @tir.tvm_thread_allreduce(1u32, (float32*)normal_reduce_temp0[0], True, reduce_temp0, threadIdx.x, dtype=handle)
+          @tir.tvm_thread_allreduce(1u32, normal_reduce_temp0_2[0], True, reduce_temp0_2: Buffer(reduce_temp0, float32, [1], [], scope="local")[0], threadIdx.x, dtype=handle)
           for (i1.inner.outer: int32, 0, 4) {
             let cse_var_1: int32 = (i1.inner.outer*4)
-            T_softmax_exp[ramp(((threadIdx.x*16) + cse_var_1), 1, 4)] = @tir.exp(((float32x4*)tarray_2[ramp((((blockIdx.x*512) + (threadIdx.x*16)) + cse_var_1), 1, 4)] - broadcast((float32*)reduce_temp0[0], 4)), dtype=float32x4)
+            T_softmax_exp_1: Buffer(T_softmax_exp, float32, [512], [], scope="warp")[ramp(((threadIdx.x*16) + cse_var_1), 1, 4)] = @tir.exp((tarray[ramp((((blockIdx.x*512) + (threadIdx.x*16)) + cse_var_1), 1, 4)] - broadcast(reduce_temp0_3: Buffer(reduce_temp0, float32, [1], [], scope="local", align=4)[0], 4)), dtype=float32x4)
           }
         }
         attr [IterVar(threadIdx.x, [0:32], "ThreadIndex", "threadIdx.x")] "thread_extent" = 32 {
-          normal_reduce_temp0_1[0] = 0f32
+          normal_reduce_temp0_3: Buffer(normal_reduce_temp0_1, float32, [1], [], scope="local")[0] = 0f32
           for (k.inner_1: int32, 0, 16) {
-            normal_reduce_temp0_1[0] = ((float32*)normal_reduce_temp0_1[0] + (float32*)T_softmax_exp[((threadIdx.x*16) + k.inner_1)])
+            normal_reduce_temp0_3[0] = (normal_reduce_temp0_3[0] + T_softmax_exp_1[((threadIdx.x*16) + k.inner_1)])
           }
           attr [meta[tir.CommReducer][1]] "reduce_scope" = @tir.reinterpret(0u64, dtype=handle);
-          @tir.tvm_thread_allreduce(1u32, (float32*)normal_reduce_temp0_1[0], True, reduce_temp0_1, threadIdx.x, dtype=handle)
+          @tir.tvm_thread_allreduce(1u32, normal_reduce_temp0_3[0], True, reduce_temp0_4: Buffer(reduce_temp0_1, float32, [1], [], scope="local")[0], threadIdx.x, dtype=handle)
           for (i1.inner.outer_1: int32, 0, 4) {
-            let cse_var_2: int32 = (i1.inner.outer_1*4)
-            T_softmax_norm[ramp((((blockIdx.x*512) + (threadIdx.x*16)) + cse_var_2), 1, 4)] = ((float32x4*)T_softmax_exp[ramp(((threadIdx.x*16) + cse_var_2), 1, 4)] / broadcast((float32*)reduce_temp0_1[0], 4))
+            T_softmax_norm_1: Buffer(T_softmax_norm, float32x4, [65536], [])[(((blockIdx.x*128) + (threadIdx.x*4)) + i1.inner.outer_1)] = (T_softmax_exp_1[ramp(((threadIdx.x*16) + (i1.inner.outer_1*4)), 1, 4)] / broadcast(reduce_temp0_5: Buffer(reduce_temp0_1, float32, [1], [], scope="local", align=4)[0], 4))
           }
         }
       }
@@ -358,8 +357,8 @@ We can fuse :code:`topi.nn.conv2d` and :code:`topi.nn.relu` together.
 
     @main = primfn(placeholder_2: handle, placeholder_3: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {placeholder_1: Buffer(placeholder_4: Pointer(float32), float32, [10, 3, 5, 5], []),
-                 placeholder: Buffer(placeholder_5: Pointer(float32), float32, [1, 3, 224, 224], [])}
+      buffers = {placeholder_1: Buffer(placeholder_4: Pointer(float32), float32, [750], []),
+                 placeholder: Buffer(placeholder_5: Pointer(float32), float32, [150528], [])}
       buffer_map = {placeholder_2: placeholder, placeholder_3: placeholder_1} {
       allocate(compute: Pointer(global float32), float32, [501760]), storage_scope = global;
       attr [IterVar(blockIdx.z: int32, (nullptr), "ThreadIndex", "blockIdx.z")] "thread_extent" = 5;
@@ -371,193 +370,193 @@ We can fuse :code:`topi.nn.conv2d` and :code:`topi.nn.relu` together.
       attr [IterVar(threadIdx.z: int32, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
       attr [IterVar(threadIdx.y: int32, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
       attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16 {
-        conv2d_nchw[0] = 0f32
-        conv2d_nchw[2] = 0f32
-        conv2d_nchw[4] = 0f32
-        conv2d_nchw[6] = 0f32
-        conv2d_nchw[8] = 0f32
-        conv2d_nchw[10] = 0f32
-        conv2d_nchw[12] = 0f32
-        conv2d_nchw[1] = 0f32
-        conv2d_nchw[3] = 0f32
-        conv2d_nchw[5] = 0f32
-        conv2d_nchw[7] = 0f32
-        conv2d_nchw[9] = 0f32
-        conv2d_nchw[11] = 0f32
-        conv2d_nchw[13] = 0f32
+        conv2d_nchw_1: Buffer(conv2d_nchw, float32, [4], [], scope="local", align=8)[0] = 0f32
+        conv2d_nchw_1[2] = 0f32
+        conv2d_nchw_1[4] = 0f32
+        conv2d_nchw_1[6] = 0f32
+        conv2d_nchw_1[8] = 0f32
+        conv2d_nchw_1[10] = 0f32
+        conv2d_nchw_1[12] = 0f32
+        conv2d_nchw_1[1] = 0f32
+        conv2d_nchw_1[3] = 0f32
+        conv2d_nchw_1[5] = 0f32
+        conv2d_nchw_1[7] = 0f32
+        conv2d_nchw_1[9] = 0f32
+        conv2d_nchw_1[11] = 0f32
+        conv2d_nchw_1[13] = 0f32
         for (rc.outer: int32, 0, 3) {
           for (ry.outer: int32, 0, 5) {
             attr [IterVar(threadIdx.z_1: int32, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_1: int32, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_1: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16 {
-              pad_temp.shared[(threadIdx.x_1*7)] = @tir.if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (1 <= ((blockIdx.x*56) + floordiv((threadIdx.x_1*7), 2)))), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 450)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tir.if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (1 <= ((blockIdx.x*56) + floordiv(((threadIdx.x_1*7) + 1), 2)))), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 449)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 448)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)], 0f32, dtype=float32)
+              pad_temp.shared_1: Buffer(pad_temp.shared, float32, [112], [], scope="shared")[(threadIdx.x_1*7)] = @tir.if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (1 <= ((blockIdx.x*56) + floordiv((threadIdx.x_1*7), 2)))), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 450)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 1)] = @tir.if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (1 <= ((blockIdx.x*56) + floordiv(((threadIdx.x_1*7) + 1), 2)))), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 449)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 2)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 448)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 3)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 4)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 5)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 6)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)], 0f32, dtype=float32)
             }
             attr [IterVar(threadIdx.z_2: int32, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_2: int32, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_2: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16;
             if @tir.likely((threadIdx.x_2 < 2), dtype=bool) {
-              placeholder.shared[threadIdx.x_2] = (float32*)placeholder_4[((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5))]
+              placeholder.shared_1: Buffer(placeholder.shared, float32, [2], [], scope="shared", align=8)[threadIdx.x_2] = placeholder_1[((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5))]
             }
-            conv2d_nchw[0] = ((float32*)conv2d_nchw[0] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[2] = ((float32*)conv2d_nchw[2] + ((float32*)pad_temp.shared[(threadIdx.x + 16)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[4] = ((float32*)conv2d_nchw[4] + ((float32*)pad_temp.shared[(threadIdx.x + 32)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[6] = ((float32*)conv2d_nchw[6] + ((float32*)pad_temp.shared[(threadIdx.x + 48)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[8] = ((float32*)conv2d_nchw[8] + ((float32*)pad_temp.shared[(threadIdx.x + 64)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[10] = ((float32*)conv2d_nchw[10] + ((float32*)pad_temp.shared[(threadIdx.x + 80)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[12] = ((float32*)conv2d_nchw[12] + ((float32*)pad_temp.shared[(threadIdx.x + 96)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[1] = ((float32*)conv2d_nchw[1] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[3] = ((float32*)conv2d_nchw[3] + ((float32*)pad_temp.shared[(threadIdx.x + 16)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[5] = ((float32*)conv2d_nchw[5] + ((float32*)pad_temp.shared[(threadIdx.x + 32)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[7] = ((float32*)conv2d_nchw[7] + ((float32*)pad_temp.shared[(threadIdx.x + 48)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[9] = ((float32*)conv2d_nchw[9] + ((float32*)pad_temp.shared[(threadIdx.x + 64)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[11] = ((float32*)conv2d_nchw[11] + ((float32*)pad_temp.shared[(threadIdx.x + 80)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[13] = ((float32*)conv2d_nchw[13] + ((float32*)pad_temp.shared[(threadIdx.x + 96)]*(float32*)placeholder.shared[1]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[threadIdx.x]*placeholder.shared_1[0]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(threadIdx.x + 16)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(threadIdx.x + 32)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(threadIdx.x + 48)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[(threadIdx.x + 64)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[(threadIdx.x + 80)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[(threadIdx.x + 96)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[threadIdx.x]*placeholder.shared_1[1]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(threadIdx.x + 16)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(threadIdx.x + 32)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[(threadIdx.x + 48)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[(threadIdx.x + 64)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[(threadIdx.x + 80)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[(threadIdx.x + 96)]*placeholder.shared_1[1]))
             attr [IterVar(threadIdx.z_1, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_1, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16 {
-              pad_temp.shared[(threadIdx.x_1*7)] = @tir.if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (1 <= ((blockIdx.x*56) + floordiv(((threadIdx.x_1*7) + 1), 2)))), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 449)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 448)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)], 0f32, dtype=float32)
+              pad_temp.shared_1[(threadIdx.x_1*7)] = @tir.if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (1 <= ((blockIdx.x*56) + floordiv(((threadIdx.x_1*7) + 1), 2)))), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 449)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 1)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 448)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 2)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 3)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 4)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 5)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 6)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)], 0f32, dtype=float32)
             }
             attr [IterVar(threadIdx.z_2, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_2, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16;
             if @tir.likely((threadIdx.x_2 < 2), dtype=bool) {
-              placeholder.shared[threadIdx.x_2] = (float32*)placeholder_4[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 1)]
+              placeholder.shared_1[threadIdx.x_2] = placeholder_1[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 1)]
             }
-            conv2d_nchw[0] = ((float32*)conv2d_nchw[0] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[2] = ((float32*)conv2d_nchw[2] + ((float32*)pad_temp.shared[(threadIdx.x + 16)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[4] = ((float32*)conv2d_nchw[4] + ((float32*)pad_temp.shared[(threadIdx.x + 32)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[6] = ((float32*)conv2d_nchw[6] + ((float32*)pad_temp.shared[(threadIdx.x + 48)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[8] = ((float32*)conv2d_nchw[8] + ((float32*)pad_temp.shared[(threadIdx.x + 64)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[10] = ((float32*)conv2d_nchw[10] + ((float32*)pad_temp.shared[(threadIdx.x + 80)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[12] = ((float32*)conv2d_nchw[12] + ((float32*)pad_temp.shared[(threadIdx.x + 96)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[1] = ((float32*)conv2d_nchw[1] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[3] = ((float32*)conv2d_nchw[3] + ((float32*)pad_temp.shared[(threadIdx.x + 16)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[5] = ((float32*)conv2d_nchw[5] + ((float32*)pad_temp.shared[(threadIdx.x + 32)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[7] = ((float32*)conv2d_nchw[7] + ((float32*)pad_temp.shared[(threadIdx.x + 48)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[9] = ((float32*)conv2d_nchw[9] + ((float32*)pad_temp.shared[(threadIdx.x + 64)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[11] = ((float32*)conv2d_nchw[11] + ((float32*)pad_temp.shared[(threadIdx.x + 80)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[13] = ((float32*)conv2d_nchw[13] + ((float32*)pad_temp.shared[(threadIdx.x + 96)]*(float32*)placeholder.shared[1]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[threadIdx.x]*placeholder.shared_1[0]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(threadIdx.x + 16)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(threadIdx.x + 32)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(threadIdx.x + 48)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[(threadIdx.x + 64)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[(threadIdx.x + 80)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[(threadIdx.x + 96)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[threadIdx.x]*placeholder.shared_1[1]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(threadIdx.x + 16)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(threadIdx.x + 32)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[(threadIdx.x + 48)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[(threadIdx.x + 64)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[(threadIdx.x + 80)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[(threadIdx.x + 96)]*placeholder.shared_1[1]))
             attr [IterVar(threadIdx.z_1, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_1, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16 {
-              pad_temp.shared[(threadIdx.x_1*7)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 448)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 442)], 0f32, dtype=float32)
+              pad_temp.shared_1[(threadIdx.x_1*7)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 448)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 1)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 2)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 3)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 4)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 5)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 6)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 442)], 0f32, dtype=float32)
             }
             attr [IterVar(threadIdx.z_2, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_2, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16;
             if @tir.likely((threadIdx.x_2 < 2), dtype=bool) {
-              placeholder.shared[threadIdx.x_2] = (float32*)placeholder_4[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 2)]
+              placeholder.shared_1[threadIdx.x_2] = placeholder_1[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 2)]
             }
-            conv2d_nchw[0] = ((float32*)conv2d_nchw[0] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[2] = ((float32*)conv2d_nchw[2] + ((float32*)pad_temp.shared[(threadIdx.x + 16)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[4] = ((float32*)conv2d_nchw[4] + ((float32*)pad_temp.shared[(threadIdx.x + 32)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[6] = ((float32*)conv2d_nchw[6] + ((float32*)pad_temp.shared[(threadIdx.x + 48)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[8] = ((float32*)conv2d_nchw[8] + ((float32*)pad_temp.shared[(threadIdx.x + 64)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[10] = ((float32*)conv2d_nchw[10] + ((float32*)pad_temp.shared[(threadIdx.x + 80)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[12] = ((float32*)conv2d_nchw[12] + ((float32*)pad_temp.shared[(threadIdx.x + 96)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[1] = ((float32*)conv2d_nchw[1] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[3] = ((float32*)conv2d_nchw[3] + ((float32*)pad_temp.shared[(threadIdx.x + 16)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[5] = ((float32*)conv2d_nchw[5] + ((float32*)pad_temp.shared[(threadIdx.x + 32)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[7] = ((float32*)conv2d_nchw[7] + ((float32*)pad_temp.shared[(threadIdx.x + 48)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[9] = ((float32*)conv2d_nchw[9] + ((float32*)pad_temp.shared[(threadIdx.x + 64)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[11] = ((float32*)conv2d_nchw[11] + ((float32*)pad_temp.shared[(threadIdx.x + 80)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[13] = ((float32*)conv2d_nchw[13] + ((float32*)pad_temp.shared[(threadIdx.x + 96)]*(float32*)placeholder.shared[1]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[threadIdx.x]*placeholder.shared_1[0]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(threadIdx.x + 16)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(threadIdx.x + 32)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(threadIdx.x + 48)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[(threadIdx.x + 64)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[(threadIdx.x + 80)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[(threadIdx.x + 96)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[threadIdx.x]*placeholder.shared_1[1]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(threadIdx.x + 16)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(threadIdx.x + 32)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[(threadIdx.x + 48)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[(threadIdx.x + 64)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[(threadIdx.x + 80)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[(threadIdx.x + 96)]*placeholder.shared_1[1]))
             attr [IterVar(threadIdx.z_1, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_1, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16 {
-              pad_temp.shared[(threadIdx.x_1*7)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 442)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tir.if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (((blockIdx.x*56) + floordiv(((threadIdx.x_1*7) + 9), 2)) < 113)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 441)], 0f32, dtype=float32)
+              pad_temp.shared_1[(threadIdx.x_1*7)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 447)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 1)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 2)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 3)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 4)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 5)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 442)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 6)] = @tir.if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (((blockIdx.x*56) + floordiv(((threadIdx.x_1*7) + 9), 2)) < 113)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 441)], 0f32, dtype=float32)
             }
             attr [IterVar(threadIdx.z_2, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_2, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16;
             if @tir.likely((threadIdx.x_2 < 2), dtype=bool) {
-              placeholder.shared[threadIdx.x_2] = (float32*)placeholder_4[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 3)]
+              placeholder.shared_1[threadIdx.x_2] = placeholder_1[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 3)]
             }
-            conv2d_nchw[0] = ((float32*)conv2d_nchw[0] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[2] = ((float32*)conv2d_nchw[2] + ((float32*)pad_temp.shared[(threadIdx.x + 16)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[4] = ((float32*)conv2d_nchw[4] + ((float32*)pad_temp.shared[(threadIdx.x + 32)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[6] = ((float32*)conv2d_nchw[6] + ((float32*)pad_temp.shared[(threadIdx.x + 48)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[8] = ((float32*)conv2d_nchw[8] + ((float32*)pad_temp.shared[(threadIdx.x + 64)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[10] = ((float32*)conv2d_nchw[10] + ((float32*)pad_temp.shared[(threadIdx.x + 80)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[12] = ((float32*)conv2d_nchw[12] + ((float32*)pad_temp.shared[(threadIdx.x + 96)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[1] = ((float32*)conv2d_nchw[1] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[3] = ((float32*)conv2d_nchw[3] + ((float32*)pad_temp.shared[(threadIdx.x + 16)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[5] = ((float32*)conv2d_nchw[5] + ((float32*)pad_temp.shared[(threadIdx.x + 32)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[7] = ((float32*)conv2d_nchw[7] + ((float32*)pad_temp.shared[(threadIdx.x + 48)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[9] = ((float32*)conv2d_nchw[9] + ((float32*)pad_temp.shared[(threadIdx.x + 64)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[11] = ((float32*)conv2d_nchw[11] + ((float32*)pad_temp.shared[(threadIdx.x + 80)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[13] = ((float32*)conv2d_nchw[13] + ((float32*)pad_temp.shared[(threadIdx.x + 96)]*(float32*)placeholder.shared[1]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[threadIdx.x]*placeholder.shared_1[0]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(threadIdx.x + 16)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(threadIdx.x + 32)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(threadIdx.x + 48)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[(threadIdx.x + 64)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[(threadIdx.x + 80)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[(threadIdx.x + 96)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[threadIdx.x]*placeholder.shared_1[1]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(threadIdx.x + 16)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(threadIdx.x + 32)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[(threadIdx.x + 48)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[(threadIdx.x + 64)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[(threadIdx.x + 80)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[(threadIdx.x + 96)]*placeholder.shared_1[1]))
             attr [IterVar(threadIdx.z_1, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_1, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16 {
-              pad_temp.shared[(threadIdx.x_1*7)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 1)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 2)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 3)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 4)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 442)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 5)] = @tir.if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (((blockIdx.x*56) + floordiv(((threadIdx.x_1*7) + 9), 2)) < 113)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 441)], 0f32, dtype=float32)
-              pad_temp.shared[((threadIdx.x_1*7) + 6)] = @tir.if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (((blockIdx.x*56) + floordiv((threadIdx.x_1*7), 2)) < 108)), (float32*)placeholder_5[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 440)], 0f32, dtype=float32)
+              pad_temp.shared_1[(threadIdx.x_1*7)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 446)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 1)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 445)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 2)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 444)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 3)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 443)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 4)] = @tir.if_then_else(((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 442)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 5)] = @tir.if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (((blockIdx.x*56) + floordiv(((threadIdx.x_1*7) + 9), 2)) < 113)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 441)], 0f32, dtype=float32)
+              pad_temp.shared_1[((threadIdx.x_1*7) + 6)] = @tir.if_then_else((((2 <= (blockIdx.y + ry.outer)) && ((blockIdx.y + ry.outer) < 226)) && (((blockIdx.x*56) + floordiv((threadIdx.x_1*7), 2)) < 108)), placeholder[((((((rc.outer*50176) + (blockIdx.y*224)) + (ry.outer*224)) + (blockIdx.x*112)) + (threadIdx.x_1*7)) - 440)], 0f32, dtype=float32)
             }
             attr [IterVar(threadIdx.z_2, (nullptr), "ThreadIndex", "threadIdx.z")] "thread_extent" = 1;
             attr [IterVar(threadIdx.y_2, (nullptr), "ThreadIndex", "threadIdx.y")] "thread_extent" = 1;
             attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 16;
             if @tir.likely((threadIdx.x_2 < 2), dtype=bool) {
-              placeholder.shared[threadIdx.x_2] = (float32*)placeholder_4[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 4)]
+              placeholder.shared_1[threadIdx.x_2] = placeholder_1[(((((blockIdx.z*150) + (threadIdx.x_2*75)) + (rc.outer*25)) + (ry.outer*5)) + 4)]
             }
-            conv2d_nchw[0] = ((float32*)conv2d_nchw[0] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[2] = ((float32*)conv2d_nchw[2] + ((float32*)pad_temp.shared[(threadIdx.x + 16)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[4] = ((float32*)conv2d_nchw[4] + ((float32*)pad_temp.shared[(threadIdx.x + 32)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[6] = ((float32*)conv2d_nchw[6] + ((float32*)pad_temp.shared[(threadIdx.x + 48)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[8] = ((float32*)conv2d_nchw[8] + ((float32*)pad_temp.shared[(threadIdx.x + 64)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[10] = ((float32*)conv2d_nchw[10] + ((float32*)pad_temp.shared[(threadIdx.x + 80)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[12] = ((float32*)conv2d_nchw[12] + ((float32*)pad_temp.shared[(threadIdx.x + 96)]*(float32*)placeholder.shared[0]))
-            conv2d_nchw[1] = ((float32*)conv2d_nchw[1] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[3] = ((float32*)conv2d_nchw[3] + ((float32*)pad_temp.shared[(threadIdx.x + 16)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[5] = ((float32*)conv2d_nchw[5] + ((float32*)pad_temp.shared[(threadIdx.x + 32)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[7] = ((float32*)conv2d_nchw[7] + ((float32*)pad_temp.shared[(threadIdx.x + 48)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[9] = ((float32*)conv2d_nchw[9] + ((float32*)pad_temp.shared[(threadIdx.x + 64)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[11] = ((float32*)conv2d_nchw[11] + ((float32*)pad_temp.shared[(threadIdx.x + 80)]*(float32*)placeholder.shared[1]))
-            conv2d_nchw[13] = ((float32*)conv2d_nchw[13] + ((float32*)pad_temp.shared[(threadIdx.x + 96)]*(float32*)placeholder.shared[1]))
+            conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[threadIdx.x]*placeholder.shared_1[0]))
+            conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[(threadIdx.x + 16)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[(threadIdx.x + 32)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[(threadIdx.x + 48)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[(threadIdx.x + 64)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[(threadIdx.x + 80)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[(threadIdx.x + 96)]*placeholder.shared_1[0]))
+            conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[threadIdx.x]*placeholder.shared_1[1]))
+            conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[(threadIdx.x + 16)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[(threadIdx.x + 32)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[(threadIdx.x + 48)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[(threadIdx.x + 64)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[(threadIdx.x + 80)]*placeholder.shared_1[1]))
+            conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[(threadIdx.x + 96)]*placeholder.shared_1[1]))
           }
         }
-        compute[((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x)] = max((float32*)conv2d_nchw[0], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 16)] = max((float32*)conv2d_nchw[2], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 32)] = max((float32*)conv2d_nchw[4], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 48)] = max((float32*)conv2d_nchw[6], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 64)] = max((float32*)conv2d_nchw[8], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 80)] = max((float32*)conv2d_nchw[10], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 96)] = max((float32*)conv2d_nchw[12], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50176)] = max((float32*)conv2d_nchw[1], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50192)] = max((float32*)conv2d_nchw[3], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50208)] = max((float32*)conv2d_nchw[5], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50224)] = max((float32*)conv2d_nchw[7], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50240)] = max((float32*)conv2d_nchw[9], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50256)] = max((float32*)conv2d_nchw[11], 0f32)
-        compute[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50272)] = max((float32*)conv2d_nchw[13], 0f32)
+        compute_1: Buffer(compute, float32, [501760], [])[((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x)] = max(conv2d_nchw_1[0], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 16)] = max(conv2d_nchw_1[2], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 32)] = max(conv2d_nchw_1[4], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 48)] = max(conv2d_nchw_1[6], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 64)] = max(conv2d_nchw_1[8], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 80)] = max(conv2d_nchw_1[10], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 96)] = max(conv2d_nchw_1[12], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50176)] = max(conv2d_nchw_1[1], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50192)] = max(conv2d_nchw_1[3], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50208)] = max(conv2d_nchw_1[5], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50224)] = max(conv2d_nchw_1[7], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50240)] = max(conv2d_nchw_1[9], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50256)] = max(conv2d_nchw_1[11], 0f32)
+        compute_1[(((((blockIdx.z*100352) + (blockIdx.y*224)) + (blockIdx.x*112)) + threadIdx.x) + 50272)] = max(conv2d_nchw_1[13], 0f32)
       }
     }
 
diff --git a/docs/_sources/tutorial/relay_quick_start.rst.txt b/docs/_sources/tutorial/relay_quick_start.rst.txt
index 73250b9..bc4dcdb 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:282: UserWarning: Try specifying cuda arch by adding 'arch=sm_xx' to your target.
+    /workspace/python/tvm/target/target.py:288: 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 5bed100..e9131a3 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
 =================
-**11:17.074** total execution time for **tutorial** files:
+**35:14.951** total execution time for **tutorial** files:
 
-- **08:40.851**: :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)
-- **00:57.143**: :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)
-- **00:51.466**: :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``)
-- **00:24.772**: :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)
-- **00:21.248**: :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)
-- **00:00.694**: :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)
-- **00:00.559**: :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)
-- **00:00.205**: :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
-- **00:00.043**: :ref:`sphx_glr_tutorial_install.py` (``install.py``)
-- **00:00.035**: :ref:`sphx_glr_tutorial_tvmc_python.py` (``tvmc_python.py``)
-- **00:00.031**: :ref:`sphx_glr_tutorial_tvmc_command_line_driver.py` (``tvmc_command_line_driver.py``)
-- **00:00.028**: :ref:`sphx_glr_tutorial_introduction.py` (``introduction.py``)
+- **32:41.859**: :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)
+- **00:58.426**: :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)
+- **00:51.099**: :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``)
+- **00:25.416**: :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)
+- **00:16.582**: :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)
+- **00:00.700**: :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)
+- **00:00.551**: :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)
+- **00:00.176**: :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
+- **00:00.037**: :ref:`sphx_glr_tutorial_install.py` (``install.py``)
+- **00:00.036**: :ref:`sphx_glr_tutorial_tvmc_python.py` (``tvmc_python.py``)
+- **00:00.035**: :ref:`sphx_glr_tutorial_tvmc_command_line_driver.py` (``tvmc_command_line_driver.py``)
+- **00:00.035**: :ref:`sphx_glr_tutorial_introduction.py` (``introduction.py``)
diff --git a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
index 65d2215..7a7b66f 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
 
 
@@ -297,12 +297,12 @@ return a readable C-style statement.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [n: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [n], [stride_1: int32], type="auto"),
-                 B: Buffer(B_2: Pointer(float32), float32, [n], [stride_2: int32], type="auto")}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [(stride: int32*n: int32)], [], type="auto"),
+                 A: Buffer(A_2: Pointer(float32), float32, [(stride_1: int32*n)], [], type="auto"),
+                 B: Buffer(B_2: Pointer(float32), float32, [(stride_2: int32*n)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, n) "parallel" {
-        C_2[(i*stride)] = ((float32*)A_2[(i*stride_1)] + (float32*)B_2[(i*stride_2)])
+        C[(i*stride)] = (A[(i*stride_1)] + B[(i*stride_2)])
       }
     }
 
@@ -387,18 +387,18 @@ factor to be the number of threads on your CPU.
 
  .. code-block:: none
 
-    vector: 0.000025
+    vector: 0.000029
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [n: int32], [stride: int32], type="auto"),
-                 A: Buffer(A_2: Pointer(float32), float32, [n], [stride_1: int32], type="auto"),
-                 B: Buffer(B_2: Pointer(float32), float32, [n], [stride_2: int32], type="auto")}
+      buffers = {A: Buffer(A_2: Pointer(float32), float32, [(stride: int32*n: int32)], [], type="auto"),
+                 C: Buffer(C_2: Pointer(float32), float32, [(stride_1: int32*n)], [], type="auto"),
+                 B: Buffer(B_2: Pointer(float32), float32, [(stride_2: int32*n)], [], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i.outer: int32, 0, floordiv((n + 3), 4)) "parallel" {
         for (i.inner.s: int32, 0, 4) {
           if @tir.likely((((i.outer*4) + i.inner.s) < n), dtype=bool) {
             let cse_var_1: int32 = ((i.outer*4) + i.inner.s)
-            C_2[(cse_var_1*stride)] = ((float32*)A_2[(cse_var_1*stride_1)] + (float32*)B_2[(cse_var_1*stride_2)])
+            C[(cse_var_1*stride_1)] = (A[(cse_var_1*stride)] + B[(cse_var_1*stride_2)])
           }
         }
       }
@@ -436,10 +436,10 @@ We can now compare the different schedules
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                   numpy    8.104600001388462e-06                    1.0
-                   naive    5.6384999999999995e-06    0.6957160130091583
-                parallel              5.8256e-06      0.7188016680652927
-                  vector             2.50895e-05      3.0957110771292506
+                   numpy    6.735409988323226e-06                    1.0
+                   naive    5.823300000000001e-06     0.8645798860196342
+                parallel              6.0327e-06      0.8956693075044471
+                  vector    2.8760200000000003e-05     4.269999903474298
 
 
 
@@ -828,7 +828,7 @@ matrix multiplication.
 
  .. code-block:: none
 
-    Numpy running time: 0.014043
+    Numpy running time: 0.018702
 
 
 
@@ -884,7 +884,7 @@ optimizations.
 
  .. code-block:: none
 
-    none: 3.217671
+    none: 3.244222
 
 
 
@@ -911,17 +911,17 @@ nested loops over the indices of the A and B matrices.
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (x: int32, 0, 1024) {
         for (y: int32, 0, 1024) {
-          C_2[((x*1024) + y)] = 0f32
+          C[((x*1024) + y)] = 0f32
           for (k: int32, 0, 1024) {
             let cse_var_2: int32 = (x*1024)
             let cse_var_1: int32 = (cse_var_2 + y)
-            C_2[cse_var_1] = ((float32*)C_2[cse_var_1] + ((float32*)A_2[(cse_var_2 + k)]*(float32*)B_2[((k*1024) + y)]))
+            C[cse_var_1] = (C[cse_var_1] + (A[(cse_var_2 + k)]*B[((k*1024) + y)]))
           }
         }
       }
@@ -982,7 +982,7 @@ schedule.
 
  .. code-block:: none
 
-    blocking: 0.289537
+    blocking: 0.285139
 
 
 
@@ -1008,15 +1008,15 @@ internal representation and compare it to the original:
 
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (x.outer: int32, 0, 32) {
         for (y.outer: int32, 0, 32) {
           for (x.inner.init: int32, 0, 32) {
             for (y.inner.init: int32, 0, 32) {
-              C_2[((((x.outer*32768) + (x.inner.init*1024)) + (y.outer*32)) + y.inner.init)] = 0f32
+              C[((((x.outer*32768) + (x.inner.init*1024)) + (y.outer*32)) + y.inner.init)] = 0f32
             }
           }
           for (k.outer: int32, 0, 256) {
@@ -1026,7 +1026,7 @@ internal representation and compare it to the original:
                   let cse_var_3: int32 = (y.outer*32)
                   let cse_var_2: int32 = ((x.outer*32768) + (x.inner*1024))
                   let cse_var_1: int32 = ((cse_var_2 + cse_var_3) + y.inner)
-                  C_2[cse_var_1] = ((float32*)C_2[cse_var_1] + ((float32*)A_2[((cse_var_2 + (k.outer*4)) + k.inner)]*(float32*)B_2[((((k.outer*4096) + (k.inner*1024)) + cse_var_3) + y.inner)]))
+                  C[cse_var_1] = (C[cse_var_1] + (A[((cse_var_2 + (k.outer*4)) + k.inner)]*B[((((k.outer*4096) + (k.inner*1024)) + cse_var_3) + y.inner)]))
                 }
               }
             }
@@ -1073,17 +1073,17 @@ already cache friendly from our previous optimizations.
 
  .. code-block:: none
 
-    vectorization: 0.326130
+    vectorization: 0.328088
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (x.outer: int32, 0, 32) {
         for (y.outer: int32, 0, 32) {
           for (x.inner.init: int32, 0, 32) {
-            C_2[ramp((((x.outer*32768) + (x.inner.init*1024)) + (y.outer*32)), 1, 32)] = broadcast(0f32, 32)
+            C[ramp((((x.outer*32768) + (x.inner.init*1024)) + (y.outer*32)), 1, 32)] = broadcast(0f32, 32)
           }
           for (k.outer: int32, 0, 256) {
             for (k.inner: int32, 0, 4) {
@@ -1091,7 +1091,7 @@ already cache friendly from our previous optimizations.
                 let cse_var_3: int32 = (y.outer*32)
                 let cse_var_2: int32 = ((x.outer*32768) + (x.inner*1024))
                 let cse_var_1: int32 = (cse_var_2 + cse_var_3)
-                C_2[ramp(cse_var_1, 1, 32)] = ((float32x32*)C_2[ramp(cse_var_1, 1, 32)] + (broadcast((float32*)A_2[((cse_var_2 + (k.outer*4)) + k.inner)], 32)*(float32x32*)B_2[ramp((((k.outer*4096) + (k.inner*1024)) + cse_var_3), 1, 32)]))
+                C[ramp(cse_var_1, 1, 32)] = (C[ramp(cse_var_1, 1, 32)] + (broadcast(A[((cse_var_2 + (k.outer*4)) + k.inner)], 32)*B[ramp((((k.outer*4096) + (k.inner*1024)) + cse_var_3), 1, 32)]))
               }
             }
           }
@@ -1144,17 +1144,17 @@ more cache friendly.
 
  .. code-block:: none
 
-    loop permutation: 0.111087
+    loop permutation: 0.116875
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (x.outer: int32, 0, 32) {
         for (y.outer: int32, 0, 32) {
           for (x.inner.init: int32, 0, 32) {
-            C_2[ramp((((x.outer*32768) + (x.inner.init*1024)) + (y.outer*32)), 1, 32)] = broadcast(0f32, 32)
+            C[ramp((((x.outer*32768) + (x.inner.init*1024)) + (y.outer*32)), 1, 32)] = broadcast(0f32, 32)
           }
           for (k.outer: int32, 0, 256) {
             for (x.inner: int32, 0, 32) {
@@ -1162,7 +1162,7 @@ more cache friendly.
                 let cse_var_3: int32 = (y.outer*32)
                 let cse_var_2: int32 = ((x.outer*32768) + (x.inner*1024))
                 let cse_var_1: int32 = (cse_var_2 + cse_var_3)
-                C_2[ramp(cse_var_1, 1, 32)] = ((float32x32*)C_2[ramp(cse_var_1, 1, 32)] + (broadcast((float32*)A_2[((cse_var_2 + (k.outer*4)) + k.inner)], 32)*(float32x32*)B_2[ramp((((k.outer*4096) + (k.inner*1024)) + cse_var_3), 1, 32)]))
+                C[ramp(cse_var_1, 1, 32)] = (C[ramp(cse_var_1, 1, 32)] + (broadcast(A[((cse_var_2 + (k.outer*4)) + k.inner)], 32)*B[ramp((((k.outer*4096) + (k.inner*1024)) + cse_var_3), 1, 32)]))
               }
             }
           }
@@ -1240,30 +1240,31 @@ optimized schedule.
 
  .. code-block:: none
 
-    array packing: 0.103804
+    array packing: 0.110480
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       allocate(packedB: Pointer(global float32x32), float32x32, [32768]), storage_scope = global {
         for (x: int32, 0, 32) "parallel" {
           for (y: int32, 0, 1024) {
-            packedB[ramp(((x*32768) + (y*32)), 1, 32)] = (float32x32*)B_2[ramp(((y*1024) + (x*32)), 1, 32)]
+            packedB_1: Buffer(packedB, float32x32, [32768], [])[((x*1024) + y)] = B[ramp(((y*1024) + (x*32)), 1, 32)]
           }
         }
         for (x.outer: int32, 0, 32) {
           for (y.outer: int32, 0, 32) {
             for (x.inner.init: int32, 0, 32) {
-              C_2[ramp((((x.outer*32768) + (x.inner.init*1024)) + (y.outer*32)), 1, 32)] = broadcast(0f32, 32)
+              C[ramp((((x.outer*32768) + (x.inner.init*1024)) + (y.outer*32)), 1, 32)] = broadcast(0f32, 32)
             }
             for (k.outer: int32, 0, 256) {
               for (x.inner: int32, 0, 32) {
                 for (k.inner: int32, 0, 4) {
-                  let cse_var_2: int32 = ((x.outer*32768) + (x.inner*1024))
-                  let cse_var_1: int32 = (cse_var_2 + (y.outer*32))
-                  C_2[ramp(cse_var_1, 1, 32)] = ((float32x32*)C_2[ramp(cse_var_1, 1, 32)] + (broadcast((float32*)A_2[((cse_var_2 + (k.outer*4)) + k.inner)], 32)*(float32x32*)packedB[ramp((((y.outer*32768) + (k.outer*128)) + (k.inner*32)), 1, 32)]))
+                  let cse_var_3: int32 = ((x.outer*32768) + (x.inner*1024))
+                  let cse_var_2: int32 = (k.outer*4)
+                  let cse_var_1: int32 = (cse_var_3 + (y.outer*32))
+                  C[ramp(cse_var_1, 1, 32)] = (C[ramp(cse_var_1, 1, 32)] + (broadcast(A[((cse_var_3 + cse_var_2) + k.inner)], 32)*packedB_1[(((y.outer*1024) + cse_var_2) + k.inner)]))
                 }
               }
             }
@@ -1329,41 +1330,42 @@ to `C` when all the block results are ready.
 
  .. code-block:: none
 
-    block caching: 0.094891
+    block caching: 0.110613
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       allocate(packedB: Pointer(global float32x32), float32x32, [32768]), storage_scope = global;
       allocate(C.global: Pointer(global float32), float32, [1024]), storage_scope = global {
         for (x: int32, 0, 32) "parallel" {
           for (y: int32, 0, 1024) {
-            packedB[ramp(((x*32768) + (y*32)), 1, 32)] = (float32x32*)B_2[ramp(((y*1024) + (x*32)), 1, 32)]
+            packedB_1: Buffer(packedB, float32x32, [32768], [])[((x*1024) + y)] = B[ramp(((y*1024) + (x*32)), 1, 32)]
           }
         }
         for (x.outer: int32, 0, 32) {
           for (y.outer: int32, 0, 32) {
             for (x.c.init: int32, 0, 32) {
-              C.global[ramp((x.c.init*32), 1, 32)] = broadcast(0f32, 32)
+              C.global_1: Buffer(C.global, float32, [1024], [])[ramp((x.c.init*32), 1, 32)] = broadcast(0f32, 32)
             }
             for (k.outer: int32, 0, 256) {
               for (x.c: int32, 0, 32) {
+                let cse_var_4: int32 = (k.outer*4)
                 let cse_var_3: int32 = (x.c*32)
-                let cse_var_2: int32 = ((y.outer*32768) + (k.outer*128))
-                let cse_var_1: int32 = (((x.outer*32768) + (x.c*1024)) + (k.outer*4))
+                let cse_var_2: int32 = ((y.outer*1024) + cse_var_4)
+                let cse_var_1: int32 = (((x.outer*32768) + (x.c*1024)) + cse_var_4)
                  {
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[cse_var_1], 32)*(float32x32*)packedB[ramp(cse_var_2, 1, 32)]))
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[(cse_var_1 + 1)], 32)*(float32x32*)packedB[ramp((cse_var_2 + 32), 1, 32)]))
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[(cse_var_1 + 2)], 32)*(float32x32*)packedB[ramp((cse_var_2 + 64), 1, 32)]))
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[(cse_var_1 + 3)], 32)*(float32x32*)packedB[ramp((cse_var_2 + 96), 1, 32)]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[cse_var_1], 32)*packedB_1[cse_var_2]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[(cse_var_1 + 1)], 32)*packedB_1[(cse_var_2 + 1)]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[(cse_var_1 + 2)], 32)*packedB_1[(cse_var_2 + 2)]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[(cse_var_1 + 3)], 32)*packedB_1[(cse_var_2 + 3)]))
                 }
               }
             }
             for (x.inner: int32, 0, 32) {
               for (y.inner: int32, 0, 32) {
-                C_2[((((x.outer*32768) + (x.inner*1024)) + (y.outer*32)) + y.inner)] = (float32*)C.global[((x.inner*32) + y.inner)]
+                C[((((x.outer*32768) + (x.inner*1024)) + (y.outer*32)) + y.inner)] = C.global_1[((x.inner*32) + y.inner)]
               }
             }
           }
@@ -1411,41 +1413,42 @@ of thread-level parallelization.
 
  .. code-block:: none
 
-    parallelization: 0.125543
+    parallelization: 0.144371
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], [])}
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1048576], []),
+                 A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1048576], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       allocate(packedB: Pointer(global float32x32), float32x32, [32768]), storage_scope = global {
         for (x: int32, 0, 32) "parallel" {
           for (y: int32, 0, 1024) {
-            packedB[ramp(((x*32768) + (y*32)), 1, 32)] = (float32x32*)B_2[ramp(((y*1024) + (x*32)), 1, 32)]
+            packedB_1: Buffer(packedB, float32x32, [32768], [])[((x*1024) + y)] = B[ramp(((y*1024) + (x*32)), 1, 32)]
           }
         }
         for (x.outer: int32, 0, 32) "parallel" {
           allocate(C.global: Pointer(global float32), float32, [1024]), storage_scope = global;
           for (y.outer: int32, 0, 32) {
             for (x.c.init: int32, 0, 32) {
-              C.global[ramp((x.c.init*32), 1, 32)] = broadcast(0f32, 32)
+              C.global_1: Buffer(C.global, float32, [1024], [])[ramp((x.c.init*32), 1, 32)] = broadcast(0f32, 32)
             }
             for (k.outer: int32, 0, 256) {
               for (x.c: int32, 0, 32) {
+                let cse_var_4: int32 = (k.outer*4)
                 let cse_var_3: int32 = (x.c*32)
-                let cse_var_2: int32 = ((y.outer*32768) + (k.outer*128))
-                let cse_var_1: int32 = (((x.outer*32768) + (x.c*1024)) + (k.outer*4))
+                let cse_var_2: int32 = ((y.outer*1024) + cse_var_4)
+                let cse_var_1: int32 = (((x.outer*32768) + (x.c*1024)) + cse_var_4)
                  {
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[cse_var_1], 32)*(float32x32*)packedB[ramp(cse_var_2, 1, 32)]))
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[(cse_var_1 + 1)], 32)*(float32x32*)packedB[ramp((cse_var_2 + 32), 1, 32)]))
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[(cse_var_1 + 2)], 32)*(float32x32*)packedB[ramp((cse_var_2 + 64), 1, 32)]))
-                  C.global[ramp(cse_var_3, 1, 32)] = ((float32x32*)C.global[ramp(cse_var_3, 1, 32)] + (broadcast((float32*)A_2[(cse_var_1 + 3)], 32)*(float32x32*)packedB[ramp((cse_var_2 + 96), 1, 32)]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[cse_var_1], 32)*packedB_1[cse_var_2]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[(cse_var_1 + 1)], 32)*packedB_1[(cse_var_2 + 1)]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[(cse_var_1 + 2)], 32)*packedB_1[(cse_var_2 + 2)]))
+                  C.global_1[ramp(cse_var_3, 1, 32)] = (C.global_1[ramp(cse_var_3, 1, 32)] + (broadcast(A[(cse_var_1 + 3)], 32)*packedB_1[(cse_var_2 + 3)]))
                 }
               }
             }
             for (x.inner: int32, 0, 32) {
               for (y.inner: int32, 0, 32) {
-                C_2[((((x.outer*32768) + (x.inner*1024)) + (y.outer*32)) + y.inner)] = (float32*)C.global[((x.inner*32) + y.inner)]
+                C[((((x.outer*32768) + (x.inner*1024)) + (y.outer*32)) + y.inner)] = C.global_1[((x.inner*32) + y.inner)]
               }
             }
           }
@@ -1488,13 +1491,13 @@ working, we can compare the results.
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                    none      3.2176713028000004                     1.0
-                blocking     0.28953682459999996     0.08998334427386867
-           vectorization            0.3261302856     0.10135599783489481
-        loop permutation            0.1110869506     0.03452402068021452
-           array packing     0.10380390890000002    0.032260569564601084
-           block caching     0.09489119030000001      0.0294906413272935
-         parallelization            0.1255432151     0.03901679298030006
+                    none      3.2442223216999997                     1.0
+                blocking            0.2851393656     0.08789143817079238
+           vectorization             0.328087547     0.10112979767307666
+        loop permutation            0.1168754399     0.03602571843435079
+           array packing            0.1104800113     0.03405438972570399
+           block caching     0.11061262320000001     0.03409526605502118
+         parallelization            0.1443707233     0.04450087231517122
 
 
 
diff --git a/docs/commit_hash b/docs/commit_hash
new file mode 100644
index 0000000..43a793d
--- /dev/null
+++ b/docs/commit_hash
@@ -0,0 +1 @@
+15c1f75b84dde60df3f7f957ab2f1827ff6a76ef
diff --git a/docs/contribute/ci.html b/docs/contribute/ci.html
index 45b4f98..418f6d6 100644
--- a/docs/contribute/ci.html
+++ b/docs/contribute/ci.html
@@ -377,9 +377,12 @@ developers and should be fixed as soon as possible.</p>
 <div class="section" id="skip-ci-for-reverts">
 <h3>Skip CI for Reverts<a class="headerlink" href="#skip-ci-for-reverts" title="Permalink to this headline">¶</a></h3>
 <p>For reverts and trivial forward fixes, adding <code class="docutils literal notranslate"><span class="pre">[skip</span> <span class="pre">ci]</span></code> to the revert’s
-commit message will cause CI to shortcut and only run lint. Committers should
+PR title will cause CI to shortcut and only run lint. Committers should
 take care that they only merge CI-skipped PRs to fix a failure on <code class="docutils literal notranslate"><span class="pre">main</span></code> and
-not in cases where the submitter wants to shortcut CI to merge a change faster.</p>
+not in cases where the submitter wants to shortcut CI to merge a change faster.
+The PR title is checked when the build is first run (specifically during the lint
+step, so changes after that has run do not affect CI and will require the job to
+be re-triggered by another <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">push</span></code>).</p>
 <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Revert HEAD commit, make sure to insert &#39;[skip ci]&#39; at the beginning of</span>
 <span class="c1"># the commit subject</span>
 git revert HEAD
diff --git a/docs/genindex.html b/docs/genindex.html
index 6123328..72f3ae1 100644
--- a/docs/genindex.html
+++ b/docs/genindex.html
@@ -458,6 +458,8 @@
       </ul></li>
       <li><a href="reference/api/python/auto_scheduler.html#tvm.auto_scheduler.ApplyHistoryBestOrSample">ApplyHistoryBestOrSample (class in tvm.auto_scheduler)</a>
 </li>
+      <li><a href="reference/api/python/tir.html#tvm.tir.transform.ApplyLayoutTransforms">ApplyLayoutTransforms() (in module tvm.tir.transform)</a>
+</li>
       <li><a href="reference/api/python/target.html#tvm.target.Target.arch">arch (tvm.target.Target property)</a>
 </li>
       <li><a href="reference/api/python/autotvm.html#tvm.autotvm.task.task.args_to_workload">args_to_workload() (in module tvm.autotvm.task.task)</a>
@@ -904,10 +906,10 @@
 </li>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.conv1d_nwc">conv1d_nwc() (in module tvm.topi.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>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <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>
@@ -1048,9 +1050,11 @@
 </li>
       <li><a href="reference/api/python/contrib.html#tvm.contrib.cc.create_executable">create_executable() (in module tvm.contrib.cc)</a>
 </li>
-      <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.interface.Plotter.create_graph">create_graph() (tvm.contrib.relay_viz.interface.Plotter method)</a>
+      <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.dot.DotPlotter.create_graph">create_graph() (tvm.contrib.relay_viz.dot.DotPlotter method)</a>
 
       <ul>
+        <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.interface.Plotter.create_graph">(tvm.contrib.relay_viz.interface.Plotter method)</a>
+</li>
         <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.terminal.TermPlotter.create_graph">(tvm.contrib.relay_viz.terminal.TermPlotter method)</a>
 </li>
       </ul></li>
@@ -1210,10 +1214,10 @@
 </li>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.depthwise_conv2d_nchw">depthwise_conv2d_nchw() (in module tvm.topi.nn)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.depthwise_conv2d_NCHWc">depthwise_conv2d_NCHWc() (in module tvm.topi.nn)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.depthwise_conv2d_nhwc">depthwise_conv2d_nhwc() (in module tvm.topi.nn)</a>
 </li>
       <li><a href="reference/api/python/autotvm.html#tvm.autotvm.task.task.deserialize_args">deserialize_args() (in module tvm.autotvm.task.task)</a>
@@ -1284,6 +1288,10 @@
       </ul></li>
       <li><a href="reference/api/python/relay/dataflow_pattern.html#tvm.relay.dataflow_pattern.DominatorPattern">DominatorPattern (class in tvm.relay.dataflow_pattern)</a>
 </li>
+      <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.dot.DotGraph">DotGraph (class in tvm.contrib.relay_viz.dot)</a>
+</li>
+      <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.dot.DotPlotter">DotPlotter (class in tvm.contrib.relay_viz.dot)</a>
+</li>
       <li><a href="reference/api/python/te.html#tvm.te.Stage.double_buffer">double_buffer() (tvm.te.Stage method)</a>
 </li>
       <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.download">download() (tvm.rpc.RPCSession method)</a>
@@ -1310,9 +1318,11 @@
 <h2 id="E">E</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.interface.VizGraph.edge">edge() (tvm.contrib.relay_viz.interface.VizGraph method)</a>
+      <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.dot.DotGraph.edge">edge() (tvm.contrib.relay_viz.dot.DotGraph method)</a>
 
       <ul>
+        <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.interface.VizGraph.edge">(tvm.contrib.relay_viz.interface.VizGraph method)</a>
+</li>
         <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.terminal.TermGraph.edge">(tvm.contrib.relay_viz.terminal.TermGraph method)</a>
 </li>
       </ul></li>
@@ -1680,6 +1690,8 @@
 </li>
       <li><a href="reference/api/python/autotvm.html#tvm.autotvm.task.space.ConfigEntity.get_flatten_feature">get_flatten_feature() (tvm.autotvm.task.space.ConfigEntity method)</a>
 </li>
+      <li><a href="reference/api/python/tir.html#tvm.tir.Buffer.get_flattened_buffer">get_flattened_buffer() (tvm.tir.Buffer method)</a>
+</li>
       <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.get_function">get_function() (tvm.rpc.RPCSession method)</a>
 
       <ul>
@@ -2574,6 +2586,8 @@
 </li>
         <li><a href="reference/api/python/contrib.html#module-tvm.contrib.relay_viz">tvm.contrib.relay_viz</a>
 </li>
+        <li><a href="reference/api/python/contrib.html#module-tvm.contrib.relay_viz.dot">tvm.contrib.relay_viz.dot</a>
+</li>
         <li><a href="reference/api/python/contrib.html#module-tvm.contrib.relay_viz.interface">tvm.contrib.relay_viz.interface</a>
 </li>
         <li><a href="reference/api/python/contrib.html#module-tvm.contrib.relay_viz.terminal">tvm.contrib.relay_viz.terminal</a>
@@ -2751,9 +2765,11 @@
       </ul></li>
       <li><a href="reference/api/python/ir.html#tvm.ir.Node">Node (class in tvm.ir)</a>
 </li>
-      <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.interface.VizGraph.node">node() (tvm.contrib.relay_viz.interface.VizGraph method)</a>
+      <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.dot.DotGraph.node">node() (tvm.contrib.relay_viz.dot.DotGraph method)</a>
 
       <ul>
+        <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.interface.VizGraph.node">(tvm.contrib.relay_viz.interface.VizGraph method)</a>
+</li>
         <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.terminal.TermGraph.node">(tvm.contrib.relay_viz.terminal.TermGraph method)</a>
 </li>
       </ul></li>
@@ -2781,6 +2797,8 @@
 </li>
       <li><a href="reference/api/python/runtime.html#tvm.runtime.ObjectGeneric">ObjectGeneric (class in tvm.runtime)</a>
 </li>
+      <li><a href="reference/api/python/tir.html#tvm.tir.Buffer.offset_of">offset_of() (tvm.tir.Buffer method)</a>
+</li>
       <li><a href="reference/api/python/ir.html#tvm.ir.Op">Op (class in tvm.ir)</a>
 </li>
       <li><a href="reference/api/python/te.html#tvm.te.Tensor.op">op (tvm.te.Tensor property)</a>
@@ -3105,9 +3123,11 @@
 </li>
       <li><a href="reference/api/python/relay/transform.html#tvm.relay.transform.RemoveUnusedFunctions">RemoveUnusedFunctions() (in module tvm.relay.transform)</a>
 </li>
-      <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.interface.Plotter.render">render() (tvm.contrib.relay_viz.interface.Plotter method)</a>
+      <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.dot.DotPlotter.render">render() (tvm.contrib.relay_viz.dot.DotPlotter method)</a>
 
       <ul>
+        <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.interface.Plotter.render">(tvm.contrib.relay_viz.interface.Plotter method)</a>
+</li>
         <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.terminal.TermGraph.render">(tvm.contrib.relay_viz.terminal.TermGraph method)</a>
 </li>
         <li><a href="reference/api/python/contrib.html#tvm.contrib.relay_viz.terminal.TermPlotter.render">(tvm.contrib.relay_viz.terminal.TermPlotter method)</a>
@@ -3115,7 +3135,7 @@
         <li><a href="reference/api/python/ir.html#tvm.instrument.PassTimingInstrument.render">(tvm.instrument.PassTimingInstrument static method)</a>
 </li>
       </ul></li>
-      <li><a href="reference/api/python/tir.html#tvm.tir.transform.RenomalizeSplitPattern">RenomalizeSplitPattern() (in module tvm.tir.transform)</a>
+      <li><a href="reference/api/python/tir.html#tvm.tir.transform.RenormalizeSplitPattern">RenormalizeSplitPattern() (in module tvm.tir.transform)</a>
 </li>
       <li><a href="reference/api/python/te.html#tvm.te.Stage.reorder">reorder() (tvm.te.Stage method)</a>
 
@@ -3125,10 +3145,10 @@
       </ul></li>
       <li><a href="reference/api/python/autotvm.html#tvm.autotvm.task.space.ReorderEntity">ReorderEntity (class in tvm.autotvm.task.space)</a>
 </li>
-      <li><a href="reference/api/python/autotvm.html#tvm.autotvm.task.space.ReorderSpace">ReorderSpace (class in tvm.autotvm.task.space)</a>
-</li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="reference/api/python/autotvm.html#tvm.autotvm.task.space.ReorderSpace">ReorderSpace (class in tvm.autotvm.task.space)</a>
+</li>
       <li><a href="reference/api/python/tir.html#tvm.tir.ScheduleState.replace">replace() (tvm.tir.ScheduleState method)</a>
 </li>
       <li><a href="reference/api/python/runtime.html#tvm.runtime.Report">Report (class in tvm.runtime)</a>
@@ -3347,6 +3367,18 @@
 </li>
       <li><a href="reference/api/python/target.html#tvm.target.GenericFunc.set_default">set_default() (tvm.target.GenericFunc method)</a>
 </li>
+      <li><a href="reference/api/python/autotvm.html#tvm.autotvm.tuner.GATuner.set_error_threshold">set_error_threshold() (tvm.autotvm.tuner.GATuner method)</a>
+
+      <ul>
+        <li><a href="reference/api/python/autotvm.html#tvm.autotvm.tuner.GridSearchTuner.set_error_threshold">(tvm.autotvm.tuner.GridSearchTuner method)</a>
+</li>
+        <li><a href="reference/api/python/autotvm.html#tvm.autotvm.tuner.RandomTuner.set_error_threshold">(tvm.autotvm.tuner.RandomTuner method)</a>
+</li>
+        <li><a href="reference/api/python/autotvm.html#tvm.autotvm.tuner.Tuner.set_error_threshold">(tvm.autotvm.tuner.Tuner method)</a>
+</li>
+        <li><a href="reference/api/python/autotvm.html#tvm.autotvm.tuner.XGBTuner.set_error_threshold">(tvm.autotvm.tuner.XGBTuner method)</a>
+</li>
+      </ul></li>
       <li><a href="reference/api/python/graph_executor.html#tvm.contrib.graph_executor.GraphModule.set_input">set_input() (tvm.contrib.graph_executor.GraphModule method)</a>
 </li>
       <li><a href="reference/api/python/contrib.html#tvm.contrib.utils.TempDirectory.set_keep_for_debug">set_keep_for_debug() (tvm.contrib.utils.TempDirectory class method)</a>
@@ -3403,14 +3435,14 @@
 </li>
       <li><a href="reference/api/python/relay/transform.html#tvm.relay.transform.SimplifyFCTranspose">SimplifyFCTranspose() (in module tvm.relay.transform)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="reference/api/python/relay/transform.html#tvm.relay.transform.SimplifyInference">SimplifyInference() (in module tvm.relay.transform)</a>
 </li>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.simulated_dequantize">simulated_dequantize() (in module tvm.topi.nn)</a>
 </li>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.simulated_quantize">simulated_quantize() (in module tvm.topi.nn)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="reference/api/python/te.html#tvm.te.sin">sin() (in module tvm.te)</a>
 
       <ul>
@@ -3699,6 +3731,8 @@
       </ul></li>
       <li><a href="reference/api/python/rpc.html#tvm.rpc.TrackerSession">TrackerSession (class in tvm.rpc)</a>
 </li>
+      <li><a href="reference/api/python/te.html#tvm.te.Stage.transform_layout">transform_layout() (tvm.te.Stage method)</a>
+</li>
       <li><a href="reference/api/python/autotvm.html#tvm.autotvm.task.space.TransformSpace">TransformSpace (class in tvm.autotvm.task.space)</a>
 </li>
       <li><a href="reference/api/python/micro.html#tvm.micro.TransportLogger">TransportLogger (class in tvm.micro)</a>
@@ -3949,6 +3983,13 @@
 </li>
       </ul></li>
       <li>
+    tvm.contrib.relay_viz.dot
+
+      <ul>
+        <li><a href="reference/api/python/contrib.html#module-tvm.contrib.relay_viz.dot">module</a>
+</li>
+      </ul></li>
+      <li>
     tvm.contrib.relay_viz.interface
 
       <ul>
diff --git a/docs/how_to/compile_models/from_caffe2.html b/docs/how_to/compile_models/from_caffe2.html
index d381733..7360b42 100644
--- a/docs/how_to/compile_models/from_caffe2.html
+++ b/docs/how_to/compile_models/from_caffe2.html
@@ -394,8 +394,8 @@ Writing to /workspace/.caffe2/models/resnet50/value_info.json
 <span class="n">img_url</span> <span class="o">=</span> <span class="s2">&quot;https://github.com/dmlc/mxnet.js/blob/main/data/cat.png?raw=true&quot;</span>
 <span class="n">img_path</span> <span class="o">=</span> <span class="n">download_testdata</span><span class="p">(</span><span class="n">img_url</span><span class="p">,</span> <span class="s2">&quot;cat.png&quot;</span><span class="p">,</span> <span class="n">module</span><span class="o">=</span><span class="s2">&quot;data&quot;</span><span class="p">)</span>
 <span class="n">img</span> <span class="o">=</span> <span class="n">Image</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">img_path</span><span class="p">)</span><span class="o">.</span><span class="n">resize</span><span class="p">((</span><span class="mi">224</span><span class="p">,</span> <span class="mi">224</span><span class="p">))</span>
-<span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">img</span><span class="p">)</span>
-<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+<a href="https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.imshow.html#matplotlib.pyplot.imshow" title="View documentation for matplotlib.pyplot.imshow"><span class="n">plt</span><span class="o">.</span><span class="n">imshow</span></a><span class="p">(</span><span class="n">img</span><span class="p">)</span>
+<a href="https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.show.html#matplotlib.pyplot.show" title="View documentation for matplotlib.pyplot.show"><span class="n">plt</span><span class="o">.</span><span class="n">show</span></a><span class="p">()</span>
 <span class="c1"># input preprocess</span>
 <span class="k">def</span> <span class="nf">transform_image</span><span class="p">(</span><span class="n">image</span><span class="p">):</span>
     <span class="n">image</span> <span class="o">=</span> <a href="https://numpy.org/doc/stable/reference/generated/numpy.array.html#numpy.array" title="View documentation for numpy.array"><span class="n">np</span><span class="o">.</span><span class="n">array</span></a><span class="p">(</span><span class="n">image</span><span class="p">)</span> <span class="o">-</span> <a href="https://numpy.org/doc/stable/reference/generated/numpy.array.html#numpy.array" title="View documentation for nu [...]
diff --git a/docs/how_to/compile_models/from_darknet.html b/docs/how_to/compile_models/from_darknet.html
... 252455 lines suppressed ...