https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87743
Bug ID: 87743 Summary: Vectorizer doesn't support conversion of different sizes Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com Target Milestone: --- [hjl@gnu-efi-2 prpr87317]$ cat x.c #define MAX 4 long long int dst[MAX]; int src[MAX]; void foo (void) { int i; for (i = 0; i < MAX; i++) dst[i] = src[i]; } [hjl@gnu-efi-2 prpr87317]$ gcc -S -O3 -march=haswell x.c [hjl@gnu-efi-2 prpr87317]$ cat x.s .file "x.c" .text .p2align 4,,15 .globl foo .type foo, @function foo: .LFB0: .cfi_startproc movslq src(%rip), %rax movslq src+8(%rip), %rcx movslq src+12(%rip), %rdx vmovq %rax, %xmm0 movslq src+4(%rip), %rax vmovq %rcx, %xmm1 vpinsrq $1, %rdx, %xmm1, %xmm1 vpinsrq $1, %rax, %xmm0, %xmm0 vinserti128 $0x1, %xmm1, %ymm0, %ymm0 vmovdqu %ymm0, dst(%rip) vzeroupper ret .cfi_endproc .LFE0: .size foo, .-foo .comm src,16,16 .comm dst,32,32 .ident "GCC: (GNU) 8.2.1 20181011 (Red Hat 8.2.1-4)" .section .note.GNU-stack,"",@progbits [hjl@gnu-efi-2 prpr87317]$