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.

Reply via email to