Prevent ADDi from clobbering VF0 and added flags check.

This commit is contained in:
Jean-Philip Desjardins 2015-07-01 21:56:54 -04:00
parent 5b2ce2f19d
commit 4fb2230f3e
3 changed files with 11 additions and 3 deletions

View File

@ -165,7 +165,7 @@ void CMA_VU::CUpper::MADDq()
//22
void CMA_VU::CUpper::ADDi()
{
VUShared::ADDi(m_codeGen, m_nDest, m_nFD, m_nFS);
VUShared::ADDi(m_codeGen, m_nDest, m_nFD, m_nFS, m_relativePipeTime);
}
//23

View File

@ -352,8 +352,14 @@ void VUShared::ADDbc(CMipsJitter* codeGen, uint8 nDest, uint8 nFd, uint8 nFs, ui
TestSZFlags(codeGen, nDest, offsetof(CMIPS, m_State.nCOP2[nFd]), relativePipeTime);
}
void VUShared::ADDi(CMipsJitter* codeGen, uint8 nDest, uint8 nFd, uint8 nFs)
void VUShared::ADDi(CMipsJitter* codeGen, uint8 nDest, uint8 nFd, uint8 nFs, uint32 relativePipeTime)
{
if(nFd == 0)
{
//Use the temporary register to store the result
nFd = 32;
}
#if 1
for(unsigned int i = 0; i < 4; i++)
{
@ -370,6 +376,8 @@ void VUShared::ADDi(CMipsJitter* codeGen, uint8 nDest, uint8 nFd, uint8 nFs)
codeGen->MD_AddS();
PullVector(codeGen, nDest, offsetof(CMIPS, m_State.nCOP2[nFd]));
#endif
TestSZFlags(codeGen, nDest, offsetof(CMIPS, m_State.nCOP2[nFd]), relativePipeTime);
}
void VUShared::ADDq(CMipsJitter* codeGen, uint8 nDest, uint8 nFd, uint8 nFs)

View File

@ -84,7 +84,7 @@ namespace VUShared
void ABS(CMipsJitter*, uint8, uint8, uint8);
void ADD(CMipsJitter*, uint8, uint8, uint8, uint8, uint32);
void ADDbc(CMipsJitter*, uint8, uint8, uint8, uint8, uint8, uint32);
void ADDi(CMipsJitter*, uint8, uint8, uint8);
void ADDi(CMipsJitter*, uint8, uint8, uint8, uint32);
void ADDq(CMipsJitter*, uint8, uint8, uint8);
void ADDA(CMipsJitter*, uint8, uint8, uint8);
void ADDAbc(CMipsJitter*, uint8, uint8, uint8, uint8);