[...@gnu-6 gcc]$ cat z.c #define N 16 float b[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; float a[N];
void test (void) { int i; for (i = 0; i < N/2; i++) a[i] = b[2*i+1] * c[2*i+1]; } [...@gnu-6 gcc]$ ./xgcc -B./ -O2 -ftree-vectorize -mavx -S z.c [...@gnu-6 gcc]$ cat z.s .file "z.c" .text .p2align 4,,15 .globl test .type test, @function test: .LFB0: .cfi_startproc vxorps %xmm0, %xmm0, %xmm0 pushq %rbp .cfi_def_cfa_offset 16 movq %rsp, %rbp .cfi_offset 6, -16 .cfi_def_cfa_register 6 vmovaps %ymm0, a(%rip) leave .cfi_def_cfa 7, 8 ret .cfi_endproc The probem is "vec_extract_evenv8sf" and "vec_extract_oddv8sf" call expand_vec_perm_even_odd_1 which calls expand_vselect and expand_vec_perm_vpermil without checking return values. For V4SF, those functions return false. -- Summary: [vect256] Wrong Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hjl dot tools at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44180