def METHOD_NAME(M=32, N=32, K=32, dtype=hcl.Int(), target=None):
    hcl.init(hcl.Float())
    A = hcl.placeholder((M, K), name="A")
    B = hcl.placeholder((K, N), name="B")
    def gemm(A, B):
        k = hcl.reduce_axis(0, K, name="k")
        C = hcl.compute((M, N), lambda i, j: hcl.sum(A[i, k] * B[k, j], axis=k), "C")
        return C
    s = hcl.create_schedule([A, B], gemm)
    # optimization
    C = gemm.C
    # j_out, j_in = s[C].split(C.axis[1], 2)
    # s[C].reorder(j_in, C.axis[2])
    # s.buffer_at(C, s[C], j_out)
    s[C].reorder(C.axis[2], C.axis[1])
    s.buffer_at(C, s[C], C.axis[0])
    s[C].pipeline(C.axis[2])
    print(hcl.lower(s))
    f = hcl.build(s, "vhls")
    print(f)