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

Reply via email to