예제 #1
0
파일: FPU.cpp 프로젝트: koenk/mgsim
bool FPU::QueueOperation(size_t source, FPUOperation fop, int size, double Rav, double Rbv, const RegAddr& Rc)
{
    // The size must be a multiple of the arch's native integer size
    assert(source < m_sources.size());
    assert(m_sources[source]->regfile != NULL);
    assert(size > 0);
    assert(size % sizeof(Integer) == 0);
    assert(Rc.valid());

    Operation op;
    op.op   = fop;
    op.size = size;
    op.Rav  = Rav;
    op.Rbv  = Rbv;
    op.Rc   = Rc;

    if (!m_sources[source]->inputs.Push(op))
    {
        return false;
    }

    DebugFPUWrite("queued %s %s",
                  m_sources[source]->regfile->GetParent()->GetFQN().c_str(),
                  op.str().c_str());
    return true;
}