xref: /linux/include/asm-generic/bitops/__bitrev.h (revision 3dc7c001169d112b3e514cacff6c93091c57af9a)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ASM_GENERIC_BITOPS___BITREV_H_
3 #define _ASM_GENERIC_BITOPS___BITREV_H_
4 
5 #include <asm/types.h>
6 
7 extern u8 const byte_rev_table[256];
8 static __always_inline __attribute_const__ u8 generic___bitrev8(u8 byte)
9 {
10 	return byte_rev_table[byte];
11 }
12 
13 static __always_inline __attribute_const__ u16 generic___bitrev16(u16 x)
14 {
15 	return (generic___bitrev8(x & 0xff) << 8) | generic___bitrev8(x >> 8);
16 }
17 
18 static __always_inline __attribute_const__ u32 generic___bitrev32(u32 x)
19 {
20 	return (generic___bitrev16(x & 0xffff) << 16) | generic___bitrev16(x >> 16);
21 }
22 
23 #endif /* _ASM_GENERIC_BITOPS___BITREV_H_ */
24