mirror of https://github.com/PCSX2/pcsx2.git
minor FPU min/max opcode fix. minor VU Clip opcode fix.
git-svn-id: http://pcsx2-playground.googlecode.com/svn/trunk@463 a6443dda-0b58-4228-96e9-037be469359c
This commit is contained in:
parent
786eeee503
commit
f137821d9c
|
@ -744,35 +744,35 @@ int recCommutativeOp(int info, int regd, int op)
|
|||
case PROCESS_EE_S:
|
||||
if (regd == EEREC_S) {
|
||||
SSE_MOVSS_M32_to_XMM(t0reg, (uptr)&fpuRegs.fpr[_Ft_]);
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW && /*!CHECK_FPUCLAMPHACK &&*/ (op < 2)) { fpuFloat2(regd); fpuFloat2(t0reg); }
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW /*&& !CHECK_FPUCLAMPHACK */ || (op >= 2)) { fpuFloat2(regd); fpuFloat2(t0reg); }
|
||||
recComOpXMM_to_XMM[op](regd, t0reg);
|
||||
}
|
||||
else {
|
||||
SSE_MOVSS_M32_to_XMM(regd, (uptr)&fpuRegs.fpr[_Ft_]);
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW && (op < 2)) { fpuFloat2(regd); fpuFloat2(EEREC_S); }
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW || (op >= 2)) { fpuFloat2(regd); fpuFloat2(EEREC_S); }
|
||||
recComOpXMM_to_XMM[op](regd, EEREC_S);
|
||||
}
|
||||
break;
|
||||
case PROCESS_EE_T:
|
||||
if (regd == EEREC_T) {
|
||||
SSE_MOVSS_M32_to_XMM(t0reg, (uptr)&fpuRegs.fpr[_Fs_]);
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW && (op < 2)) { fpuFloat2(regd); fpuFloat2(t0reg); }
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW || (op >= 2)) { fpuFloat2(regd); fpuFloat2(t0reg); }
|
||||
recComOpXMM_to_XMM[op](regd, t0reg);
|
||||
}
|
||||
else {
|
||||
SSE_MOVSS_M32_to_XMM(regd, (uptr)&fpuRegs.fpr[_Fs_]);
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW && (op < 2)) { fpuFloat2(regd); fpuFloat2(EEREC_T); }
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW || (op >= 2)) { fpuFloat2(regd); fpuFloat2(EEREC_T); }
|
||||
recComOpXMM_to_XMM[op](regd, EEREC_T);
|
||||
}
|
||||
break;
|
||||
case (PROCESS_EE_S|PROCESS_EE_T):
|
||||
if (regd == EEREC_T) {
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW && (op < 2)) { fpuFloat2(regd); fpuFloat2(EEREC_S); }
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW || (op >= 2)) { fpuFloat2(regd); fpuFloat2(EEREC_S); }
|
||||
recComOpXMM_to_XMM[op](regd, EEREC_S);
|
||||
}
|
||||
else {
|
||||
if (regd != EEREC_S) SSE_MOVSS_XMM_to_XMM(regd, EEREC_S);
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW && (op < 2)) { fpuFloat2(regd); fpuFloat2(EEREC_T); }
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW || (op >= 2)) { fpuFloat2(regd); fpuFloat2(EEREC_T); }
|
||||
recComOpXMM_to_XMM[op](regd, EEREC_T);
|
||||
}
|
||||
break;
|
||||
|
@ -780,7 +780,7 @@ int recCommutativeOp(int info, int regd, int op)
|
|||
SysPrintf("FPU: recCommutativeOp case 4\n");
|
||||
SSE_MOVSS_M32_to_XMM(regd, (uptr)&fpuRegs.fpr[_Fs_]);
|
||||
SSE_MOVSS_M32_to_XMM(t0reg, (uptr)&fpuRegs.fpr[_Ft_]);
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW && (op < 2)) { fpuFloat2(regd); fpuFloat2(t0reg); }
|
||||
if (CHECK_FPU_EXTRA_OVERFLOW || (op >= 2)) { fpuFloat2(regd); fpuFloat2(t0reg); }
|
||||
recComOpXMM_to_XMM[op](regd, t0reg);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -2564,6 +2564,9 @@ void recVUMI_CLIP(VURegs *VU, int info)
|
|||
|
||||
//if ( (x86temp1 == 0) || (x86temp2 == 0) ) SysPrintf("VU CLIP Allocation Error: EAX being allocated! \n");
|
||||
|
||||
_freeXMMreg(t1reg); // These should have been freed at allocation in eeVURecompileCode()
|
||||
_freeXMMreg(t2reg); // but if they've been used since then, then free them. (just doing this incase :p (cottonvibes))
|
||||
|
||||
if( _Ft_ == 0 ) {
|
||||
SSE_MOVAPS_M128_to_XMM(EEREC_TEMP, (uptr)&s_fones[0]); // all 1s
|
||||
SSE_MOVAPS_M128_to_XMM(t1reg, (uptr)&s_fones[4]);
|
||||
|
@ -2601,9 +2604,6 @@ void recVUMI_CLIP(VURegs *VU, int info)
|
|||
if ( ( CHECK_VUCLIPHACK ) || ( !(info & (PROCESS_VU_SUPER|PROCESS_VU_COP2)) ) )
|
||||
MOV32RtoM((uptr)&VU->VI[REG_CLIP_FLAG], EAX);
|
||||
|
||||
_freeXMMreg(t1reg);
|
||||
_freeXMMreg(t2reg);
|
||||
|
||||
_freeX86reg(x86temp1);
|
||||
_freeX86reg(x86temp2);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue