Boost logo

Boost :

Subject: Re: [boost] [Endian] Performance
From: Adder (adder.thief_at_[hidden])
Date: 2011-09-08 01:25:38


On 9/6/11, Phil Endecott <spam_from_boost_dev_at_[hidden]> wrote:

> Could you post the important bits of your byte_swapper::reverse() to
> the list?

For which compiler ? (-:

16-bit un-optimized version:

    return (x >> 8) | (x << 8);

32-bit un-optimized version (edited for space):

    return
         uint32_t (reverse16 (uint16_t (x >> 16))) |
        (uint32_t (reverse16 (uint16_t (x ))) << 16);

64-bit un-optimized version (edited for space):

    return
         uint64_t (reverse32 (uint32_t (x >> 32))) |
        (uint64_t (reverse32 (uint32_t (x ))) << 32);

GCC 32-bit and 64-bit optimized versions use __builtin_bswap32 and
__builtin_bswap64, with a warning in the documentation pointing to the
http://hardwarebug.org/2010/01/14/beware-the-builtins link that has
just been posted to this list.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk