------- Comment #4 from jb at gcc dot gnu dot org 2005-11-11 21:55 ------- Seems like libgfortran vectorizes much better now. Compiling with "-ftree-vectorize -ftree-vectorizer-verbose=5 -msse2" added to CFLAGS (I didn't try with FCFLAGS) and grepping the output for LOOP VECTORIZED shows
../../../trunk/libgfortran/generated/maxloc0_4_i4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_8_i4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_4_i8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_8_i8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_4_r4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_8_r4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_4_r8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_8_r8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_4_r10.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_8_r10.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_4_i4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_8_i4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_4_i8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_8_i8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_4_r4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_8_r4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_4_r8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_8_r8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_4_r10.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_8_r10.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxval_i4.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxval_i8.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxval_r4.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxval_r8.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxval_r10.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_4_i4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_8_i4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_4_i8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_8_i8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_4_r4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_8_r4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_4_r8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_8_r8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_4_r10.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_8_r10.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_4_i4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_8_i4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_4_i8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_8_i8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_4_r4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_8_r4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_4_r8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_8_r8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_4_r10.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_8_r10.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minval_i4.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minval_i8.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minval_r4.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minval_r8.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minval_r10.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_i4.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_i8.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_r4.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_r8.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_r10.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_c4.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_c8.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_c10.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/sum_i4.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/sum_i8.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/sum_r4.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/sum_r8.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/sum_r10.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/sum_c4.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/sum_c8.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/sum_c10.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/matmul_i4.c:188: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/matmul_i8.c:188: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/matmul_r4.c:188: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/matmul_r8.c:188: note: LOOP VECTORIZED. ../../../trunk/libgfortran/io/write.c:763: note: LOOP VECTORIZED. ../../../trunk/libgfortran/intrinsics/date_and_time.c:235: note: LOOP VECTORIZED. ../../../trunk/libgfortran/intrinsics/pack_generic.c:121: note: LOOP VECTORIZED. ../../../trunk/libgfortran/intrinsics/unpack_generic.c:120: note: LOOP VECTORIZED. Unfortunalety the vectorized loop for matmul is not the main loop, rather a small auxiliary one. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468