Release D 2.077.0

Walter Bright newshound2 at digitalmars.com
Fri Nov 3 19:46:58 UTC 2017


On 11/3/2017 3:02 AM, Mike Parker wrote:
> For clarity, where the changeling says that GDC & LDC use auto-vectorization, 
> that's actually happening with the array operations and core.simd is not 
> required, correct?

I think that GDC and LDC do do auto-vectorization, but I haven't verified it myself.

Auto-vectorization is a fundamentally bizarre feature. It takes low level code 
and reverse-engineers it back into a higher level construct, and then proceeds 
to generate code for that higher level construct.

Everything else a compiler does is start from a high level construct and then 
generate low level code.

The trouble with AV is whether it succeeds or not depends on peculiarities (and 
I mean peculiarities) of the particular vector instruction set target. It can 
decided to not vectorize based on seemingly trivial and innocuous changes to the 
loop. The only way to tell is to benchmark it or look at the object file - 
methods that are unreliable (benchmarking) or do not scale (manually looking at 
the object file).

What's needed is a language feature that is straightforwardly vectorizable. That 
would be D's array operations.


More information about the Digitalmars-d-announce mailing list