| /* |
| * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| #include "pico/bit_ops.h" |
| |
| uint32_t __rev(uint32_t v) { |
| v = ((v & 0x55555555u) << 1u) | ((v >> 1u) & 0x55555555u); |
| v = ((v & 0x33333333u) << 2u) | ((v >> 2u) & 0x33333333u); |
| v = ((v & 0x0f0f0f0fu) << 4u) | ((v >> 4u) & 0x0f0f0f0fu); |
| return (v << 24u) | ((v & 0xff00u) << 8u) | ((v >> 8u) & 0xff00u) | (v >> 24u); |
| } |
| |
| uint64_t __revll(uint64_t v) { |
| v = ((v & 0x5555555555555555u) << 1u) | ((v >> 1u) & 0x5555555555555555u); |
| v = ((v & 0x3333333333333333u) << 2u) | ((v >> 2u) & 0x3333333333333333u); |
| v = ((v & 0x0f0f0f0f0f0f0f0fu) << 4u) | ((v >> 4u) & 0x0f0f0f0f0f0f0f0fu); |
| v = ((v & 0x00ff00ff00ff00ffu) << 8u) | ((v >> 8u) & 0x00ff00ff00ff00ffu); |
| return (v << 48u) | ((v & 0xffff0000u) << 16u) | ((v >> 16u) & 0xffff0000u) | (v >> 48u); |
| } |