------- Comment #2 from Joey dot ye at intel dot com 2009-01-21 02:40 ------- Following case isn't vecterized with -O3 on x86_64 either, although arrays are aligned: #include <stdio.h>
float __attribute__((aligned(16))) in1[] = { 1.2, 3.5, 1.7, 2.8 }; float __attribute__((aligned(16))) in2[] = { -0.7, 2.6, 3.3, -4.0 }; float __attribute__((aligned(16))) out[4]; void __attribute__((noinline)) mul() { int i; for (i = 0; i < 4; i++) out[i] = in1[i] * in2[i]; } int main(void) { mul(); printf("%f %f %f %f\n", out[0], out[1], out[2], out[3]); return 0; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38899