https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89346
Bug ID: 89346 Summary: Unnecessary EVEX encoding 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 CC: ubizjak at gmail dot com Target Milestone: --- Target: i386,x86-64 [hjl@gnu-skx-1 gcc]$ cat x.c #include <immintrin.h> long long *p; volatile __m256i yy; void foo (void) { _mm256_store_epi64 (p, yy); } [hjl@gnu-skx-1 gcc]$ gcc -S -O2 x.c -march=skylake-avx512 [hjl@gnu-skx-1 gcc]$ cat x.s .file "x.c" .text .p2align 4,,15 .globl foo .type foo, @function foo: .LFB5168: .cfi_startproc vmovdqa64 yy(%rip), %ymm0 <<< No need for EVEX. movq p(%rip), %rax vmovdqa64 %ymm0, (%rax) <<< No need for EVEX. vzeroupper ret .cfi_endproc .LFE5168: .size foo, .-foo .comm yy,32,32 .comm p,8,8 .ident "GCC: (GNU) 8.2.1 20190209 (Red Hat 8.2.1-8)" .section .note.GNU-stack,"",@progbits [hjl@gnu-skx-1 gcc]$