diff options
| author | 2015-03-05 22:46:45 -0800 | |
|---|---|---|
| committer | 2015-03-05 22:46:45 -0800 | |
| commit | e011acaa84a6c2a60959a4b1ecd7e73e349605f2 (patch) | |
| tree | bea33469eebc06d4e72b1961f689cbc8b3df076d /src/common/common_funcs.h | |
| parent | Merge pull request #615 from Subv/services (diff) | |
| download | yuzu-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.h | 77 |
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. |
| 147 | const char* GetLastErrorMsg(); | 142 | const char* GetLastErrorMsg(); |
| 148 | |||
| 149 | namespace Common | ||
| 150 | { | ||
| 151 | inline u8 swap8(u8 _data) {return _data;} | ||
| 152 | inline 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 | ||
| 161 | inline u16 swap16(u16 _data) {return _byteswap_ushort(_data);} | ||
| 162 | inline u32 swap32(u32 _data) {return _byteswap_ulong (_data);} | ||
| 163 | inline u64 swap64(u64 _data) {return _byteswap_uint64(_data);} | ||
| 164 | #elif _M_ARM | ||
| 165 | inline u16 swap16 (u16 _data) { u32 data = _data; __asm__ ("rev16 %0, %1\n" : "=l" (data) : "l" (data)); return (u16)data;} | ||
| 166 | inline u32 swap32 (u32 _data) {__asm__ ("rev %0, %1\n" : "=l" (_data) : "l" (_data)); return _data;} | ||
| 167 | inline u64 swap64(u64 _data) {return ((u64)swap32(_data) << 32) | swap32(_data >> 32);} | ||
| 168 | #elif __linux__ | ||
| 169 | inline u16 swap16(u16 _data) {return bswap_16(_data);} | ||
| 170 | inline u32 swap32(u32 _data) {return bswap_32(_data);} | ||
| 171 | inline u64 swap64(u64 _data) {return bswap_64(_data);} | ||
| 172 | #elif __APPLE__ | ||
| 173 | inline __attribute__((always_inline)) u16 swap16(u16 _data) | ||
| 174 | {return (_data >> 8) | (_data << 8);} | ||
| 175 | inline __attribute__((always_inline)) u32 swap32(u32 _data) | ||
| 176 | {return __builtin_bswap32(_data);} | ||
| 177 | inline __attribute__((always_inline)) u64 swap64(u64 _data) | ||
| 178 | {return __builtin_bswap64(_data);} | ||
| 179 | #elif __FreeBSD__ | ||
| 180 | inline u16 swap16(u16 _data) {return bswap16(_data);} | ||
| 181 | inline u32 swap32(u32 _data) {return bswap32(_data);} | ||
| 182 | inline u64 swap64(u64 _data) {return bswap64(_data);} | ||
| 183 | #else | ||
| 184 | // Slow generic implementation. | ||
| 185 | inline u16 swap16(u16 data) {return (data >> 8) | (data << 8);} | ||
| 186 | inline u32 swap32(u32 data) {return (swap16(data) << 16) | swap16(data >> 16);} | ||
| 187 | inline u64 swap64(u64 data) {return ((u64)swap32(data) << 32) | swap32(data >> 32);} | ||
| 188 | #endif | ||
| 189 | |||
| 190 | inline u16 swap16(const u8* _pData) {return swap16(*(const u16*)_pData);} | ||
| 191 | inline u32 swap32(const u8* _pData) {return swap32(*(const u32*)_pData);} | ||
| 192 | inline u64 swap64(const u8* _pData) {return swap64(*(const u64*)_pData);} | ||
| 193 | |||
| 194 | template <int count> | ||
| 195 | void swap(u8*); | ||
| 196 | |||
| 197 | template <> | ||
| 198 | inline void swap<1>(u8* data) | ||
| 199 | {} | ||
| 200 | |||
| 201 | template <> | ||
| 202 | inline void swap<2>(u8* data) | ||
| 203 | { | ||
| 204 | *reinterpret_cast<u16*>(data) = swap16(data); | ||
| 205 | } | ||
| 206 | |||
| 207 | template <> | ||
| 208 | inline void swap<4>(u8* data) | ||
| 209 | { | ||
| 210 | *reinterpret_cast<u32*>(data) = swap32(data); | ||
| 211 | } | ||
| 212 | |||
| 213 | template <> | ||
| 214 | inline void swap<8>(u8* data) | ||
| 215 | { | ||
| 216 | *reinterpret_cast<u64*>(data) = swap64(data); | ||
| 217 | } | ||
| 218 | |||
| 219 | } // Namespace Common | ||