Fixes a mistake that I made in r927. Fixes regression issue 158

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1002 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Nneeve 2009-04-17 19:35:22 +00:00
parent 029a94ce3f
commit 14f306a800
1 changed files with 4 additions and 3 deletions

View File

@ -2044,7 +2044,8 @@ void VuBaseBlock::AssignVFRegs()
else if( itinst->vfacc[i] >= 0 ) lastwrite = itinst->vfacc[i]; else if( itinst->vfacc[i] >= 0 ) lastwrite = itinst->vfacc[i];
// always alloc at least 1 temp reg // always alloc at least 1 temp reg
int free0 = (i||regs->VFwrite||regs->VFread0||regs->VFread1||(regs->VIwrite&(1<<REG_ACC_FLAG)))?_allocTempXMMreg(XMMT_FPS, -1):-1; int free0 = (i||regs->VFwrite||regs->VFread0||regs->VFread1||(regs->VIwrite&(1<<REG_ACC_FLAG)) || (regs->VIread&(1<<REG_VF0_FLAG)))
?_allocTempXMMreg(XMMT_FPS, -1):-1;
int free1=0, free2=0; int free1=0, free2=0;
if( i==0 && itinst->vfwrite[1] >= 0 && (itinst->vfread0[0]==itinst->vfwrite[1]||itinst->vfread1[0]==itinst->vfwrite[1]) ) { if( i==0 && itinst->vfwrite[1] >= 0 && (itinst->vfread0[0]==itinst->vfwrite[1]||itinst->vfread1[0]==itinst->vfwrite[1]) ) {
@ -2060,9 +2061,9 @@ void VuBaseBlock::AssignVFRegs()
_freeXMMreg(free1); _freeXMMreg(free1);
_freeXMMreg(free2); _freeXMMreg(free2);
} }
else if( regs->VIwrite & (1<<REG_P) || regs->VIwrite & (1<<REG_Q) || regs->VIread & (1<<REG_VF0_FLAG)) { else if( regs->VIwrite & (1<<REG_P)) {
// EFU inst, need extra reg
free1 = _allocTempXMMreg(XMMT_FPS, -1); free1 = _allocTempXMMreg(XMMT_FPS, -1);
// protects against insts like esadd vf0 and sqrt vf0
if( free0 == -1 ) if( free0 == -1 )
free0 = free1; free0 = free1;
_freeXMMreg(free1); _freeXMMreg(free1);