Implement COP1_D_ROUND_L in cpu recompiler
This commit is contained in:
parent
32ade84138
commit
dd581741d6
|
@ -1327,6 +1327,7 @@ bool CCodeSection::GenerateX86Code(uint32_t Test)
|
||||||
case R4300i_COP1_FUNCT_NEG: COP1_D_NEG(); break;
|
case R4300i_COP1_FUNCT_NEG: COP1_D_NEG(); break;
|
||||||
case R4300i_COP1_FUNCT_SQRT: COP1_D_SQRT(); break;
|
case R4300i_COP1_FUNCT_SQRT: COP1_D_SQRT(); break;
|
||||||
case R4300i_COP1_FUNCT_MOV: COP1_D_MOV(); break;
|
case R4300i_COP1_FUNCT_MOV: COP1_D_MOV(); break;
|
||||||
|
case R4300i_COP1_FUNCT_ROUND_L: COP1_D_ROUND_L(); break;
|
||||||
case R4300i_COP1_FUNCT_TRUNC_L: COP1_D_TRUNC_L(); break; //added by Witten
|
case R4300i_COP1_FUNCT_TRUNC_L: COP1_D_TRUNC_L(); break; //added by Witten
|
||||||
case R4300i_COP1_FUNCT_CEIL_L: COP1_D_CEIL_L(); break; //added by Witten
|
case R4300i_COP1_FUNCT_CEIL_L: COP1_D_CEIL_L(); break; //added by Witten
|
||||||
case R4300i_COP1_FUNCT_FLOOR_L: COP1_D_FLOOR_L(); break; //added by Witten
|
case R4300i_COP1_FUNCT_FLOOR_L: COP1_D_FLOOR_L(); break; //added by Witten
|
||||||
|
|
|
@ -6308,6 +6308,22 @@ void CRecompilerOps::COP1_D_MOV()
|
||||||
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fs, CRegInfo::FPU_Double);
|
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fs, CRegInfo::FPU_Double);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CRecompilerOps::COP1_D_ROUND_L()
|
||||||
|
{
|
||||||
|
CPU_Message(" %X %s", m_CompilePC, R4300iOpcodeName(m_Opcode.Hex, m_CompilePC));
|
||||||
|
|
||||||
|
m_Section->CompileCop1Test();
|
||||||
|
if (RegInStack(m_Opcode.fs, CRegInfo::FPU_Double) || RegInStack(m_Opcode.fs, CRegInfo::FPU_Qword))
|
||||||
|
{
|
||||||
|
UnMap_FPR(m_Opcode.fs, true);
|
||||||
|
}
|
||||||
|
if (m_Opcode.fd != m_Opcode.fs || !RegInStack(m_Opcode.fd, CRegInfo::FPU_Double))
|
||||||
|
{
|
||||||
|
Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fs, CRegInfo::FPU_Double);
|
||||||
|
}
|
||||||
|
ChangeFPURegFormat(m_Opcode.fd, CRegInfo::FPU_Double, CRegInfo::FPU_Qword, CRegInfo::RoundNearest);
|
||||||
|
}
|
||||||
|
|
||||||
void CRecompilerOps::COP1_D_TRUNC_L() //added by Witten
|
void CRecompilerOps::COP1_D_TRUNC_L() //added by Witten
|
||||||
{
|
{
|
||||||
CPU_Message(" %X %s", m_CompilePC, R4300iOpcodeName(m_Opcode.Hex, m_CompilePC));
|
CPU_Message(" %X %s", m_CompilePC, R4300iOpcodeName(m_Opcode.Hex, m_CompilePC));
|
||||||
|
|
|
@ -182,6 +182,7 @@ protected:
|
||||||
static void COP1_D_NEG ();
|
static void COP1_D_NEG ();
|
||||||
static void COP1_D_SQRT ();
|
static void COP1_D_SQRT ();
|
||||||
static void COP1_D_MOV ();
|
static void COP1_D_MOV ();
|
||||||
|
static void COP1_D_ROUND_L ();
|
||||||
static void COP1_D_TRUNC_L (); //added by Witten
|
static void COP1_D_TRUNC_L (); //added by Witten
|
||||||
static void COP1_D_CEIL_L (); //added by Witten
|
static void COP1_D_CEIL_L (); //added by Witten
|
||||||
static void COP1_D_FLOOR_L (); //added by Witten
|
static void COP1_D_FLOOR_L (); //added by Witten
|
||||||
|
|
Loading…
Reference in New Issue