code: def _schedule_winograd_nnpack(cfg, s, output, last):
      # Could have bias.
  
      (X, TK) = output.op.input_tensors[:2]
  
      # transform kernel
      assert isinstance(
          TK.op,
          (
              te.tensor.ComputeOp,
              te.tensor.ExternOp,
              te.tensor.PlaceholderOp,
          ),
      )
      if autotvm.GLOBAL_SCOPE.in_tuning and isinstance(
          TK.op, te.tensor.ComputeOp
      ):
          # kernel transformation will be pre-computed during compilation, so we skip
          # this part to make tuning records correct
          s[TK].pragma(s[TK].op.axis[0], "debug_skip_region")
  
imports: from __future__ import absolute_import
  import tvm
  from tvm import te
  from tvm import autotvm
  import tvm.contrib.nnpack
  from ..utils import traverse_inline, get_const_tuple
  from ..None import nn
  from ..nn.utils import get_const_int, get_pad_tuple
  from ..nn.winograd_util import winograd_transform_matrices
  from .arm_utils import get_tiling_B_transformed
  from .conv2d_spatial_pack import conv2d_spatial_pack_nchw, conv2d_spatial_pack_nhwc, schedule_conv2d_spatial_pack_nchw, schedule_conv2d_spatial_pack_nhwc
  from .conv2d_gemm import compute_conv2d_gemm_without_weight_transform, schedule_conv2d_gemm_interleaved, schedule_conv2d_gemm_native
  from .mprofile.dsp.conv2d import conv2d_nhwc_dsp_compute, conv2d_nhwc_dsp_schedule
label_desc: Use image node_id 12 for calling a global function with example usage: _schedule_winograd_nnpack(cfg, s, output, last) without return types