forked from eden-emu/eden
		
	add missing bswap functions
This commit is contained in:
		
							parent
							
								
									535947a0e1
								
							
						
					
					
						commit
						81cb80997a
					
				
					 1 changed files with 44 additions and 0 deletions
				
			
		|  | @ -159,4 +159,48 @@ enum EMUSTATE_CHANGE | ||||||
|     EMUSTATE_CHANGE_STOP |     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_
 | #endif // _COMMON_H_
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 bunnei
						bunnei