https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90073
--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> --- The problem is with the default -mtune=generic. [hjl@gnu-cfl-1 gcc]$ cat /tmp/foo.cc #include <x86intrin.h> using data = long long __attribute__((vector_size(64))); void f(data& a, const data& x1, const data& x2) { a ^= x1 ^ x2; } [hjl@gnu-cfl-1 gcc]$ ./xgcc -B./ -O3 -mtune=skylake -mavx2 /tmp/foo.cc -S [hjl@gnu-cfl-1 gcc]$ cat foo.s .file "foo.cc" .text .p2align 4 .globl _Z1fRDv8_xRKS_S2_ .type _Z1fRDv8_xRKS_S2_, @function _Z1fRDv8_xRKS_S2_: .LFB5519: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 andq $-64, %rsp subq $200, %rsp vmovdqa (%rsi), %ymm2 vmovdqa 32(%rsi), %ymm0 vpxor (%rdx), %ymm2, %ymm1 vpxor 32(%rdx), %ymm0, %ymm0 vpxor (%rdi), %ymm1, %ymm1 vpxor 32(%rdi), %ymm0, %ymm0 vmovaps %ymm1, (%rdi) vmovaps %ymm0, 32(%rdi) vzeroupper leave .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE5519: .size _Z1fRDv8_xRKS_S2_, .-_Z1fRDv8_xRKS_S2_ .ident "GCC: (GNU) 9.0.1 20190412 (experimental)" .section .note.GNU-stack,"",@progbits [hjl@gnu-cfl-1 gcc]$