On 16 January 2012 23:57, Peter Alexander <peter.alexander...@gmail.com>wrote:
> On 16/01/12 8:56 PM, Iain Buclaw wrote: > >> On 16 January 2012 19:25, Walter >> Bright<newshound2@digitalmars.**com<newshou...@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! ;)