http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56902
Cong Hou <congh at google dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |congh at google dot com --- Comment #1 from Cong Hou <congh at google dot com> --- I just made a patch which supports limited non-isomorphic operations (operations on even/odd elements are still isomorphic) for SLP. Then the three loops you listed can be vectorized using SLP by using new VEC_ADDSUB_EXPR or VEC_SUBADD_EXPR. For x86, SSE3 provides ADDSUBPD/ADDSUBPS instructions which can do the job, but I also emulated them for SSE (use mask to negate the even/odd elements and then add). I think we will need to support more general non-isomorphic operations, which is more difficult and challenging. But I think the limited support in this patch is also useful at this time. I will send the patch later.