Merge pull request #832 from cxd4/bench-x64

[core] removed extra, unnecessary branch for the NORMAL case
This commit is contained in:
zilmar 2015-12-19 20:41:55 +11:00
commit 456df42280
1 changed files with 2 additions and 4 deletions

View File

@ -301,22 +301,20 @@ void CInterpreterCPU::ExecuteCPU()
m_R4300i_Opcode[Opcode.op](); m_R4300i_Opcode[Opcode.op]();
NextTimer -= CountPerOp; NextTimer -= CountPerOp;
PROGRAM_COUNTER += 4;
switch (R4300iOp::m_NextInstruction) switch (R4300iOp::m_NextInstruction)
{ {
case NORMAL: case NORMAL:
PROGRAM_COUNTER += 4;
break; break;
case DELAY_SLOT: case DELAY_SLOT:
R4300iOp::m_NextInstruction = JUMP; R4300iOp::m_NextInstruction = JUMP;
PROGRAM_COUNTER += 4;
break; break;
case PERMLOOP_DO_DELAY: case PERMLOOP_DO_DELAY:
R4300iOp::m_NextInstruction = PERMLOOP_DELAY_DONE; R4300iOp::m_NextInstruction = PERMLOOP_DELAY_DONE;
PROGRAM_COUNTER += 4;
break; break;
case JUMP: case JUMP:
{ {
bool CheckTimer = (JumpToLocation < PROGRAM_COUNTER || TestTimer); bool CheckTimer = (JumpToLocation < PROGRAM_COUNTER - 4 || TestTimer);
PROGRAM_COUNTER = JumpToLocation; PROGRAM_COUNTER = JumpToLocation;
R4300iOp::m_NextInstruction = NORMAL; R4300iOp::m_NextInstruction = NORMAL;
if (CheckTimer) if (CheckTimer)