def METHOD_NAME(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