Add 64-bit rotates
[people/xl0/gpxe.git] / src / include / gpxe / bitops.h
1 #ifndef _GPXE_BITOPS_H
2 #define _GPXE_BITOPS_H
3
4 /** @file
5  *
6  * Bit operations
7  */
8
9 #include <stdint.h>
10
11 static inline uint32_t rol32 ( uint32_t data, unsigned int rotation ) {
12         return ( ( data << rotation ) | ( data >> ( 32 - rotation ) ) );
13 }
14
15 static inline uint32_t ror32 ( uint32_t data, unsigned int rotation ) {
16         return ( ( data >> rotation ) | ( data << ( 32 - rotation ) ) );
17 }
18
19 static inline uint64_t rol64 ( uint64_t data, unsigned int rotation ) {
20         return ( ( data << rotation ) | ( data >> ( 64 - rotation ) ) );
21 }
22
23 static inline uint64_t ror64 ( uint64_t data, unsigned int rotation ) {
24         return ( ( data >> rotation ) | ( data << ( 64 - rotation ) ) );
25 }
26
27 #endif /* _GPXE_BITOPS_H */