code: def schedule_injective_from_existing(sch, out):
      """Schedule for injective op from existing schedule.
      Parameters
      ----------
      sch: Schedule
           The schedule to update.
      out: Tensor
           The tensor representing the injective op.
      Returns
      -------
      sch: Schedule
           The updated schedule.
      """
      if len(sch[out].op.axis) >= 5:
          fused = sch[out].fuse(
              sch[out].op.axis[0],
              sch[out].op.axis[1],
              sch[out].op.axis[2],
          )
          sch[out].parallel(fused)
      elif len(sch[out].op.axis) >= 3:
          fused = sch[out].fuse(
              sch[out].op.axis[0], sch[out].op.axis[1]
          )
          sch[out].parallel(fused)
      elif len(sch[out].op.axis) >= 1:
          sch[out].parallel(sch[out].op.axis[0])
  
      # Vectorize the inner most for loop. Tiling first to get a const extent
      if len(sch[out].op.axis) >= 1:
          l = sch[out].op.axis[-1]
          lo, li = sch[out].split(l, factor=16)
          sch[out].vectorize(li)
  
          # for 1D loop, the above split will break the parallel axis
          # Need to make the outer loop parallel again
          if len(sch[out].op.axis) == 1:
              sch[out].parallel(lo)
  
      return sch
  
file_path: tvm/python/tvm/topi/x86/injective.py
imports: from tvm import te
  from tvm.topi import tag
  from tvm.tir import IntImm
  from tvm.topi.generic.injective import schedule_injective_from_existing
  from ..utils import is_empty_shape
label_desc: Use image node_id 1 for calling a global function with example usage: schedule_injective_from_existing(sch, out) and returns: sch