Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / include / ipxe / rotate.h
1 #ifndef _IPXE_ROTATE_H
2 #define _IPXE_ROTATE_H
3
4 /** @file
5  *
6  * Bit operations
7  */
8
9 FILE_LICENCE ( GPL2_OR_LATER );
10
11 #include <stdint.h>
12
13 static inline __attribute__ (( always_inline )) uint32_t
14 rol32 ( uint32_t data, unsigned int rotation ) {
15         return ( ( data << rotation ) | ( data >> ( 32 - rotation ) ) );
16 }
17
18 static inline __attribute__ (( always_inline )) uint32_t
19 ror32 ( uint32_t data, unsigned int rotation ) {
20         return ( ( data >> rotation ) | ( data << ( 32 - rotation ) ) );
21 }
22
23 static inline __attribute__ (( always_inline )) uint64_t
24 rol64 ( uint64_t data, unsigned int rotation ) {
25         return ( ( data << rotation ) | ( data >> ( 64 - rotation ) ) );
26 }
27
28 static inline __attribute__ (( always_inline )) uint64_t
29 ror64 ( uint64_t data, unsigned int rotation ) {
30         return ( ( data >> rotation ) | ( data << ( 64 - rotation ) ) );
31 }
32
33 #endif /* _IPXE_ROTATE_H */