Fix VROT on 32-bit x86

This commit is contained in:
Henrik Rydgard 2013-07-28 22:20:32 +02:00
parent 6ecd0194fa
commit 3341e7e7fc

View File

@ -1235,8 +1235,18 @@ void Jit::Comp_VRot(u32 op) {
bool negSin = (imm & 0x10) ? true : false;
#ifdef _M_X64
MOVSS(XMM0, fpr.V(sreg));
ABI_CallFunction(negSin ? (void *)&SinCosNegSin : (void *)&SinCos);
#else
// Sigh, passing floats with cdecl isn't pretty.
MOVSS(XMM0, fpr.V(sreg));
SUB(32, R(ESP), Imm32(4));
MOVSS(MatR(ESP), XMM0);
ABI_CallFunction(negSin ? (void *)&SinCosNegSin : (void *)&SinCos);
ADD(32, R(ESP), Imm32(4));
#endif
MOVSS(XMM0, M(&sincostemp[0]));
MOVSS(XMM1, M(&sincostemp[1]));