Core: fix up CX86RecompilerOps::COP1_D_ROUND_W
This commit is contained in:
parent
772a20f07d
commit
401efae0d9
|
@ -8478,6 +8478,7 @@ void CX86RecompilerOps::COP1_D_MOV()
|
||||||
{
|
{
|
||||||
if (FpuExceptionInRecompiler())
|
if (FpuExceptionInRecompiler())
|
||||||
{
|
{
|
||||||
|
CompileCop1Test();
|
||||||
if (m_RegWorkingSet.RegInStack(m_Opcode.fs, CRegInfo::FPU_Any) || m_RegWorkingSet.RegInStack(m_Opcode.fd, CRegInfo::FPU_Any))
|
if (m_RegWorkingSet.RegInStack(m_Opcode.fs, CRegInfo::FPU_Any) || m_RegWorkingSet.RegInStack(m_Opcode.fd, CRegInfo::FPU_Any))
|
||||||
{
|
{
|
||||||
g_Notify->BreakPoint(__FILE__, __LINE__);
|
g_Notify->BreakPoint(__FILE__, __LINE__);
|
||||||
|
@ -8557,6 +8558,12 @@ void CX86RecompilerOps::COP1_D_FLOOR_L()
|
||||||
|
|
||||||
void CX86RecompilerOps::COP1_D_ROUND_W()
|
void CX86RecompilerOps::COP1_D_ROUND_W()
|
||||||
{
|
{
|
||||||
|
if (FpuExceptionInRecompiler())
|
||||||
|
{
|
||||||
|
COP1_S_CVT(CRegInfo::RoundNearest, CRegInfo::FPU_Double, CRegInfo::FPU_Dword);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CompileCop1Test();
|
CompileCop1Test();
|
||||||
if (m_RegWorkingSet.RegInStack(m_Opcode.fs, CRegInfo::FPU_Double) || m_RegWorkingSet.RegInStack(m_Opcode.fs, CRegInfo::FPU_Qword))
|
if (m_RegWorkingSet.RegInStack(m_Opcode.fs, CRegInfo::FPU_Double) || m_RegWorkingSet.RegInStack(m_Opcode.fs, CRegInfo::FPU_Qword))
|
||||||
{
|
{
|
||||||
|
@ -8567,6 +8574,7 @@ void CX86RecompilerOps::COP1_D_ROUND_W()
|
||||||
m_RegWorkingSet.Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fs, CRegInfo::FPU_Double);
|
m_RegWorkingSet.Load_FPR_ToTop(m_Opcode.fd, m_Opcode.fs, CRegInfo::FPU_Double);
|
||||||
}
|
}
|
||||||
m_RegWorkingSet.ChangeFPURegFormat(m_Opcode.fd, CRegInfo::FPU_Double, CRegInfo::FPU_Dword, CRegInfo::RoundNearest);
|
m_RegWorkingSet.ChangeFPURegFormat(m_Opcode.fd, CRegInfo::FPU_Double, CRegInfo::FPU_Dword, CRegInfo::RoundNearest);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CX86RecompilerOps::COP1_D_TRUNC_W()
|
void CX86RecompilerOps::COP1_D_TRUNC_W()
|
||||||
|
|
|
@ -243,6 +243,11 @@ void CX86Ops::Fadd(const asmjit::x86::Mem & Mem)
|
||||||
fadd(Mem);
|
fadd(Mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CX86Ops::Fchs(void)
|
||||||
|
{
|
||||||
|
fchs();
|
||||||
|
}
|
||||||
|
|
||||||
void CX86Ops::Fdiv(const asmjit::x86::Mem & Mem)
|
void CX86Ops::Fdiv(const asmjit::x86::Mem & Mem)
|
||||||
{
|
{
|
||||||
fdiv(Mem);
|
fdiv(Mem);
|
||||||
|
@ -253,6 +258,11 @@ void CX86Ops::Fmul(const asmjit::x86::Mem & Mem)
|
||||||
fmul(Mem);
|
fmul(Mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CX86Ops::Fsqrt(void)
|
||||||
|
{
|
||||||
|
fsqrt();
|
||||||
|
}
|
||||||
|
|
||||||
void CX86Ops::Fsub(const asmjit::x86::Mem & Mem)
|
void CX86Ops::Fsub(const asmjit::x86::Mem & Mem)
|
||||||
{
|
{
|
||||||
fsub(Mem);
|
fsub(Mem);
|
||||||
|
|
|
@ -46,8 +46,10 @@ public:
|
||||||
void CompX86regToVariable(const asmjit::x86::Gp & Reg, void * Variable, const char * VariableName);
|
void CompX86regToVariable(const asmjit::x86::Gp & Reg, void * Variable, const char * VariableName);
|
||||||
void Fabs(void);
|
void Fabs(void);
|
||||||
void Fadd(const asmjit::x86::Mem & Mem);
|
void Fadd(const asmjit::x86::Mem & Mem);
|
||||||
|
void Fchs(void);
|
||||||
void Fdiv(const asmjit::x86::Mem & Mem);
|
void Fdiv(const asmjit::x86::Mem & Mem);
|
||||||
void Fmul(const asmjit::x86::Mem & Mem);
|
void Fmul(const asmjit::x86::Mem & Mem);
|
||||||
|
void Fsqrt(void);
|
||||||
void Fsub(const asmjit::x86::Mem & Mem);
|
void Fsub(const asmjit::x86::Mem & Mem);
|
||||||
void JaeLabel(const char * LabelName, asmjit::Label & JumpLabel);
|
void JaeLabel(const char * LabelName, asmjit::Label & JumpLabel);
|
||||||
void JaLabel(const char * LabelName, asmjit::Label & JumpLabel);
|
void JaLabel(const char * LabelName, asmjit::Label & JumpLabel);
|
||||||
|
|
Loading…
Reference in New Issue