[Bug tree-optimization/93771] New: SLP produces VEC_PERM when should have used vector generation
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Feb 16 21:31:00 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93771
Bug ID: 93771
Summary: SLP produces VEC_PERM when should have used vector
generation
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: enhancement
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: pinskia at gcc dot gnu.org
Target Milestone: ---
Take:
void f(double *a, double *t, double *d)
{
double t1 = t[0] + d[0];
double t2 = t[3] + d[1];
a[0] = t1;
a[1] = t2;
}
---- CUT ---
This produces:
vect__1.13_14 = MEM <vector(2) double> [(double *)t_6(D)];
vect__1.14_16 = MEM <vector(2) double> [(double *)t_6(D) + 16B];
vect__1.15_17 = VEC_PERM_EXPR <vect__1.13_14, vect__1.14_16, { 0, 3 }>;
vect__2.18_19 = MEM <vector(2) double> [(double *)d_7(D)];
vect_t1_8.19_20 = vect__1.15_17 + vect__2.18_19;
MEM <vector(2) double> [(double *)a_10(D)] = vect_t1_8.19_20;
BUT that VEC_PERM_EXPR is not so good here. we only need to load t[0] and t[1]
and create a vector from those two.
More information about the Gcc-bugs
mailing list