|
|
|
@ -45,14 +45,20 @@
|
|
|
|
|
|
|
|
|
|
// GCC 4.8 defines all the rotate functions now
|
|
|
|
|
// Small issue with GCC's lrotl/lrotr intrinsics is they are still 32bit while we require 64bit
|
|
|
|
|
#ifndef _rotl
|
|
|
|
|
inline u32 _rotl(u32 x, int shift) {
|
|
|
|
|
#ifdef _rotl
|
|
|
|
|
#define rotl _rotl
|
|
|
|
|
#else
|
|
|
|
|
inline u32 rotl(u32 x, int shift) {
|
|
|
|
|
shift &= 31;
|
|
|
|
|
if (!shift) return x;
|
|
|
|
|
return (x << shift) | (x >> (32 - shift));
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
inline u32 _rotr(u32 x, int shift) {
|
|
|
|
|
#ifdef _rotr
|
|
|
|
|
#define rotr _rotr
|
|
|
|
|
#else
|
|
|
|
|
inline u32 rotr(u32 x, int shift) {
|
|
|
|
|
shift &= 31;
|
|
|
|
|
if (!shift) return x;
|
|
|
|
|
return (x >> shift) | (x << (32 - shift));
|
|
|
|
|