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; }