SLP vectorization of reductions is not implemented.
The following example demonstrate the opporunity for such vectorization:
==== cut here ======
struct mystr
{
int f1;
int f2;
};
struct mystr a[16];
struct mystr b[16];
int res1, res2;
void
foo (void)
{
int i;
int sum1;
int sum2;
for (i = 0; i < 16; i++)
{
sum1 += a[i].f1 + b[i].f1;
sum2 += a[i].f2 + b[i].f2;
}
res1 = sum1;
res2 = sum2;
}
==== cut here ======
--
Summary: SLP loop vectorization missing support for reductions
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: enhancement
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: victork at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37027