Implement MSUBAq.

This commit is contained in:
Jean-Philip Desjardins 2016-12-30 18:20:40 -05:00
parent 97bd909dd3
commit b0c5765389
5 changed files with 19 additions and 3 deletions

View File

@ -110,6 +110,7 @@ private:
void ITOF4();
void FTOI4();
void ABS();
void MSUBAq();
void MADDA();
void MSUBA();

View File

@ -360,6 +360,12 @@ void CMA_VU::CUpper::ABS()
VUShared::ABS(m_codeGen, m_nDest, m_nFT, m_nFS);
}
//09
void CMA_VU::CUpper::MSUBAq()
{
VUShared::MSUBAq(m_codeGen, m_nDest, m_nFS, m_relativePipeTime);
}
//0A
void CMA_VU::CUpper::MADDA()
{
@ -499,7 +505,7 @@ CMA_VU::CUpper::InstructionFuncConstant CMA_VU::CUpper::m_pOpVector1[0x20] =
//0x00
&CMA_VU::CUpper::ADDAbc, &CMA_VU::CUpper::SUBAbc, &CMA_VU::CUpper::MADDAbc, &CMA_VU::CUpper::MSUBAbc, &CMA_VU::CUpper::ITOF4, &CMA_VU::CUpper::FTOI4, &CMA_VU::CUpper::MULAbc, &CMA_VU::CUpper::ABS,
//0x08
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::MADDA, &CMA_VU::CUpper::MSUBA, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::MSUBAq, &CMA_VU::CUpper::MADDA, &CMA_VU::CUpper::MSUBA, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
//0x10
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
//0x18

View File

@ -144,7 +144,7 @@ INSTRUCTION CMA_VU::CUpper::m_cReflVX1[32] =
{ "ABS", NULL, CopyMnemonic, ReflOpFtFs, NULL, NULL },
//0x08
{ NULL, NULL, NULL, NULL, NULL, NULL },
{ NULL, NULL, NULL, NULL, NULL, NULL },
{ "MSUBA", NULL, CopyMnemonic, ReflOpAccFsQ, NULL, NULL },
{ "MADDA", NULL, CopyMnemonic, ReflOpAccFsFt, NULL, NULL },
{ "MSUBA", NULL, CopyMnemonic, ReflOpAccFsFt, NULL, NULL },
{ NULL, NULL, NULL, NULL, NULL, NULL },
@ -380,7 +380,7 @@ VUINSTRUCTION CMA_VU::CUpper::m_cVuReflVX1[32] =
{ "ABS", NULL, ReflOpAffFtFs },
//0x08
{ NULL, NULL, NULL },
{ NULL, NULL, NULL },
{ "MSUBA", NULL, ReflOpAffWrARdFsQ },
{ "MADDA", NULL, ReflOpAffWrARdFtFs },
{ "MSUBA", NULL, ReflOpAffWrARdFtFs },
{ NULL, NULL, NULL },

View File

@ -923,6 +923,14 @@ void VUShared::MSUBAi(CMipsJitter* codeGen, uint8 dest, uint8 fs, uint32 relativ
true, relativePipeTime);
}
void VUShared::MSUBAq(CMipsJitter* codeGen, uint8 dest, uint8 fs, uint32 relativePipeTime)
{
MSUBA_base(codeGen, dest,
offsetof(CMIPS, m_State.nCOP2[fs]),
offsetof(CMIPS, m_State.nCOP2Q),
true, relativePipeTime);
}
void VUShared::MFIR(CMipsJitter* codeGen, uint8 dest, uint8 ft, uint8 is)
{
for(unsigned int i = 0; i < 4; i++)

View File

@ -145,6 +145,7 @@ namespace VUShared
void MSUBA(CMipsJitter*, uint8, uint8, uint8, uint32);
void MSUBAbc(CMipsJitter*, uint8, uint8, uint8, uint8, uint32);
void MSUBAi(CMipsJitter*, uint8, uint8, uint32);
void MSUBAq(CMipsJitter*, uint8, uint8, uint32);
void MFIR(CMipsJitter*, uint8, uint8, uint8);
void MTIR(CMipsJitter*, uint8, uint8, uint8);
void MUL(CMipsJitter*, uint8, uint8, uint8, uint8, uint32);