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]$

Reply via email to