On Monday, 8 December 2014 at 22:10:09 UTC, Martin Nowak wrote:
On 12/08/2014 06:05 PM, John Colvin wrote:
Well gcc gives me:

Tried that with dmd, it gave me.

bug.d(5): Error: incompatible types for ((a) >= (l)): '__vector(ulong[4])' and '__vector(ulong[4])' bug.d(5): Error: incompatible types for ((a) < (h)): '__vector(ulong[4])' and '__vector(ulong[4])'

Yours looks better.

It's unfortunate it can't work it out automatically like gcc can.

Anyway, you can write it out manually:

auto foo(ulong2 a, ulong2 l, ulong h)
{
    static long2 shift = long.min; //-2^63
    long2 aS = cast(long2)(a - shift);
    long2 lS = cast(long2)(l - shift);
    long2 hS = cast(long2)(h - shift);
    return (hS > aS) & (lS > aS);
}

but that doesn't actually compile, the compiler just sits in semantic3 forever (see https://issues.dlang.org/show_bug.cgi?id=13841)

Reply via email to