code: def dma_ifm_compute(
      ifm: te.Tensor,
      layout: str,
      zero_point: int,
      scale: float,
      channels: int,
      padding: Tuple[int, int, int, int],
      upscale_factor: Optional[int] = 1,
  ) -> te.Tensor:
      """A sequence of compute operators representing the DMA capabilities for an IFM.
  
      Parameters
      ----------
      ifm : te.Tensor
          The Input Feature Map (IFM) tensor.
      layout : str
          The layout of the data, either NHWC or NHCWB16.
      zero_point : int
          The zero point of the data.
      scale : float
          The scale of the data.
      channels : int
          The number of valid channels for the data.
      padding : tuple
          The 4 dimensional padding as (pad_top, pad_left, pad_bottom, pad_right).
      upscale_factor : Optional[int]
          The factor by which to apply upscaling. By default there will be no upscaling.
  
      Returns
      -------
      te.Tensor
          The dma-ed IFM tensor.
  
      """
      read_ifm = read_compute(ifm, zero_point, scale, layout=layout)
      convert_to_nhwc_ifm = convert_to_nhwc_compute(
          read_ifm, layout, channels
      )
      upscale_ifm = upscale_compute(convert_to_nhwc_ifm, upscale_factor)
      return pad_compute(upscale_ifm, padding)
  
file_path: tvm/python/tvm/relay/backend/contrib/ethosu/te/dma.py
imports: from typing import Callable, Tuple, Optional, List
  import tvm
  from tvm import te
  from tvm.topi.utils import equal_const_int
label_desc: Use image node_id 8 for calling a global function with example usage: dma_ifm_compute(ifm, layout, zero_point, scale, channels, padding, upscale_factor) and returns: pad_compute