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

            Bug ID: 92611
           Summary: auto vectorization failed for type promotation
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: crazylht at gmail dot com
  Target Milestone: ---
            Target: i386, x86-64

Cat test.c

void foo(int *__restrict dst, char *__restrict src)
{
        for(int x = 0; x < 4; x++ )
            dst[x] = src[x];
}

Clang generate

---------------
        vpmovsxbd       (%rsi), %xmm0
        vmovdqu %xmm0, (%rdi)
        retq
---------------

while GCC generate

----------------
        movsbl  (%rsi), %eax
        movl    %eax, (%rdi)
        movsbl  1(%rsi), %eax
        movl    %eax, 4(%rdi)
        movsbl  2(%rsi), %eax
        movl    %eax, 8(%rdi)
        movsbl  3(%rsi), %eax
        movl    %eax, 12(%rdi)
        ret
---------------


Refer to https://godbolt.org/z/ckmXm_

Reply via email to