def METHOD_NAME(ins, outs):
    """Matrix-matrix multiply intrinsic function"""
    dinp, dwgt = ins
    dout = outs[0]
    def instr(index):
        """Generate matrix-matrix multiply VTA instruction"""
        irb = tvm.tir.ir_builder.create()
        dev = env.dev
        irb.scope_attr(dev.vta_axis, "coproc_scope", dev.get_task_qid(dev.QID_COMPUTE))
        irb.scope_attr(dev.vta_axis, "coproc_uop_scope", dev.vta_push_uop)
        if index in (0, 2):
            irb.emit(
                tvm.tir.call_intrin(
                    "int32",
                    "tir.vta.uop_push",
                    0,
                    0,
                    dout.access_ptr("rw", "int32"),
                    dinp.access_ptr("r", "int32"),
                    dwgt.access_ptr("r", "int32"),
                    0,
                    0,
                    0,
                )
            )
        else:
            irb.emit(
                tvm.tir.call_intrin(
                    "int32",
                    "tir.vta.uop_push",
                    0,
                    1,
                    dout.access_ptr("rw", "int32"),
                    0,
                    0,
                    0,
                    0,
                    0,
                )
            )
        return irb.get()
    # return a triple of normal-set, reset, update
    nop = tvm.tir.Evaluate(0)
    if mock:
        return (nop, nop, nop)
    return (instr(0), instr(1), instr(2))