https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88496
--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> --- From PR 90202: [hjl@gnu-cfl-1 pr90202]$ cat x.ii struct v { int val[16]; }; struct v test(struct v a, struct v b) { struct v res; for (int i = 0; i < 16; i++) res.val[i] = a.val[i] + b.val[i]; return res; } [hjl@gnu-cfl-1 pr90202]$ make CC=gcc gcc -O3 -march=skylake -S x.ii [hjl@gnu-cfl-1 pr90202]$ cat x.s .file "x.ii" .text .p2align 4,,15 .globl _Z4test1vS_ .type _Z4test1vS_, @function _Z4test1vS_: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rdi, %rax movq %rsp, %rbp .cfi_def_cfa_register 6 vmovdqu 16(%rbp), %ymm1 vmovdqu 48(%rbp), %ymm2 vpaddd 80(%rbp), %ymm1, %ymm0 vmovdqu %ymm0, (%rdi) vpaddd 112(%rbp), %ymm2, %ymm0 vmovdqu %ymm0, 32(%rdi) vzeroupper popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc