summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorSintendo <bram.speeckaert@gmail.com>2018-06-13 23:02:50 +0200
committerSintendo <bram.speeckaert@gmail.com>2018-06-13 23:02:50 +0200
commit78bc9690e2ce72dcea131291974229bc84308b6f (patch)
treed16908ae31f0b2077db77b3c5d7b38ab969879cc /Source/Core
parent09df03382d3607fdb865c691d58f209e8f5a589a (diff)
Eliminate branch in ConvertDoubleToSingle
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp8
1 files 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