|
|
|
@ -159,4 +159,48 @@ enum EMUSTATE_CHANGE |
|
|
|
EMUSTATE_CHANGE_STOP |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
#ifdef _MSC_VER |
|
|
|
#ifndef _XBOX |
|
|
|
inline unsigned long long bswap64(unsigned long long x) { return _byteswap_uint64(x); } |
|
|
|
inline unsigned int bswap32(unsigned int x) { return _byteswap_ulong(x); } |
|
|
|
inline unsigned short bswap16(unsigned short x) { return _byteswap_ushort(x); } |
|
|
|
#else |
|
|
|
inline unsigned long long bswap64(unsigned long long x) { return __loaddoublewordbytereverse(0, &x); } |
|
|
|
inline unsigned int bswap32(unsigned int x) { return __loadwordbytereverse(0, &x); } |
|
|
|
inline unsigned short bswap16(unsigned short x) { return __loadshortbytereverse(0, &x); } |
|
|
|
#endif |
|
|
|
#else |
|
|
|
// TODO: speedup |
|
|
|
inline unsigned short bswap16(unsigned short x) { return (x << 8) | (x >> 8); } |
|
|
|
inline unsigned int bswap32(unsigned int x) { return (x >> 24) | ((x & 0xFF0000) >> 8) | ((x & 0xFF00) << 8) | (x << 24);} |
|
|
|
inline unsigned long long bswap64(unsigned long long x) {return ((unsigned long long)bswap32(x) << 32) | bswap32(x >> 32); } |
|
|
|
#endif |
|
|
|
|
|
|
|
inline float bswapf(float f) { |
|
|
|
union { |
|
|
|
float f; |
|
|
|
unsigned int u32; |
|
|
|
} dat1, dat2; |
|
|
|
|
|
|
|
dat1.f = f; |
|
|
|
dat2.u32 = bswap32(dat1.u32); |
|
|
|
|
|
|
|
return dat2.f; |
|
|
|
} |
|
|
|
|
|
|
|
inline double bswapd(double f) { |
|
|
|
union { |
|
|
|
double f; |
|
|
|
unsigned long long u64; |
|
|
|
} dat1, dat2; |
|
|
|
|
|
|
|
dat1.f = f; |
|
|
|
dat2.u64 = bswap64(dat1.u64); |
|
|
|
|
|
|
|
return dat2.f; |
|
|
|
} |
|
|
|
|
|
|
|
#include "swap.h" |
|
|
|
|
|
|
|
#endif // _COMMON_H_ |