mirror of
https://github.com/libretro/Play-.git
synced 2025-03-05 17:57:25 +00:00
Added support for VIOR.
This commit is contained in:
parent
388f60f7cd
commit
a249854b68
@ -404,6 +404,12 @@ void CCOP_VU::VIADDI()
|
||||
VUShared::IADDI(m_codeGen, m_nIT, m_nIS, m_nImm5);
|
||||
}
|
||||
|
||||
//35
|
||||
void CCOP_VU::VIOR()
|
||||
{
|
||||
VUShared::IOR(m_codeGen, m_nID, m_nIS, m_nIT);
|
||||
}
|
||||
|
||||
//38
|
||||
void CCOP_VU::VCALLMS()
|
||||
{
|
||||
@ -758,7 +764,7 @@ CCOP_VU::InstructionFuncConstant CCOP_VU::m_pOpVector[0x40] =
|
||||
//0x28
|
||||
&CCOP_VU::VADD, &CCOP_VU::VMADD, &CCOP_VU::VMUL, &CCOP_VU::VMAX, &CCOP_VU::VSUB, &CCOP_VU::VMSUB, &CCOP_VU::VOPMSUB, &CCOP_VU::VMINI,
|
||||
//0x30
|
||||
&CCOP_VU::VIADD, &CCOP_VU::Illegal, &CCOP_VU::VIADDI, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
&CCOP_VU::VIADD, &CCOP_VU::Illegal, &CCOP_VU::VIADDI, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::VIOR, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
//0x38
|
||||
&CCOP_VU::VCALLMS, &CCOP_VU::VCALLMSR, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::VX0, &CCOP_VU::VX1, &CCOP_VU::VX2, &CCOP_VU::VX3,
|
||||
};
|
||||
|
@ -91,6 +91,7 @@ private:
|
||||
void VMINI();
|
||||
void VIADD();
|
||||
void VIADDI();
|
||||
void VIOR();
|
||||
void VCALLMS();
|
||||
void VCALLMSR();
|
||||
void VX0();
|
||||
|
@ -245,7 +245,7 @@ INSTRUCTION CCOP_VU::m_cReflV[64] =
|
||||
{ "VIADDI", NULL, CopyMnemonic, ReflOpItIsImm5, NULL, NULL },
|
||||
{ NULL, NULL, NULL, NULL, NULL, NULL },
|
||||
{ NULL, NULL, NULL, NULL, NULL, NULL },
|
||||
{ NULL, NULL, NULL, NULL, NULL, NULL },
|
||||
{ "VIOR", NULL, CopyMnemonic, ReflOpIdIsIt, NULL, NULL },
|
||||
{ NULL, NULL, NULL, NULL, NULL, NULL },
|
||||
{ NULL, NULL, NULL, NULL, NULL, NULL },
|
||||
//0x38
|
||||
|
@ -498,10 +498,7 @@ void CMA_VU::CLower::IAND()
|
||||
//35
|
||||
void CMA_VU::CLower::IOR()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP2VI[m_nIS]));
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP2VI[m_nIT]));
|
||||
m_codeGen->Or();
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP2VI[m_nID]));
|
||||
VUShared::IOR(m_codeGen, m_nID, m_nIS, m_nIT);
|
||||
}
|
||||
|
||||
//3C
|
||||
|
@ -526,6 +526,14 @@ void VUShared::ILWR(CMipsJitter* codeGen, uint8 dest, uint8 it, uint8 is, uint32
|
||||
ILWbase(codeGen, it);
|
||||
}
|
||||
|
||||
void VUShared::IOR(CMipsJitter* codeGen, uint8 id, uint8 is, uint8 it)
|
||||
{
|
||||
codeGen->PushRel(offsetof(CMIPS, m_State.nCOP2VI[is]));
|
||||
codeGen->PushRel(offsetof(CMIPS, m_State.nCOP2VI[it]));
|
||||
codeGen->Or();
|
||||
codeGen->PullRel(offsetof(CMIPS, m_State.nCOP2VI[id]));
|
||||
}
|
||||
|
||||
void VUShared::ITOF0(CMipsJitter* codeGen, uint8 nDest, uint8 nFt, uint8 nFs)
|
||||
{
|
||||
codeGen->MD_PushRel(offsetof(CMIPS, m_State.nCOP2[nFs]));
|
||||
|
@ -99,6 +99,7 @@ namespace VUShared
|
||||
void IADDI(CMipsJitter*, uint8, uint8, uint8);
|
||||
void ILWbase(CMipsJitter*, uint8);
|
||||
void ILWR(CMipsJitter*, uint8, uint8, uint8, uint32);
|
||||
void IOR(CMipsJitter*, uint8, uint8, uint8);
|
||||
void ITOF0(CMipsJitter*, uint8, uint8, uint8);
|
||||
void ITOF4(CMipsJitter*, uint8, uint8, uint8);
|
||||
void ITOF12(CMipsJitter*, uint8, uint8, uint8);
|
||||
|
Loading…
x
Reference in New Issue
Block a user