mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 14:21:25 +02:00
MINOR: tools: add 64-bit rotate operators
This adds rotl64/rotr64 to rotate a 64-bit word by an arbitrary number of bits. It's mainly aimed at being used with constants.
This commit is contained in:
parent
f726e03bb8
commit
7a40909c00
@ -66,6 +66,26 @@
|
|||||||
* power of 2, and 0 otherwise */
|
* power of 2, and 0 otherwise */
|
||||||
#define POWEROF2(x) (((x) & ((x)-1)) == 0)
|
#define POWEROF2(x) (((x) & ((x)-1)) == 0)
|
||||||
|
|
||||||
|
/* rotate left a 64-bit integer by <bits:[0-5]> bits */
|
||||||
|
static inline uint64_t rotl64(uint64_t v, uint8_t bits)
|
||||||
|
{
|
||||||
|
#if !defined(__ARM_ARCH_8A) && !defined(__x86_64__)
|
||||||
|
bits &= 63;
|
||||||
|
#endif
|
||||||
|
v = (v << bits) | (v >> (-bits & 63));
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* rotate right a 64-bit integer by <bits:[0-5]> bits */
|
||||||
|
static inline uint64_t rotr64(uint64_t v, uint8_t bits)
|
||||||
|
{
|
||||||
|
#if !defined(__ARM_ARCH_8A) && !defined(__x86_64__)
|
||||||
|
bits &= 63;
|
||||||
|
#endif
|
||||||
|
v = (v >> bits) | (v << (-bits & 63));
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
/* DEFNULL() returns either the argument as-is, or NULL if absent. This is for
|
/* DEFNULL() returns either the argument as-is, or NULL if absent. This is for
|
||||||
* use in macros arguments.
|
* use in macros arguments.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user