Issue 111126
Summary Regression from clang 16: missed vectorization in simple array initialization
Labels clang
Assignees
Reporter ZY546
    reduced code:
https://godbolt.org/z/3MYzE1v7M
```cpp
long arr [20];

void f() {
    for (int i = 0; i < 20; i += 1) 
    {
 arr [i] = 1;
    }
}
```

clang -O3:
```asm
f():
        mov     qword ptr [rip + arr], 1
 mov     qword ptr [rip + arr+8], 1
        mov     qword ptr [rip + arr+16], 1
        mov     qword ptr [rip + arr+24], 1
        mov qword ptr [rip + arr+32], 1
        mov     qword ptr [rip + arr+40], 1
        mov     qword ptr [rip + arr+48], 1
        mov     qword ptr [rip + arr+56], 1
        mov     qword ptr [rip + arr+64], 1
 mov     qword ptr [rip + arr+72], 1
        mov     qword ptr [rip + arr+80], 1
        mov     qword ptr [rip + arr+88], 1
        mov qword ptr [rip + arr+96], 1
        mov     qword ptr [rip + arr+104], 1
        mov     qword ptr [rip + arr+112], 1
        mov     qword ptr [rip + arr+120], 1
        mov     qword ptr [rip + arr+128], 1
 mov     qword ptr [rip + arr+136], 1
        mov     qword ptr [rip + arr+144], 1
        mov     qword ptr [rip + arr+152], 1
 ret
```

expected code (clang 15 or gcc):
```asm
f():
 movaps  xmm0, xmmword ptr [rip + .LCPI0_0]
        movaps  xmmword ptr [rip + arr], xmm0
        movaps  xmmword ptr [rip + arr+16], xmm0
 movaps  xmmword ptr [rip + arr+32], xmm0
        movaps  xmmword ptr [rip + arr+48], xmm0
        movaps  xmmword ptr [rip + arr+64], xmm0
 movaps  xmmword ptr [rip + arr+80], xmm0
        movaps  xmmword ptr [rip + arr+96], xmm0
        movaps  xmmword ptr [rip + arr+112], xmm0
 movaps  xmmword ptr [rip + arr+128], xmm0
        movaps  xmmword ptr [rip + arr+144], xmm0
        ret

```

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to