def METHOD_NAME(s, tensor, y_index, x_index, readers):
    """Do transform X[n, m] -> X[m, n]"""
    tmp = s.cache_read(tensor, "global", readers)
    y, x = s[tmp].op.axis[y_index], s[tmp].op.axis[x_index]
    s[tmp].reorder(x, y)
    s[tmp].compute_inline()
    A_transpose = s.cache_write(tmp, "global")
    CR_A = s.cache_read(tensor, "local", [A_transpose])
    CW_A_transpose = s.cache_write(A_transpose, "local")
    y, x = s[A_transpose].op.axis[y_index], s[A_transpose].op.axis[x_index]
    yo, xo, yi, xi = s[A_transpose].tile(y, x, 4, 4)
    s[A_transpose].unroll(yi)
    s[A_transpose].vectorize(xi)
    _, _, _, xi = tile_and_bind(s, A_transpose, yo, xo, 32, 2)
    s[CW_A_transpose].compute_at(s[A_transpose], xi)
    y, x = s[CW_A_transpose].op.axis[y_index], s[CW_A_transpose].op.axis[x_index]
    s[CW_A_transpose].unroll(x)
    s[CW_A_transpose].unroll(y)
    s[CR_A].compute_at(s[A_transpose], xi)
    y, x = s[CR_A].op.axis[y_index], s[CR_A].op.axis[x_index]
    s[CR_A].unroll(y)
    s[CR_A].vectorize(x)
    return tmp