Merge pull request #2974 from Tilka/fprf
Jit64: fix errors in FPRF calculation
This commit is contained in:
commit
48031eaff7
|
@ -932,7 +932,7 @@ void EmuCodeBlock::SetFPRF(Gen::X64Reg xmm)
|
||||||
|
|
||||||
// Max exponent + no mantissa: sign ? PPC_FPCLASS_NINF : PPC_FPCLASS_PINF;
|
// Max exponent + no mantissa: sign ? PPC_FPCLASS_NINF : PPC_FPCLASS_PINF;
|
||||||
SetJumpTarget(notNAN);
|
SetJumpTarget(notNAN);
|
||||||
LEA(32, RSCRATCH, MScaled(RSCRATCH, MathUtil::PPC_FPCLASS_NINF - MathUtil::PPC_FPCLASS_PINF, MathUtil::PPC_FPCLASS_NINF));
|
LEA(32, RSCRATCH, MScaled(RSCRATCH, MathUtil::PPC_FPCLASS_NINF - MathUtil::PPC_FPCLASS_PINF, MathUtil::PPC_FPCLASS_PINF));
|
||||||
continue3 = J();
|
continue3 = J();
|
||||||
|
|
||||||
SetJumpTarget(zeroExponent);
|
SetJumpTarget(zeroExponent);
|
||||||
|
@ -940,7 +940,7 @@ void EmuCodeBlock::SetFPRF(Gen::X64Reg xmm)
|
||||||
FixupBranch zero = J_CC(CC_Z);
|
FixupBranch zero = J_CC(CC_Z);
|
||||||
|
|
||||||
// No exponent + mantissa: sign ? PPC_FPCLASS_ND : PPC_FPCLASS_PD;
|
// No exponent + mantissa: sign ? PPC_FPCLASS_ND : PPC_FPCLASS_PD;
|
||||||
LEA(32, RSCRATCH, MScaled(RSCRATCH, MathUtil::PPC_FPCLASS_ND - MathUtil::PPC_FPCLASS_PD, MathUtil::PPC_FPCLASS_ND));
|
LEA(32, RSCRATCH, MScaled(RSCRATCH, MathUtil::PPC_FPCLASS_ND - MathUtil::PPC_FPCLASS_PD, MathUtil::PPC_FPCLASS_PD));
|
||||||
continue4 = J();
|
continue4 = J();
|
||||||
|
|
||||||
// Zero: sign ? PPC_FPCLASS_NZ : PPC_FPCLASS_PZ;
|
// Zero: sign ? PPC_FPCLASS_NZ : PPC_FPCLASS_PZ;
|
||||||
|
@ -969,13 +969,13 @@ void EmuCodeBlock::SetFPRF(Gen::X64Reg xmm)
|
||||||
SetJumpTarget(infinity);
|
SetJumpTarget(infinity);
|
||||||
MOVQ_xmm(R(RSCRATCH), xmm);
|
MOVQ_xmm(R(RSCRATCH), xmm);
|
||||||
SHR(64, R(RSCRATCH), Imm8(63));
|
SHR(64, R(RSCRATCH), Imm8(63));
|
||||||
LEA(32, RSCRATCH, MScaled(RSCRATCH, MathUtil::PPC_FPCLASS_NINF - MathUtil::PPC_FPCLASS_PINF, MathUtil::PPC_FPCLASS_NINF));
|
LEA(32, RSCRATCH, MScaled(RSCRATCH, MathUtil::PPC_FPCLASS_NINF - MathUtil::PPC_FPCLASS_PINF, MathUtil::PPC_FPCLASS_PINF));
|
||||||
continue3 = J();
|
continue3 = J();
|
||||||
SetJumpTarget(zeroExponent);
|
SetJumpTarget(zeroExponent);
|
||||||
TEST(64, R(RSCRATCH), R(RSCRATCH));
|
TEST(64, R(RSCRATCH), R(RSCRATCH));
|
||||||
FixupBranch zero = J_CC(CC_Z);
|
FixupBranch zero = J_CC(CC_Z);
|
||||||
SHR(64, R(RSCRATCH), Imm8(63));
|
SHR(64, R(RSCRATCH), Imm8(63));
|
||||||
LEA(32, RSCRATCH, MScaled(RSCRATCH, MathUtil::PPC_FPCLASS_ND - MathUtil::PPC_FPCLASS_PD, MathUtil::PPC_FPCLASS_ND));
|
LEA(32, RSCRATCH, MScaled(RSCRATCH, MathUtil::PPC_FPCLASS_ND - MathUtil::PPC_FPCLASS_PD, MathUtil::PPC_FPCLASS_PD));
|
||||||
continue4 = J();
|
continue4 = J();
|
||||||
SetJumpTarget(zero);
|
SetJumpTarget(zero);
|
||||||
SHR(64, R(RSCRATCH), Imm8(63));
|
SHR(64, R(RSCRATCH), Imm8(63));
|
||||||
|
|
Loading…
Reference in New Issue