mirror of
https://github.com/kanjitalk755/macemu.git
synced 2024-11-27 02:49:42 +00:00
Helper macros to annotate likely branch directions. Colateral effect: this
also fixes build with GCC 4.1 (ppc-dyngen-ops.cpp) since the branches are re-ordered in a way there is now only one exit-point in op_jump_next_A0().
This commit is contained in:
parent
db76383246
commit
b288f6278e
@ -166,6 +166,21 @@ typedef int64 intptr;
|
||||
#error "Unsupported size of pointer"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Helper macros to annotate likely branch directions
|
||||
**/
|
||||
|
||||
#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
||||
#define likely(x) __builtin_expect((x),1)
|
||||
#define unlikely(x) __builtin_expect((x),0)
|
||||
#endif
|
||||
#ifndef likely
|
||||
#define likely(x) (x)
|
||||
#endif
|
||||
#ifndef unlikely
|
||||
#define unlikely(x) (x)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Helper functions to byteswap data
|
||||
**/
|
||||
|
@ -1246,10 +1246,10 @@ void OPPROTO op_dcbz_T0(void)
|
||||
void OPPROTO op_jump_next_A0(void)
|
||||
{
|
||||
// Make sure there is no pending interrupt request
|
||||
if (powerpc_dyngen_helper::spcflags().empty()) {
|
||||
if (likely(powerpc_dyngen_helper::spcflags().empty())) {
|
||||
powerpc_block_info *bi = (powerpc_block_info *)reg_A0;
|
||||
uint32 pc = powerpc_dyngen_helper::get_pc();
|
||||
if (bi->pc == pc || (bi = powerpc_dyngen_helper::find_block(pc)) != NULL)
|
||||
if (likely(bi->pc == pc) || likely((bi = powerpc_dyngen_helper::find_block(pc)) != NULL))
|
||||
goto *(bi->entry_point);
|
||||
}
|
||||
dyngen_barrier();
|
||||
|
Loading…
Reference in New Issue
Block a user