mirror of
https://github.com/YGGverse/hlsdk-portable.git
synced 2025-01-12 07:58:05 +00:00
Use fast and simple ROTR algorithm implementation.
This commit is contained in:
parent
984986f998
commit
7581cacd6f
@ -1730,25 +1730,10 @@ void CSaveRestoreBuffer::BufferRewind( int size )
|
||||
}
|
||||
|
||||
#if !XASH_WIN32 && !__WATCOMC__
|
||||
extern "C" {
|
||||
unsigned _rotr( unsigned val, int shift )
|
||||
static unsigned _rotr( unsigned val, int shift )
|
||||
{
|
||||
unsigned lobit; /* non-zero means lo bit set */
|
||||
unsigned num = val; /* number to rotate */
|
||||
|
||||
shift &= 0x1f; /* modulo 32 -- this will also make
|
||||
negative shifts work */
|
||||
|
||||
while( shift-- )
|
||||
{
|
||||
lobit = num & 1; /* get high bit */
|
||||
num >>= 1; /* shift right one bit */
|
||||
if( lobit )
|
||||
num |= 0x80000000; /* set hi bit if lo bit was set */
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
// Any modern compiler will generate one single ror instruction for x86, arm and mips here.
|
||||
return ( val >> shift ) | ( val << ( 32 - shift ));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user