Any SIMD experts?
Martin Nowak via Digitalmars-d
digitalmars-d at puremagic.com
Mon Dec 8 08:44:36 PST 2014
On Monday, 8 December 2014 at 16:32:50 UTC, Martin Nowak wrote:
> Usually (scalar) I'd use this, which makes use of unsigned wrap
> to safe one conditional
>
> immutable size = cast(ulong)(vhigh - vlow);
> if (cast(ulong)(v0 - vlow) < size) {}
> if (cast(ulong)(v1 - vlow) < size) {}
>
> over
>
> if (v0 >= vlow && v0 < vhigh) {}
>
> Maybe this can be used on SIMD too (saturated sub or so)?
>
> -Martin
This is for the most performance critical instructions during GC
marking.
If we can come up with some good SIMD this will result in a good
speedup.
Yesterday I was surprised to learn that my unsigned wrap trick
actually slowed down some GC benchmarks by 3%. The branch
predictor had more trouble with the single branch because that
resulted in a fifty-fifty chance. There is some correlation
between the 2 branch bounds checks and one of them could be
predicted fairly well, resulting in a better combined result.
Always profile!
More information about the Digitalmars-d
mailing list