Eliminate branch in ConvertDoubleToSingle

This commit is contained in:
Sintendo 2018-06-13 23:02:50 +02:00
parent 09df03382d
commit 78bc9690e2
1 changed files with 3 additions and 5 deletions

View File

@ -898,10 +898,9 @@ void EmuCodeBlock::ConvertDoubleToSingle(X64Reg dst, X64Reg src)
MOVD_xmm(R(RSCRATCH), XMM1); MOVD_xmm(R(RSCRATCH), XMM1);
// Check if the double is in the range of valid single subnormal // Check if the double is in the range of valid single subnormal
CMP(16, R(RSCRATCH), Imm16(896)); SUB(16, R(RSCRATCH), Imm16(874));
FixupBranch NoDenormalize = J_CC(CC_G); CMP(16, R(RSCRATCH), Imm16(896 - 874));
CMP(16, R(RSCRATCH), Imm16(874)); FixupBranch NoDenormalize = J_CC(CC_A);
FixupBranch NoDenormalize2 = J_CC(CC_L);
// Denormalise // Denormalise
@ -927,7 +926,6 @@ void EmuCodeBlock::ConvertDoubleToSingle(X64Reg dst, X64Reg src)
FixupBranch end = J(false); // Goto end FixupBranch end = J(false); // Goto end
SetJumpTarget(NoDenormalize); SetJumpTarget(NoDenormalize);
SetJumpTarget(NoDenormalize2);
// Don't Denormalize // Don't Denormalize