aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/macro/macro_jit_x64.cpp
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2022-10-01 01:32:24 -0400
committerLiam <byteslice@airmail.cc>2022-10-01 01:32:24 -0400
commit52a802abdd61681d5e92165db91ae59bab677a0b (patch)
treefc1699716a45173455ad517c9d606498a7eefc84 /src/video_core/macro/macro_jit_x64.cpp
parent48430f14cbfb3c9881193ddb8e8dd50df023e5c9 (diff)
macro_jit_x64: cancel exit for taken branch
Diffstat (limited to 'src/video_core/macro/macro_jit_x64.cpp')
-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 aca25d902b..30d6186955 100644
--- a/src/video_core/macro/macro_jit_x64.cpp
+++ b/src/video_core/macro/macro_jit_x64.cpp
@@ -429,17 +429,11 @@ void MacroJITx64Impl::Compile_Branch(Macro::Opcode opcode) {
Xbyak::Label handle_post_exit{};
Xbyak::Label skip{};
jmp(skip, T_NEAR);
- if (opcode.is_exit) {
- L(handle_post_exit);
- // Execute 1 instruction
- mov(BRANCH_HOLDER, end_of_code);
- // Jump to next instruction to skip delay slot check
- jmp(labels[jump_address], T_NEAR);
- } else {
- L(handle_post_exit);
- xor_(BRANCH_HOLDER, BRANCH_HOLDER);
- jmp(labels[jump_address], T_NEAR);
- }
+
+ L(handle_post_exit);
+ xor_(BRANCH_HOLDER, BRANCH_HOLDER);
+ jmp(labels[jump_address], T_NEAR);
+
L(skip);
mov(BRANCH_HOLDER, handle_post_exit);
jmp(delay_skip[pc], T_NEAR);