… | |
… | |
289 | |
289 | |
290 | return r + ecb_ld32 (x); |
290 | return r + ecb_ld32 (x); |
291 | } |
291 | } |
292 | #endif |
292 | #endif |
293 | |
293 | |
|
|
294 | ecb_function_ uint8_t ecb_bitrev8 (uint8_t x) ecb_const; |
294 | ecb_function_ uint8_t ecb_bitrev8 (uint8_t x) |
295 | ecb_function_ uint8_t ecb_bitrev8 (uint8_t x) |
295 | { |
296 | { |
296 | return ( (x * 0x0802U & 0x22110U) |
297 | return ( (x * 0x0802U & 0x22110U) |
297 | | (x * 0x8020U & 0x88440U)) * 0x10101U >> 16; |
298 | | (x * 0x8020U & 0x88440U)) * 0x10101U >> 16; |
298 | } |
299 | } |
299 | |
300 | |
|
|
301 | ecb_function_ uint16_t ecb_bitrev16 (uint16_t x) ecb_const; |
300 | ecb_function_ uint16_t ecb_bitrev16 (uint16_t x) |
302 | ecb_function_ uint16_t ecb_bitrev16 (uint16_t x) |
301 | { |
303 | { |
302 | x = ((x >> 1) & 0x5555) | ((x & 0x5555) << 1); |
304 | x = ((x >> 1) & 0x5555) | ((x & 0x5555) << 1); |
303 | x = ((x >> 2) & 0x3333) | ((x & 0x3333) << 2); |
305 | x = ((x >> 2) & 0x3333) | ((x & 0x3333) << 2); |
304 | x = ((x >> 4) & 0x0f0f) | ((x & 0x0f0f) << 4); |
306 | x = ((x >> 4) & 0x0f0f) | ((x & 0x0f0f) << 4); |
305 | x = ( x >> 8 ) | ( x << 8); |
307 | x = ( x >> 8 ) | ( x << 8); |
306 | |
308 | |
307 | return x; |
309 | return x; |
308 | } |
310 | } |
309 | |
311 | |
|
|
312 | ecb_function_ uint32_t ecb_bitrev32 (uint32_t x) ecb_const; |
310 | ecb_function_ uint32_t ecb_bitrev32 (uint32_t x) |
313 | ecb_function_ uint32_t ecb_bitrev32 (uint32_t x) |
311 | { |
314 | { |
312 | x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1); |
315 | x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1); |
313 | x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2); |
316 | x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2); |
314 | x = ((x >> 4) & 0x0f0f0f0f) | ((x & 0x0f0f0f0f) << 4); |
317 | x = ((x >> 4) & 0x0f0f0f0f) | ((x & 0x0f0f0f0f) << 4); |