summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2022-10-04 20:08:02 -0700
committerGravatar GitHub2022-10-04 20:08:02 -0700
commitfc0ace6048a12ba15b873ad9d633ed7cfa11f070 (patch)
tree0a4b917eedca70acd990287e1220e521fcbc8b4d /src
parentMerge pull request #9010 from liamwhite/buttwise (diff)
parentmacro_jit_x64: cancel exit for taken branch (diff)
downloadyuzu-fc0ace6048a12ba15b873ad9d633ed7cfa11f070.tar.gz
yuzu-fc0ace6048a12ba15b873ad9d633ed7cfa11f070.tar.xz
yuzu-fc0ace6048a12ba15b873ad9d633ed7cfa11f070.zip
Merge pull request #9005 from liamwhite/micro-fit
macro_jit_x64: cancel exit for taken branch
Diffstat (limited to 'src')
-rw-r--r--src/video_core/macro/macro_jit_x64.cpp16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/video_core/macro/macro_jit_x64.cpp b/src/video_core/macro/macro_jit_x64.cpp
index 3b55228b9..a302a9603 100644
--- a/src/video_core/macro/macro_jit_x64.cpp
+++ b/src/video_core/macro/macro_jit_x64.cpp
@@ -401,17 +401,11 @@ void MacroJITx64Impl::Compile_Branch(Macro::Opcode opcode) {
401 Xbyak::Label handle_post_exit{}; 401 Xbyak::Label handle_post_exit{};
402 Xbyak::Label skip{}; 402 Xbyak::Label skip{};
403 jmp(skip, T_NEAR); 403 jmp(skip, T_NEAR);
404 if (opcode.is_exit) { 404
405 L(handle_post_exit); 405 L(handle_post_exit);
406 // Execute 1 instruction 406 xor_(BRANCH_HOLDER, BRANCH_HOLDER);
407 mov(BRANCH_HOLDER, end_of_code); 407 jmp(labels[jump_address], T_NEAR);
408 // Jump to next instruction to skip delay slot check 408
409 jmp(labels[jump_address], T_NEAR);
410 } else {
411 L(handle_post_exit);
412 xor_(BRANCH_HOLDER, BRANCH_HOLDER);
413 jmp(labels[jump_address], T_NEAR);
414 }
415 L(skip); 409 L(skip);
416 mov(BRANCH_HOLDER, handle_post_exit); 410 mov(BRANCH_HOLDER, handle_post_exit);
417 jmp(delay_skip[pc], T_NEAR); 411 jmp(delay_skip[pc], T_NEAR);