… | |
… | |
608 | ecb_inline ecb_const uint32_t ecb_rotl32 (uint32_t x, unsigned int count) { return (x >> (32 - count)) | (x << count); } |
608 | ecb_inline ecb_const uint32_t ecb_rotl32 (uint32_t x, unsigned int count) { return (x >> (32 - count)) | (x << count); } |
609 | ecb_inline ecb_const uint32_t ecb_rotr32 (uint32_t x, unsigned int count) { return (x << (32 - count)) | (x >> count); } |
609 | ecb_inline ecb_const uint32_t ecb_rotr32 (uint32_t x, unsigned int count) { return (x << (32 - count)) | (x >> count); } |
610 | ecb_inline ecb_const uint64_t ecb_rotl64 (uint64_t x, unsigned int count) { return (x >> (64 - count)) | (x << count); } |
610 | ecb_inline ecb_const uint64_t ecb_rotl64 (uint64_t x, unsigned int count) { return (x >> (64 - count)) | (x << count); } |
611 | ecb_inline ecb_const uint64_t ecb_rotr64 (uint64_t x, unsigned int count) { return (x << (64 - count)) | (x >> count); } |
611 | ecb_inline ecb_const uint64_t ecb_rotr64 (uint64_t x, unsigned int count) { return (x << (64 - count)) | (x >> count); } |
612 | |
612 | |
|
|
613 | #if ECB_CPP |
|
|
614 | |
|
|
615 | inline uint8_t ecb_ctz (uint8_t v) { return ecb_ctz32 (v); } |
|
|
616 | inline uint16_t ecb_ctz (uint16_t v) { return ecb_ctz32 (v); } |
|
|
617 | inline uint32_t ecb_ctz (uint32_t v) { return ecb_ctz32 (v); } |
|
|
618 | inline uint64_t ecb_ctz (uint64_t v) { return ecb_ctz64 (v); } |
|
|
619 | |
|
|
620 | inline bool ecb_is_pot (uint8_t v) { return ecb_is_pot32 (v); } |
|
|
621 | inline bool ecb_is_pot (uint16_t v) { return ecb_is_pot32 (v); } |
|
|
622 | inline bool ecb_is_pot (uint32_t v) { return ecb_is_pot32 (v); } |
|
|
623 | inline bool ecb_is_pot (uint64_t v) { return ecb_is_pot64 (v); } |
|
|
624 | |
|
|
625 | inline int ecb_ld (uint8_t v) { return ecb_ld32 (v); } |
|
|
626 | inline int ecb_ld (uint16_t v) { return ecb_ld32 (v); } |
|
|
627 | inline int ecb_ld (uint32_t v) { return ecb_ld32 (v); } |
|
|
628 | inline int ecb_ld (uint64_t v) { return ecb_ld64 (v); } |
|
|
629 | |
|
|
630 | inline int ecb_popcount (uint8_t v) { return ecb_popcount32 (v); } |
|
|
631 | inline int ecb_popcount (uint16_t v) { return ecb_popcount32 (v); } |
|
|
632 | inline int ecb_popcount (uint32_t v) { return ecb_popcount32 (v); } |
|
|
633 | inline int ecb_popcount (uint64_t v) { return ecb_popcount64 (v); } |
|
|
634 | |
|
|
635 | inline uint8_t ecb_bitrev (uint8_t v) { return ecb_bitrev8 (v); } |
|
|
636 | inline uint16_t ecb_bitrev (uint16_t v) { return ecb_bitrev16 (v); } |
|
|
637 | inline uint32_t ecb_bitrev (uint32_t v) { return ecb_bitrev32 (v); } |
|
|
638 | |
|
|
639 | inline uint8_t ecb_rotl (uint8_t v) { return ecb_rotl8 (v); } |
|
|
640 | inline uint16_t ecb_rotl (uint16_t v) { return ecb_rotl16 (v); } |
|
|
641 | inline uint32_t ecb_rotl (uint32_t v) { return ecb_rotl32 (v); } |
|
|
642 | inline uint64_t ecb_rotl (uint64_t v) { return ecb_rotl64 (v); } |
|
|
643 | |
|
|
644 | inline uint8_t ecb_rotr (uint8_t v) { return ecb_rotr8 (v); } |
|
|
645 | inline uint16_t ecb_rotr (uint16_t v) { return ecb_rotr16 (v); } |
|
|
646 | inline uint32_t ecb_rotr (uint32_t v) { return ecb_rotr32 (v); } |
|
|
647 | inline uint64_t ecb_rotr (uint64_t v) { return ecb_rotr64 (v); } |
|
|
648 | |
|
|
649 | #endif |
|
|
650 | |
613 | #if ECB_GCC_VERSION(4,3) || (ECB_CLANG_BUILTIN(__builtin_bswap32) && ECB_CLANG_BUILTIN(__builtin_bswap64)) |
651 | #if ECB_GCC_VERSION(4,3) || (ECB_CLANG_BUILTIN(__builtin_bswap32) && ECB_CLANG_BUILTIN(__builtin_bswap64)) |
614 | #if ECB_GCC_VERSION(4,8) || ECB_CLANG_BUILTIN(__builtin_bswap16) |
652 | #if ECB_GCC_VERSION(4,8) || ECB_CLANG_BUILTIN(__builtin_bswap16) |
615 | #define ecb_bswap16(x) __builtin_bswap16 (x) |
653 | #define ecb_bswap16(x) __builtin_bswap16 (x) |
616 | #else |
654 | #else |
617 | #define ecb_bswap16(x) (__builtin_bswap32 (x) >> 16) |
655 | #define ecb_bswap16(x) (__builtin_bswap32 (x) >> 16) |