https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119234
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |INVALID
Status|UNCONFIRMED |RESOLVED
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
OK, so the sources have
__attribute__((altivec(vector__))) float *va0, *va1, *va2, *va3, *va4,
*va5,
*va6, *va7, *v_x;
...
va0 = (__attribute__((altivec(vector__))) float*) a0;
va1 = (__attribute__((altivec(vector__))) float*) a1;
va2 = (__attribute__((altivec(vector__))) float*) a2;
va3 = (__attribute__((altivec(vector__))) float*) a3;
va4 = (__attribute__((altivec(vector__))) float*) a4;
va5 = (__attribute__((altivec(vector__))) float*) a5;
va6 = (__attribute__((altivec(vector__))) float*) a6;
va7 = (__attribute__((altivec(vector__))) float*) a7;
v_x = (__attribute__((altivec(vector__))) float*) x;
for (i = 0; i < n/4; i ++) {
temp0 += v_x[i] * va0[i];
temp1 += v_x[i] * va1[i];
temp2 += v_x[i] * va2[i];
temp3 += v_x[i] * va3[i];
temp4 += v_x[i] * va4[i];
temp5 += v_x[i] * va5[i];
temp6 += v_x[i] * va6[i];
temp7 += v_x[i] * va7[i];
}
so GCC rightfully assumes that va?[i] and v_x[i] are aligned.
The standard blas sgem kernels impose no such restrictions on the data
arguments, so sgemv_t_POWER8 should, but I don't see any such thing.
-> blas bug.