summaryrefslogtreecommitdiff
path: root/src/common/common_funcs.h
diff options
context:
space:
mode:
authorGravatar archshift2015-03-05 22:46:45 -0800
committerGravatar archshift2015-03-05 22:46:45 -0800
commite011acaa84a6c2a60959a4b1ecd7e73e349605f2 (patch)
treebea33469eebc06d4e72b1961f689cbc8b3df076d /src/common/common_funcs.h
parentMerge pull request #615 from Subv/services (diff)
downloadyuzu-e011acaa84a6c2a60959a4b1ecd7e73e349605f2.tar.gz
yuzu-e011acaa84a6c2a60959a4b1ecd7e73e349605f2.tar.xz
yuzu-e011acaa84a6c2a60959a4b1ecd7e73e349605f2.zip
Removed swap code redundancy and moved common swap code to swap.h
Diffstat (limited to 'src/common/common_funcs.h')
-rw-r--r--src/common/common_funcs.h77
1 files changed, 0 insertions, 77 deletions
diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h
index d56156e4a..e76cb7d68 100644
--- a/src/common/common_funcs.h
+++ b/src/common/common_funcs.h
@@ -37,11 +37,6 @@
37#ifndef _MSC_VER 37#ifndef _MSC_VER
38 38
39#include <errno.h> 39#include <errno.h>
40#ifdef __linux__
41#include <byteswap.h>
42#elif defined __FreeBSD__
43#include <sys/endian.h>
44#endif
45 40
46#if defined(__x86_64__) || defined(_M_X64) 41#if defined(__x86_64__) || defined(_M_X64)
47#define Crash() __asm__ __volatile__("int $3") 42#define Crash() __asm__ __volatile__("int $3")
@@ -145,75 +140,3 @@ inline u64 _rotr64(u64 x, unsigned int shift){
145// This function might change the error code. 140// This function might change the error code.
146// Defined in Misc.cpp. 141// Defined in Misc.cpp.
147const char* GetLastErrorMsg(); 142const char* GetLastErrorMsg();
148
149namespace Common
150{
151inline u8 swap8(u8 _data) {return _data;}
152inline u32 swap24(const u8* _data) {return (_data[0] << 16) | (_data[1] << 8) | _data[2];}
153
154#ifdef ANDROID
155#undef swap16
156#undef swap32
157#undef swap64
158#endif
159
160#ifdef _MSC_VER
161inline u16 swap16(u16 _data) {return _byteswap_ushort(_data);}
162inline u32 swap32(u32 _data) {return _byteswap_ulong (_data);}
163inline u64 swap64(u64 _data) {return _byteswap_uint64(_data);}
164#elif _M_ARM
165inline u16 swap16 (u16 _data) { u32 data = _data; __asm__ ("rev16 %0, %1\n" : "=l" (data) : "l" (data)); return (u16)data;}
166inline u32 swap32 (u32 _data) {__asm__ ("rev %0, %1\n" : "=l" (_data) : "l" (_data)); return _data;}
167inline u64 swap64(u64 _data) {return ((u64)swap32(_data) << 32) | swap32(_data >> 32);}
168#elif __linux__
169inline u16 swap16(u16 _data) {return bswap_16(_data);}
170inline u32 swap32(u32 _data) {return bswap_32(_data);}
171inline u64 swap64(u64 _data) {return bswap_64(_data);}
172#elif __APPLE__
173inline __attribute__((always_inline)) u16 swap16(u16 _data)
174 {return (_data >> 8) | (_data << 8);}
175inline __attribute__((always_inline)) u32 swap32(u32 _data)
176 {return __builtin_bswap32(_data);}
177inline __attribute__((always_inline)) u64 swap64(u64 _data)
178 {return __builtin_bswap64(_data);}
179#elif __FreeBSD__
180inline u16 swap16(u16 _data) {return bswap16(_data);}
181inline u32 swap32(u32 _data) {return bswap32(_data);}
182inline u64 swap64(u64 _data) {return bswap64(_data);}
183#else
184// Slow generic implementation.
185inline u16 swap16(u16 data) {return (data >> 8) | (data << 8);}
186inline u32 swap32(u32 data) {return (swap16(data) << 16) | swap16(data >> 16);}
187inline u64 swap64(u64 data) {return ((u64)swap32(data) << 32) | swap32(data >> 32);}
188#endif
189
190inline u16 swap16(const u8* _pData) {return swap16(*(const u16*)_pData);}
191inline u32 swap32(const u8* _pData) {return swap32(*(const u32*)_pData);}
192inline u64 swap64(const u8* _pData) {return swap64(*(const u64*)_pData);}
193
194template <int count>
195void swap(u8*);
196
197template <>
198inline void swap<1>(u8* data)
199{}
200
201template <>
202inline void swap<2>(u8* data)
203{
204 *reinterpret_cast<u16*>(data) = swap16(data);
205}
206
207template <>
208inline void swap<4>(u8* data)
209{
210 *reinterpret_cast<u32*>(data) = swap32(data);
211}
212
213template <>
214inline void swap<8>(u8* data)
215{
216 *reinterpret_cast<u64*>(data) = swap64(data);
217}
218
219} // Namespace Common