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

            Bug ID: 87537
           Summary: Redundant vmovaps
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
  Target Milestone: ---
            Target: i386,x86-64

[hjl@gnu-skx-1 gcc]$ cat
/export/gnu/import/git/sources/gcc/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-1.c
/* { dg-do compile } */
/* { dg-options "-mavx2 -O2" } */
/* { dg-final { scan-assembler "vbroadcastss\[ \\t\]+\[^\n\]*%xmm\[0-9\]" } }
*/

#include <immintrin.h>

__m128 x;
__m256 y;

void extern
avx2_test (void)
{
  y = _mm256_broadcastss_ps (x);
}
[hjl@gnu-skx-1 gcc]$ ./xgcc -B./ -S
/export/gnu/import/git/sources/gcc/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-1.c
-mavx2 -O2
cat[hjl@gnu-skx-1 gcc]$ cat avx2-vbroadcastss_ps256-1.s 
        .file   "avx2-vbroadcastss_ps256-1.c"
        .text
        .p2align 4
        .globl  avx2_test
        .type   avx2_test, @function
avx2_test:
.LFB5178:
        .cfi_startproc
        vmovaps x(%rip), %xmm1
        vbroadcastss    %xmm1, %ymm0
        vmovaps %ymm0, y(%rip)
        vzeroupper
        ret
        .cfi_endproc
.LFE5178:
        .size   avx2_test, .-avx2_test
        .comm   y,32,32
        .comm   x,16,16
        .ident  "GCC: (GNU) 9.0.0 20180901 (experimental)"
        .section        .note.GNU-stack,"",@progbits
[hjl@gnu-skx-1 gcc]$ 

We should generate

[hjl@gnu-cfl-1 gcc]$ cat avx2-vbroadcastss_ps256-1.s
        .file   "avx2-vbroadcastss_ps256-1.c"
        .text
        .p2align 4
        .globl  avx2_test
        .type   avx2_test, @function
avx2_test:
.LFB5178:
        .cfi_startproc
        vbroadcastss    x(%rip), %ymm0
        vmovaps %ymm0, y(%rip)
        vzeroupper
        ret
        .cfi_endproc
.LFE5178:
        .size   avx2_test, .-avx2_test
        .comm   y,32,32
        .comm   x,16,16
        .ident  "GCC: (GNU) 9.0.0 20181005 (experimental)"
        .section        .note.GNU-stack,"",@progbits
[hjl@gnu-cfl-1 gcc]$

Reply via email to