code: def _fallback_schedule_int8(cfg, wkl):
      pt, pl, pb, pr = wkl.padt, wkl.padl, wkl.padb, wkl.padr
      HSTR, WSTR = wkl.stride_h, wkl.stride_w
      out_width = (wkl.width + pl + pr - wkl.kernel_w) // WSTR + 1
  
      oc_bn = 16
      assert wkl.out_filter % oc_bn == 0
  
      ic_bn = 1
      for bn in range(oc_bn, 0, -4):
          if wkl.in_filter % bn == 0:
              ic_bn = bn
              break
      assert wkl.in_filter % 4 == 0
  
      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/x86/conv2d_avx_common.py
imports: import tvm
  from tvm.autotvm.task.space import OtherOptionEntity, SplitEntity
  from tvm.target.x86 import get_simd_32bit_lanes
  from ..generic import conv2d
  from ..utils import get_const_tuple
  from .tensor_intrin import dot_16x1x16_uint8_int8_int32
label_desc: Use image node_id 2 for calling a global function with example usage: _fallback_schedule_int8(cfg, wkl) without return types