diff --git a/Source/ee/VUShared.cpp b/Source/ee/VUShared.cpp index a5a355d69..c5a7dbc7c 100644 --- a/Source/ee/VUShared.cpp +++ b/Source/ee/VUShared.cpp @@ -1807,8 +1807,6 @@ void VUShared::CheckFlagPipeline(const FLAG_PIPEINFO& pipeInfo, CMipsJitter* cod //the flag register every time (pipeTimes[i] <= (pipeTime + relativePipeTime)) for(unsigned int i = 0; i < FLAG_PIPELINE_SLOTS; i++) { - codeGen->PushRelAddrRef(pipeInfo.timeArray); - //Compute index into array codeGen->PushRel(pipeInfo.index); codeGen->PushCst(i); @@ -1816,28 +1814,28 @@ void VUShared::CheckFlagPipeline(const FLAG_PIPEINFO& pipeInfo, CMipsJitter* cod codeGen->PushCst(FLAG_PIPELINE_SLOTS - 1); codeGen->And(); + codeGen->PushRelAddrRef(pipeInfo.timeArray); + codeGen->PushIdx(1); codeGen->LoadFromRefIdx(); codeGen->PushRel(offsetof(CMIPS, m_State.pipeTime)); codeGen->PushCst(relativePipeTime); codeGen->Add(); - codeGen->BeginIf(Jitter::CONDITION_LE); - { - codeGen->PushRelAddrRef(pipeInfo.valueArray); + codeGen->Cmp(Jitter::CONDITION_LE); - //Compute index into array - codeGen->PushRel(pipeInfo.index); - codeGen->PushCst(i); - codeGen->Add(); - codeGen->PushCst(FLAG_PIPELINE_SLOTS - 1); - codeGen->And(); + //True branch + codeGen->PushRelAddrRef(pipeInfo.valueArray); + codeGen->PushIdx(2); + codeGen->LoadFromRefIdx(); - codeGen->LoadFromRefIdx(); + //False branch + codeGen->PushRel(pipeInfo.value); - codeGen->PullRel(pipeInfo.value); - } - codeGen->EndIf(); + codeGen->Select(); + + codeGen->PullRel(pipeInfo.value); + codeGen->PullTop(); } } diff --git a/deps/CodeGen b/deps/CodeGen index 7744fe0c5..ff6055c4c 160000 --- a/deps/CodeGen +++ b/deps/CodeGen @@ -1 +1 @@ -Subproject commit 7744fe0c547cc193d567aa47817a22e24a570390 +Subproject commit ff6055c4c97e15d601e8c26e9b872f195627eeca