code: def schedule_conv2d_NCHWc_int8(outs):
      """Schedule for int8 conv2d in NCHWc layout using vrmpy tensorization"""
      s = te.create_schedule([x.op for x in outs])
  
      def _callback(op):
          if "conv2d_NCHWc_int8" in op.tag:
              conv_out = op.output(0)
              kernel_vec = conv_out.op.input_tensors[1]
              data_vec = conv_out.op.input_tensors[0]
              out_width = conv_out.shape[3]
  
              reg_n = 1
              for n in range(31, 0, -1):
                  if out_width % n == 0:
                      reg_n = n
                      break
  
              cfg = {"tile_ow": reg_n, "unroll_kw": False}
              args = [s, cfg, data_vec, kernel_vec, conv_out, outs[0]]
              intrin = dot_vrmpy(data_vec.dtype, kernel_vec.dtype)
  
              conv2d_generic.schedule_conv_NCHWc_cpu_common_int8(
                  *args,
                  int32_lanes=32,
                  int8_elems=4,
                  intrin=intrin,
                  inline_fused=True,
              )
  
      traverse_inline(s, outs[0].op, _callback)
      return s
  
file_path: tvm/python/tvm/topi/hexagon/conv2d.py
imports: import tvm
  from tvm import te
  from ..None import nn
  from ..utils import traverse_inline
  from .tensor_intrin import dot_vrmpy
  from ..generic import conv2d
label_desc: Use image node_id 8 for calling a global function with example usage: schedule_conv2d_NCHWc_int8(outs) and returns: s