code: def _alter_depthwise_conv2d_layout(depthwise_conv2d):
      cast_op = depthwise_conv2d.args[0]
      requantize_op = cast_op.args[0]
      add_op = requantize_op.args[0]
      prev_conv2d_op = add_op.args[0]
  
      return relay.qnn.op.conv2d(
          relay.layout_transform(
              relay.cast(
                  relay.qnn.op.requantize(
                      relay.op.add(
                          relay.qnn.op.conv2d(
                              *prev_conv2d_op.args,
                              **edit_attrs(
                                  prev_conv2d_op.attrs,
                                  out_layout="NCHW",
                              ),
                          ),
                          relay.layout_transform(
                              add_op.args[1],
                              src_layout="NHWC",
                              dst_layout="NCHW",
                          ),
                      ),
                      *requantize_op.args[1:],
                      **edit_attrs(requantize_op.attrs, axis=1),
                  ),
                  dtype="int16",
              ),
              src_layout="NCHW",
              dst_layout="NHWC",
          ),
          *depthwise_conv2d.args[1:],
          **edit_attrs(depthwise_conv2d.attrs, data_layout="NCHW"),
      )
  
file_path: tvm/python/tvm/topi/arm_cpu/qnn_alter_op.py
imports: from typing import Iterable
  import numpy
  from tvm import nd, relay, target
  from ..utils import get_const_tuple
  from ..nn import qnn_conv2d_alter_layout, add_alter_layout, qnn_requantize_alter_layout
label_desc: Use image node_id 5 for calling a global function with example usage: _alter_depthwise_conv2d_layout(depthwise_conv2d) and returns: relay