virtual void FlushRegCache() { for (int i=0; i<16; i++) { FlushRegister(fr_0+i); } //Notes (Div22) : //x86e->Emit(op_emms); //Results in no-op due to previous mov r,m (if any) //x86e->Emit(op_sfence); //7-10% speed penalty }
virtual void FlushRegister_xmm(x86_sse_reg reg) { for (int i=0; i<16; i++) { fprinfo* r1= GetInfo(fr_0+i); if (r1!=0 && r1->reg==reg) { FlushRegister(fr_0+i); } } }
/* ======================================================================================================================= If the MIPS?register is mapped, this will free it without writing it back to memory. ======================================================================================================================= */ void FreeMipsRegister(int mips_reg) { /*~~~~~*/ int temp; /*~~~~~*/ ConstMap[mips_reg].IsMapped = 0; if((temp = CheckWhereIsMipsReg(mips_reg)) > -1) { x86reg[temp].IsDirty = 0; FlushRegister(FLUSH_TO_MEMORY, temp); } }