Work around conservative optimization
kinke
noone at nowhere.com
Sun Jun 3 18:36:12 UTC 2018
On Sunday, 3 June 2018 at 16:51:13 UTC, David Nadlinger wrote:
> On 3 Jun 2018, at 12:54, kinke via digitalmars-d-ldc wrote:
>> [For endian-ness conversion of integers, we have
>> ldc.intrinsics.llvm_bswap().]
>
> At the risk of pointing out the obvious, I usually find it
> vastly preferable to just write the code in a way that's
> independent of the target platform's endianness – like in
> Johan's example – and let the optimizer deal with eliding the
> explicit handling if possible. Even DMD's optimizer can
> recognize those patterns just fine.
No need to reinvent the wheel, the Phobos solution is trivial
enough:
void store32_le(ref ubyte[4] dest, uint val)
{
import std.bitmanip;
dest = nativeToLittleEndian(val);
}
There's no overhead for little-endian machines with `-O`, but a
suboptimal non-inlined druntime call instead of the LLVM
intrinsic directly in the other case.
More information about the digitalmars-d-ldc
mailing list