On Mon, Nov 11, 2013 at 2:48 PM, Hendrik Greving <hendrik.greving.in...@gmail.com> wrote: > Ok, thanks, that explains it... Apparently x86 splits the vector movs > into 2 in > ix86_expand_vector_move_misalign->ix86_avx256_split_vector_move_misalign. > But I wanted to mention that e.g. icc, despite also putting g_a, g_b, > g_c into .comm, actually generates AVX2 vmovdqu using ymm... > > Examples: > > foo.c: > > #include <stdio.h> > #include <stdint.h> > #include "foo.h" > > int g_a[LENGTH]; > int g_b[LENGTH]; > int g_c[LENGTH]; > void > foo() > { > int i ; > for (i = 0; i < LENGTH; i++) { > g_c[i] = g_a[i] + g_b[i]; > } > } > > icc: > icc/13.1.3/bin/icc -S -O3 -march=core-avx2 foo.c -v -save-temps -vec-report=2 > > gcc: > gcc -S -O3 -march=core-avx2 foo.c -ftree-vectorizer-verbose=1 -dp -v -da > >
Please open a bug. We will fix it. Thanks. -- H.J.