[Bug tree-optimization/56902] Fails to SLP with mismatched +/- and negatable constants
congh at google dot com
gcc-bugzilla@gcc.gnu.org
Mon Nov 11 18:44:00 GMT 2013
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.
More information about the Gcc-bugs
mailing list