https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61338

--- Comment #1 from vincenzo Innocente <vincenzo.innocente at cern dot ch> ---
if I write it "reverse"
void foo2() {
  for (int i=511; i>=0; --i)
    x[1023-i] += y[1023-i]*z[512-i];
}

its ok
__Z4foo2v:
LFB1:
    leaq    2048+_x(%rip), %rdx
    xorl    %eax, %eax
    leaq    4+_z(%rip), %rsi
    leaq    2048+_y(%rip), %rcx
    .align 4,0x90
L6:
    vmovaps    (%rdx,%rax), %ymm1
    vmovups    (%rsi,%rax), %ymm0
    vfmadd132ps    (%rcx,%rax), %ymm1, %ymm0
    vmovaps    %ymm0, (%rdx,%rax)
    addq    $32, %rax
    cmpq    $2048, %rax
    jne    L6
    vzeroupper
    ret

Reply via email to