------- Comment #2 from dorit at il dot ibm dot com 2006-11-09 20:26 ------- > But these files can be succesfully vectorized using current (gcc version 4.3.0 > 20061109) version on i686: > gcc -O2 -msse2 -ftree-vectorize -fdump-tree-vect-all vect-widen-mult-sum.c > vect-widen-mult-sum.c:16: note: LOOP VECTORIZED. > vect-widen-mult-sum.c:12: note: vectorized 1 loops in function.
Probably because the i386 port models the "vect_unpack" and "vect_int_mult" idioms (see target-supports.exp:check_effective_target_vect_widen_mult_hi_to_si()): i.e., instead of recognizing it's a widening multiplication and vectorizing it as such, it's vectorized by first unpacking (widening) the shorts to ints, and then doing int multiplication, which is probably less efficient. Sorry for the unclarity > > The missing insns (that should be merged from autovect-branch and debugged): > > vec_widen_umult_hi_v8hi > > vec_widen_umult_lo_v8hi > These patterns _are_ present in gcc version 4.3.0 20061109 (experimental) in > sse.md. I'm sorry - I meant vec_widen_smult_hi_v8hi and vec_widen_smult_lo_v8hi. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29777