7#ifndef ZEPHYR_INCLUDE_SYS_BIT_REV_H_
8#define ZEPHYR_INCLUDE_SYS_BIT_REV_H_
37#if HAS_BUILTIN(__builtin_bitreverse32)
38 return __builtin_bitreverse32(x);
39#elif defined(CONFIG_ARCH_HAS_BIT_REV)
40 return arch_sys_bit_rev32(x);
42 x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1);
43 x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2);
44 x = ((x >> 4) & 0x0F0F0F0F) | ((x & 0x0F0F0F0F) << 4);
45 x = ((x >> 8) & 0x00FF00FF) | ((x & 0x00FF00FF) << 8);
46 return (x >> 16) | (x << 16);
59#if HAS_BUILTIN(__builtin_bitreverse16)
60 return __builtin_bitreverse16(x);
61#elif defined(CONFIG_ARCH_HAS_BIT_REV)
62 return arch_sys_bit_rev16(x);
64 x = ((x >> 1) & 0x5555) | ((x & 0x5555) << 1);
65 x = ((x >> 2) & 0x3333) | ((x & 0x3333) << 2);
66 x = ((x >> 4) & 0x0F0F) | ((x & 0x0F0F) << 4);
67 return (x >> 8) | (x << 8);
80#if HAS_BUILTIN(__builtin_bitreverse8)
81 return __builtin_bitreverse8(x);
82#elif defined(CONFIG_ARCH_HAS_BIT_REV)
83 return arch_sys_bit_rev8(x);
85 x = ((x >> 1) & 0x55) | ((x & 0x55) << 1);
86 x = ((x >> 2) & 0x33) | ((x & 0x33) << 2);
87 return (x >> 4) | (x << 4);
static uint32_t sys_bit_rev32(uint32_t x)
Reverse the bits in a 32-bit value.
Definition bit_rev.h:35
static uint8_t sys_bit_rev8(uint8_t x)
Reverse the bits in an 8-bit value.
Definition bit_rev.h:78
static uint16_t sys_bit_rev16(uint16_t x)
Reverse the bits in a 16-bit value.
Definition bit_rev.h:57
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89