… | |
… | |
547 | ecb_inline ecb_const uint32_t ecb_rotr32 (uint32_t x, unsigned int count) { return (x << (32 - count)) | (x >> count); } |
547 | ecb_inline ecb_const uint32_t ecb_rotr32 (uint32_t x, unsigned int count) { return (x << (32 - count)) | (x >> count); } |
548 | ecb_inline ecb_const uint64_t ecb_rotl64 (uint64_t x, unsigned int count) { return (x >> (64 - count)) | (x << count); } |
548 | ecb_inline ecb_const uint64_t ecb_rotl64 (uint64_t x, unsigned int count) { return (x >> (64 - count)) | (x << count); } |
549 | ecb_inline ecb_const uint64_t ecb_rotr64 (uint64_t x, unsigned int count) { return (x << (64 - count)) | (x >> count); } |
549 | ecb_inline ecb_const uint64_t ecb_rotr64 (uint64_t x, unsigned int count) { return (x << (64 - count)) | (x >> count); } |
550 | |
550 | |
551 | #if ECB_GCC_VERSION(4,3) || (ECB_CLANG_BUILTIN(__builtin_bswap32) && ECB_CLANG_BUILTIN(__builtin_bswap64)) |
551 | #if ECB_GCC_VERSION(4,3) || (ECB_CLANG_BUILTIN(__builtin_bswap32) && ECB_CLANG_BUILTIN(__builtin_bswap64)) |
|
|
552 | #if ECB_GCC_VERSION(4,8) || ECB_CLANG_BUILTIN(__builtin_bswap16) |
|
|
553 | #define ecb_bswap16(x) __builtin_bswap16 (x) |
|
|
554 | #else |
552 | #define ecb_bswap16(x) (__builtin_bswap32 (x) >> 16) |
555 | #define ecb_bswap16(x) (__builtin_bswap32 (x) >> 16) |
|
|
556 | #endif |
553 | #define ecb_bswap32(x) __builtin_bswap32 (x) |
557 | #define ecb_bswap32(x) __builtin_bswap32 (x) |
554 | #define ecb_bswap64(x) __builtin_bswap64 (x) |
558 | #define ecb_bswap64(x) __builtin_bswap64 (x) |
|
|
559 | #elif _MSC_VER |
|
|
560 | #include <stdlib.h> |
|
|
561 | #define ecb_bswap16(x) ((uint16_t)_byteswap_ushort ((uint16_t)(x))) |
|
|
562 | #define ecb_bswap32(x) ((uint32_t)_byteswap_ulong ((uint32_t)(x))) |
|
|
563 | #define ecb_bswap64(x) ((uint64_t)_byteswap_uint64 ((uint64_t)(x))) |
555 | #else |
564 | #else |
556 | ecb_function_ ecb_const uint16_t ecb_bswap16 (uint16_t x); |
565 | ecb_function_ ecb_const uint16_t ecb_bswap16 (uint16_t x); |
557 | ecb_function_ ecb_const uint16_t |
566 | ecb_function_ ecb_const uint16_t |
558 | ecb_bswap16 (uint16_t x) |
567 | ecb_bswap16 (uint16_t x) |
559 | { |
568 | { |