From 78bc9690e2ce72dcea131291974229bc84308b6f Mon Sep 17 00:00:00 2001 From: Sintendo Date: Wed, 13 Jun 2018 23:02:50 +0200 Subject: [PATCH] Eliminate branch in ConvertDoubleToSingle --- Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp b/Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp index 18c78e872d..77cccda463 100644 --- a/Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp +++ b/Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp @@ -898,10 +898,9 @@ void EmuCodeBlock::ConvertDoubleToSingle(X64Reg dst, X64Reg src) MOVD_xmm(R(RSCRATCH), XMM1); // Check if the double is in the range of valid single subnormal - CMP(16, R(RSCRATCH), Imm16(896)); - FixupBranch NoDenormalize = J_CC(CC_G); - CMP(16, R(RSCRATCH), Imm16(874)); - FixupBranch NoDenormalize2 = J_CC(CC_L); + SUB(16, R(RSCRATCH), Imm16(874)); + CMP(16, R(RSCRATCH), Imm16(896 - 874)); + FixupBranch NoDenormalize = J_CC(CC_A); // Denormalise @@ -927,7 +926,6 @@ void EmuCodeBlock::ConvertDoubleToSingle(X64Reg dst, X64Reg src) FixupBranch end = J(false); // Goto end SetJumpTarget(NoDenormalize); - SetJumpTarget(NoDenormalize2); // Don't Denormalize