mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-13 15:59:23 +01:00
Fix 32bit Linux. GCC's lrotl/lrotr instrinsic functions are 32bit when building for 32bit, we require 64bit at all times, so keep using our own instead.
This commit is contained in:
parent
61c327ba8b
commit
d06379fc59
@ -67,32 +67,30 @@ _mm_shuffle_epi8(__m128i a, __m128i mask)
|
|||||||
#endif
|
#endif
|
||||||
#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0]))
|
#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0]))
|
||||||
// GCC 4.8 defines all the rotate functions now
|
// GCC 4.8 defines all the rotate functions now
|
||||||
#ifdef _rotl
|
// Small issue with GCC's lrotl/lrotr intrinsics is they are still 32bit while we require 64bit
|
||||||
#define _rotl64 _lrotl
|
#ifndef _rotl
|
||||||
#define _rotr64 _lrotr
|
|
||||||
#else
|
|
||||||
inline u32 _rotl(u32 x, int shift) {
|
inline u32 _rotl(u32 x, int shift) {
|
||||||
shift &= 31;
|
shift &= 31;
|
||||||
if (!shift) return x;
|
if (!shift) return x;
|
||||||
return (x << shift) | (x >> (32 - shift));
|
return (x << shift) | (x >> (32 - shift));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline u64 _rotl64(u64 x, unsigned int shift){
|
|
||||||
unsigned int n = shift % 64;
|
|
||||||
return (x << n) | (x >> (64 - n));
|
|
||||||
}
|
|
||||||
|
|
||||||
inline u32 _rotr(u32 x, int shift) {
|
inline u32 _rotr(u32 x, int shift) {
|
||||||
shift &= 31;
|
shift &= 31;
|
||||||
if (!shift) return x;
|
if (!shift) return x;
|
||||||
return (x >> shift) | (x << (32 - shift));
|
return (x >> shift) | (x << (32 - shift));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
inline u64 _rotl64(u64 x, unsigned int shift){
|
||||||
|
unsigned int n = shift % 64;
|
||||||
|
return (x << n) | (x >> (64 - n));
|
||||||
|
}
|
||||||
|
|
||||||
inline u64 _rotr64(u64 x, unsigned int shift){
|
inline u64 _rotr64(u64 x, unsigned int shift){
|
||||||
unsigned int n = shift % 64;
|
unsigned int n = shift % 64;
|
||||||
return (x >> n) | (x << (64 - n));
|
return (x >> n) | (x << (64 - n));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#else // WIN32
|
#else // WIN32
|
||||||
// Function Cross-Compatibility
|
// Function Cross-Compatibility
|
||||||
|
Loading…
x
Reference in New Issue
Block a user