From 679b8bdb5c40ca1909b025db10ddb5a98967c60e Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sun, 20 Dec 2015 14:31:40 +0100 Subject: optimise implementations of {hton,ntoh}{s,l,ll} MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/arpa/inet/htonl.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/arpa/inet/htonl.c') diff --git a/src/arpa/inet/htonl.c b/src/arpa/inet/htonl.c index 7d998d4..8422fdc 100644 --- a/src/arpa/inet/htonl.c +++ b/src/arpa/inet/htonl.c @@ -16,6 +16,8 @@ * along with this program. If not, see . */ #include +#include + /** @@ -31,11 +33,19 @@ */ uint32_t _htonl(uint32_t value) { +#if __INT32_BYTEORDER == 0x01020304 + return value; +#elif __INT32_BYTEORDER == 0x04030201 + return (value >> 24) | ((value & 0xFF0000) >> 8) | ((value & 0x00FF00) << 8) | (value << 24); +#elif __INT32_BYTEORDER == 0x02010403 + return (value & 0xFF00FF00) >> 8) | ((value & 0x00FF00FF) << 8); +#else char rc[4]; rc[0] = (value >> 24) & 255; rc[1] = (value >> 16) & 255; rc[2] = (value >> 8) & 255; rc[3] = (value >> 0) & 255; return *(uint32_t*)rc; +#endif } -- cgit v1.2.3-70-g09d2