Merge pull request #9005 from liamwhite/micro-fit
macro_jit_x64: cancel exit for taken branch
This commit is contained in:
		| @@ -401,17 +401,11 @@ void MacroJITx64Impl::Compile_Branch(Macro::Opcode opcode) { | |||||||
|             Xbyak::Label handle_post_exit{}; |             Xbyak::Label handle_post_exit{}; | ||||||
|             Xbyak::Label skip{}; |             Xbyak::Label skip{}; | ||||||
|             jmp(skip, T_NEAR); |             jmp(skip, T_NEAR); | ||||||
|             if (opcode.is_exit) { |  | ||||||
|                 L(handle_post_exit); |             L(handle_post_exit); | ||||||
|                 // Execute 1 instruction |             xor_(BRANCH_HOLDER, BRANCH_HOLDER); | ||||||
|                 mov(BRANCH_HOLDER, end_of_code); |             jmp(labels[jump_address], T_NEAR); | ||||||
|                 // 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(skip); |             L(skip); | ||||||
|             mov(BRANCH_HOLDER, handle_post_exit); |             mov(BRANCH_HOLDER, handle_post_exit); | ||||||
|             jmp(delay_skip[pc], T_NEAR); |             jmp(delay_skip[pc], T_NEAR); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user