On 16 January 2012 23:57, Peter Alexander <peter.alexander.au@gmail.com> wrote:
On 16/01/12 8:56 PM, Iain Buclaw wrote:
On 16 January 2012 19:25, Walter Bright<newshound2@digitalmars.com>  wrote:
On 1/16/2012 11:16 AM, Iain Buclaw wrote:


But don't worry, I'm not planning on working on that at the moment :-)

Leave that sort of optimisation for the backend to handle please. ;-)


Of course.

I suspect Intel's compiler does that one, does gcc?


There's auto-vectorisation for for(), foreach(), and foreach_reverse()
loops that I have written support for.  I am not aware of GCC
vectorising anything else.

example:

int a[256], b[256], c[256];
void foo () {
  for (int i=0; i<256; i++)
    a[i] = b[i] + c[i];
}


Unfortunately, if the function was this:

void foo(int[] a, int[] b, int[] c) {

 for (int i=0; i<256; i++)
   a[i] = b[i] + c[i];
}

Then it can't vectorize due to aliasing.

This is why D needs a __restrict attribute! ;)