readVecElemOperand(const StaticInst *si, int idx) const override
{
const RegId& reg = si->srcRegIdx(idx);
- assert(reg.isVecReg());
+ assert(reg.isVecElem());
return thread.readVecElem(reg);
}
const TheISA::VecElem val) override
{
const RegId& reg = si->destRegIdx(idx);
- assert(reg.isVecReg());
+ assert(reg.isVecElem());
thread.setVecElem(reg, val);
}
ThreadID tid) const -> const VecElem&
{
PhysRegIdPtr phys_reg = commitRenameMap[tid].lookup(
- RegId(VecRegClass, reg_idx, ldx));
+ RegId(VecElemClass, reg_idx, ldx));
return readVecElem(phys_reg);
}
/** Returns the number of free vector registers. */
unsigned numFreeVecRegs() const { return vecList.numFreeRegs(); }
+ /** Returns the number of free vector registers. */
+ unsigned numFreeVecElems() const { return vecElemList.numFreeRegs(); }
+
/** Returns the number of free cc registers. */
unsigned numFreeCCRegs() const { return ccList.numFreeRegs(); }
};
fpRenameLookups++;
break;
case VecRegClass:
+ case VecElemClass:
vecRenameLookups++;
break;
case CCRegClass:
/* The free list should currently be tracking register elems. */
panic_if(freeList->hasFreeVecRegs(),
"The free list is already tracking full Vec");
- panic_if(freeList->numFreeVecRegs() !=
+ panic_if(freeList->numFreeVecElems() !=
regFile->numVecElemPhysRegs() - TheISA::NumFloatRegs,
"The free list has lost vector register elements");
/* To rebuild the arch regs we take the easy road:
readVecElemOperand(const StaticInst *si, int idx) const override
{
numVecRegReads++;
- const RegId& reg = si->destRegIdx(idx);
+ const RegId& reg = si->srcRegIdx(idx);
assert(reg.isVecElem());
return thread->readVecElem(reg);
}