code: def fallback_schedule_cpu_common_int8(
      cfg, wkl, int32_lanes, num_int8_elements
  ):
      """Fallback schedule for conv2d int8 on cpu.
      Normally the inner most pattern takes two int8/uint8 tensors
      data[num_int8_elements] and kernel[int32_lanes, num_int8_elements],
      produces a dot product int32/uint32 output[int32_lanes].
  
      Parameters
      ----------
      int32_lanes : int
          How many numbers of int32/uint32 will be produced using intrinsic.
          This is related to output channel.
      num_int8_elements : int
          How many numbers of input int32/uint32 will be multiplied and reduced.
          This is related to input channel.
      """
      pt, pl, pb, pr = wkl.padt, wkl.padl, wkl.padb, wkl.padr
      HSTR, WSTR = wkl.stride_h, wkl.stride_w
      dilated_kernel_w = (wkl.kernel_w - 1) * wkl.dilation_w + 1
      out_width = (wkl.width + pl + pr - dilated_kernel_w) // WSTR + 1
  
      assert (
          wkl.out_filter % int32_lanes == 0
      ), f"wkl.out_filter={wkl.out_filter}, int32_lanes={int32_lanes}"
      assert (
          wkl.in_filter % num_int8_elements == 0
      ), f"wkl.in_filter={wkl.in_filter}, num_int8_elements={num_int8_elements}"
  
      oc_bn = (
          int32_lanes
          if int32_lanes >= num_int8_elements
          else num_int8_elements
      )
      ic_bn = 1
      for bn in range(oc_bn, 0, -4):
          if wkl.in_filter % bn == 0:
              ic_bn = bn
              break
  
      reg_n = 1
      for n in range(31, 0, -1):
          if out_width % n == 0:
              reg_n = n
              break
  
      cfg["tile_ic"] = SplitEntity([wkl.in_filter // ic_bn, ic_bn])
      cfg["tile_oc"] = SplitEntity([wkl.out_filter // oc_bn, oc_bn])
      cfg["tile_ow"] = SplitEntity([out_width // reg_n, reg_n])
      cfg["unroll_kw"] = OtherOptionEntity(False)
  
file_path: tvm/python/tvm/topi/generic/conv2d.py
imports: from tvm import te
  from tvm import autotvm
  from tvm import relay
  from tvm.autotvm.task.space import SplitEntity, OtherOptionEntity
  from ..utils import get_const_tuple, traverse_inline
  from ..nn.utils import get_pad_tuple
label_desc: Use image node_id 1 for calling a global function with example usage: fallback_schedule_cpu_common_int8(cfg, wkl, int32_lanes, num_int8_elements) without return types