mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-25 07:09:48 -06:00
DSP/Jit: Some small optimizations to lsrn emitter
This commit is contained in:
@ -1570,16 +1570,17 @@ void DSPEmitter::lsrn(const UDSPInstruction opc)
|
|||||||
// acc <<= -shift;
|
// acc <<= -shift;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
CMP(64, R(RDX), Imm8(0));
|
CMP(64, R(RDX), Imm8(0));//is this actually worth the branch cost?
|
||||||
FixupBranch zero = J_CC(CC_E);
|
FixupBranch zero = J_CC(CC_E);
|
||||||
TEST(16, R(RAX), Imm16(0x3f));
|
TEST(16, R(RAX), Imm16(0x3f));//is this actually worth the branch cost?
|
||||||
FixupBranch noShift = J_CC(CC_Z);
|
FixupBranch noShift = J_CC(CC_Z);
|
||||||
MOVZX(64, 16, RCX, R(RAX));
|
//CL gets automatically masked with 0x3f on IA32/AMD64
|
||||||
AND(16, R(RCX), Imm16(0x3f));
|
//MOVZX(64, 16, RCX, R(RAX));
|
||||||
|
//AND(16, R(RCX), Imm16(0x3f));
|
||||||
TEST(16, R(RAX), Imm16(0x40));
|
TEST(16, R(RAX), Imm16(0x40));
|
||||||
FixupBranch shiftLeft = J_CC(CC_Z);
|
FixupBranch shiftLeft = J_CC(CC_Z);
|
||||||
NEG(16, R(RCX));
|
NEG(16, R(RCX));
|
||||||
ADD(16, R(RCX), Imm16(0x40));
|
//ADD(16, R(RCX), Imm16(0x40));
|
||||||
SHL(64, R(RDX), R(RCX));
|
SHL(64, R(RDX), R(RCX));
|
||||||
FixupBranch exit = J();
|
FixupBranch exit = J();
|
||||||
SetJumpTarget(shiftLeft);
|
SetJumpTarget(shiftLeft);
|
||||||
|
Reference in New Issue
Block a user