| 53 | |
| 54 | |
| 55 | uint64_t reverse64(uint64_t in) |
| 56 | { |
| 57 | uint64_t x = in; |
| 58 | x = (((x & 0xAAAAAAAAAAAAAAAA) >> 1) | ((x & 0x5555555555555555) << 1)); |
| 59 | x = (((x & 0xCCCCCCCCCCCCCCCC) >> 2) | ((x & 0x3333333333333333) << 2)); |
| 60 | x = (((x & 0xF0F0F0F0F0F0F0F0) >> 4) | ((x & 0x0F0F0F0F0F0F0F0F) << 4)); |
| 61 | x = (((x & 0xFF00FF00FF00FF00) >> 8) | ((x & 0x00FF00FF00FF00FF) << 8)); |
| 62 | x = (((x & 0xFFFF0000FFFF0000) >> 16) | ((x & 0x0000FFFF0000FFFF) << 16)); |
| 63 | x = (x >> 32) | (x << 32); |
| 64 | return x; |
| 65 | } |
| 66 | |
| 67 | |
| 68 | /////////////////////////////////////////////////////////////////////////////////// |