]> glassweightruler.freedombox.rocks Git - Ventoy.git/blob - wimboot/wimboot-2.7.3/src/rotate.h
1.1.07 release
[Ventoy.git] / wimboot / wimboot-2.7.3 / src / rotate.h
1 #ifndef _ROTATE_H
2 #define _ROTATE_H
3
4 /** @file
5 *
6 * Bit operations
7 */
8
9 #include <stdint.h>
10
11 static inline __attribute__ (( always_inline )) uint8_t
12 rol8 ( uint8_t data, unsigned int rotation ) {
13 return ( ( data << rotation ) | ( data >> ( 8 - rotation ) ) );
14 }
15
16 static inline __attribute__ (( always_inline )) uint8_t
17 ror8 ( uint8_t data, unsigned int rotation ) {
18 return ( ( data >> rotation ) | ( data << ( 8 - rotation ) ) );
19 }
20
21 static inline __attribute__ (( always_inline )) uint16_t
22 rol16 ( uint16_t data, unsigned int rotation ) {
23 return ( ( data << rotation ) | ( data >> ( 16 - rotation ) ) );
24 }
25
26 static inline __attribute__ (( always_inline )) uint16_t
27 ror16 ( uint16_t data, unsigned int rotation ) {
28 return ( ( data >> rotation ) | ( data << ( 16 - rotation ) ) );
29 }
30
31 static inline __attribute__ (( always_inline )) uint32_t
32 rol32 ( uint32_t data, unsigned int rotation ) {
33 return ( ( data << rotation ) | ( data >> ( 32 - rotation ) ) );
34 }
35
36 static inline __attribute__ (( always_inline )) uint32_t
37 ror32 ( uint32_t data, unsigned int rotation ) {
38 return ( ( data >> rotation ) | ( data << ( 32 - rotation ) ) );
39 }
40
41 static inline __attribute__ (( always_inline )) uint64_t
42 rol64 ( uint64_t data, unsigned int rotation ) {
43 return ( ( data << rotation ) | ( data >> ( 64 - rotation ) ) );
44 }
45
46 static inline __attribute__ (( always_inline )) uint64_t
47 ror64 ( uint64_t data, unsigned int rotation ) {
48 return ( ( data >> rotation ) | ( data << ( 64 - rotation ) ) );
49 }
50
51 #endif /* _ROTATE_H */