Core: Add DADDI
This commit is contained in:
parent
630778a41e
commit
e724595ac2
|
@ -134,7 +134,7 @@ R4300iOp::Func * R4300iOp::BuildInterpreter()
|
|||
Jump_Opcode[21] = BNEL;
|
||||
Jump_Opcode[22] = BLEZL;
|
||||
Jump_Opcode[23] = BGTZL;
|
||||
Jump_Opcode[24] = UnknownOpcode;
|
||||
Jump_Opcode[24] = DADDI;
|
||||
Jump_Opcode[25] = DADDIU;
|
||||
Jump_Opcode[26] = LDL;
|
||||
Jump_Opcode[27] = LDR;
|
||||
|
@ -977,6 +977,11 @@ void R4300iOp::BGTZL()
|
|||
}
|
||||
}
|
||||
|
||||
void R4300iOp::DADDI()
|
||||
{
|
||||
_GPR[m_Opcode.rt].DW = _GPR[m_Opcode.rs].DW + (int64_t)((int16_t)m_Opcode.immediate);
|
||||
}
|
||||
|
||||
void R4300iOp::DADDIU()
|
||||
{
|
||||
_GPR[m_Opcode.rt].DW = _GPR[m_Opcode.rs].DW + (int64_t)((int16_t)m_Opcode.immediate);
|
||||
|
|
|
@ -31,6 +31,7 @@ public:
|
|||
static void BNEL();
|
||||
static void BLEZL();
|
||||
static void BGTZL();
|
||||
static void DADDI();
|
||||
static void DADDIU();
|
||||
static void LDL();
|
||||
static void LDR();
|
||||
|
|
|
@ -43,7 +43,7 @@ R4300iOp32::Func * R4300iOp32::BuildInterpreter()
|
|||
Jump_Opcode[21] = BNEL;
|
||||
Jump_Opcode[22] = BLEZL;
|
||||
Jump_Opcode[23] = BGTZL;
|
||||
Jump_Opcode[24] = R4300iOp::UnknownOpcode;
|
||||
Jump_Opcode[24] = R4300iOp::DADDI;
|
||||
Jump_Opcode[25] = R4300iOp::DADDIU;
|
||||
Jump_Opcode[26] = R4300iOp::LDL;
|
||||
Jump_Opcode[27] = R4300iOp::LDR;
|
||||
|
|
|
@ -2106,6 +2106,20 @@ void CArmRecompilerOps::LUI()
|
|||
m_RegWorkingSet.SetMipsRegState(m_Opcode.rt, CRegInfo::STATE_CONST_32_SIGN);
|
||||
}
|
||||
|
||||
void CArmRecompilerOps::DADDI()
|
||||
{
|
||||
if (m_Opcode.rs != 0) { WriteBack_GPR(m_Opcode.rs, false); }
|
||||
if (m_Opcode.rt != 0) { UnMap_GPR(m_Opcode.rt, true); }
|
||||
if (g_Settings->LoadBool(Game_32Bit))
|
||||
{
|
||||
CompileInterpterCall((void *)R4300iOp32::DADDI, "R4300iOp32::DADDI");
|
||||
}
|
||||
else
|
||||
{
|
||||
CompileInterpterCall((void *)R4300iOp::DADDI, "R4300iOp::DADDI");
|
||||
}
|
||||
}
|
||||
|
||||
void CArmRecompilerOps::DADDIU()
|
||||
{
|
||||
if (m_Opcode.rs != 0) { WriteBack_GPR(m_Opcode.rs, false); }
|
||||
|
|
|
@ -42,6 +42,7 @@ public:
|
|||
void ORI();
|
||||
void XORI();
|
||||
void LUI();
|
||||
void DADDI();
|
||||
void DADDIU();
|
||||
void LDL();
|
||||
void LDR();
|
||||
|
|
|
@ -567,6 +567,7 @@ bool CCodeSection::GenerateNativeCode(uint32_t Test)
|
|||
case R4300i_BNEL: m_RecompilerOps->Compile_BranchLikely(CRecompilerOps::CompareTypeBNE, false); break;
|
||||
case R4300i_BGTZL: m_RecompilerOps->Compile_BranchLikely(CRecompilerOps::CompareTypeBGTZ, false); break;
|
||||
case R4300i_BLEZL: m_RecompilerOps->Compile_BranchLikely(CRecompilerOps::CompareTypeBLEZ, false); break;
|
||||
case R4300i_DADDI: m_RecompilerOps->DADDI(); break;
|
||||
case R4300i_DADDIU: m_RecompilerOps->DADDIU(); break;
|
||||
case R4300i_LDL: m_RecompilerOps->LDL(); break;
|
||||
case R4300i_LDR: m_RecompilerOps->LDR(); break;
|
||||
|
|
|
@ -59,6 +59,7 @@ public:
|
|||
virtual void ORI() = 0;
|
||||
virtual void XORI() = 0;
|
||||
virtual void LUI() = 0;
|
||||
virtual void DADDI() = 0;
|
||||
virtual void DADDIU() = 0;
|
||||
virtual void LDL() = 0;
|
||||
virtual void LDR() = 0;
|
||||
|
|
|
@ -2614,6 +2614,24 @@ void CX86RecompilerOps::LUI()
|
|||
m_RegWorkingSet.SetMipsRegState(m_Opcode.rt, CRegInfo::STATE_CONST_32_SIGN);
|
||||
}
|
||||
|
||||
void CX86RecompilerOps::DADDI()
|
||||
{
|
||||
if (m_Opcode.rs != 0)
|
||||
{
|
||||
UnMap_GPR(m_Opcode.rs, true);
|
||||
}
|
||||
|
||||
if (m_Opcode.rs != 0)
|
||||
{
|
||||
UnMap_GPR(m_Opcode.rt, true);
|
||||
}
|
||||
|
||||
m_RegWorkingSet.BeforeCallDirect();
|
||||
MoveConstToVariable(m_Opcode.Value, &R4300iOp::m_Opcode.Value, "R4300iOp::m_Opcode.Value");
|
||||
Call_Direct((void *)R4300iOp::DADDI, "R4300iOp::DADDI");
|
||||
m_RegWorkingSet.AfterCallDirect();
|
||||
}
|
||||
|
||||
void CX86RecompilerOps::DADDIU()
|
||||
{
|
||||
if (m_Opcode.rs != 0)
|
||||
|
|
|
@ -55,6 +55,7 @@ public:
|
|||
void ORI();
|
||||
void XORI();
|
||||
void LUI();
|
||||
void DADDI();
|
||||
void DADDIU();
|
||||
void LDL();
|
||||
void LDR();
|
||||
|
|
Loading…
Reference in New Issue