From 5f9e08566fb78f4b68accb0f4d4669cd5077068f Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Wed, 31 Jan 2018 22:49:08 +0200 Subject: [PATCH] Use compiler byte swap intrinsics. --- od-win32/machdep/maccess.h | 44 ++++++-------------------------------- 1 file changed, 7 insertions(+), 37 deletions(-) diff --git a/od-win32/machdep/maccess.h b/od-win32/machdep/maccess.h index 4383f1b3..fc1bc7a9 100644 --- a/od-win32/machdep/maccess.h +++ b/od-win32/machdep/maccess.h @@ -1,5 +1,8 @@ #ifndef __MACCESS_H__ #define __MACCESS_H__ + +#include + /* * UAE - The Un*x Amiga Emulator * @@ -12,57 +15,24 @@ STATIC_INLINE uae_u32 do_get_mem_long(uae_u32 *a) { -#if !defined(X86_MSVC_ASSEMBLY_MEMACCESS) - uae_u8 *b = (uae_u8 *)a; - return (*b << 24) | (*(b+1) << 16) | (*(b+2) << 8) | (*(b+3)); -#else - uae_u32 retval; - __asm - { - mov eax, a - mov ebx, [eax] - bswap ebx - mov retval, ebx - } - return retval; -#endif + return _byteswap_ulong(*a); } STATIC_INLINE uae_u16 do_get_mem_word(uae_u16 *a) { - uae_u8 *b = (uae_u8 *)a; - - return (*b << 8) | (*(b+1)); + return _byteswap_ushort(*a); } #define do_get_mem_byte(a) ((uae_u32)*(uae_u8 *)(a)) STATIC_INLINE void do_put_mem_long(uae_u32 *a, uae_u32 v) { -#if !defined(X86_MSVC_ASSEMBLY_MEMACCESS) - uae_u8 *b = (uae_u8 *)a; - - *b = v >> 24; - *(b+1) = v >> 16; - *(b+2) = v >> 8; - *(b+3) = v; -#else - __asm - { - mov eax, a - mov ebx, v - bswap ebx - mov [eax], ebx - } -#endif + *a = _byteswap_ulong(v); } STATIC_INLINE void do_put_mem_word(uae_u16 *a, uae_u16 v) { - uae_u8 *b = (uae_u8 *)a; - - *b = v >> 8; - *(b+1) = (uae_u8)v; + *a = _byteswap_ushort(v); } STATIC_INLINE void do_put_mem_byte(uae_u8 *a, uae_u8 v) -- 2.47.3