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

            Bug ID: 91811
           Summary: 256-bit vector store isn't used
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
  Target Milestone: ---

[hjl@gnu-cfl-1 xxx]$ cat y.i
typedef struct
{
  long long width, height;
  long long x, y;
} info;

extern void bar (info *);

void
foo (long long width, long long height,
     long long x, long long y)
{
  info t;
  t.width = width;
  t.height = height;
  t.x = x;
  t.y = y;
  bar (&t);
}
[hjl@gnu-cfl-1 xxx]$ 
/export/build/gnu/tools-build/gcc-debug/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/tools-build/gcc-debug/build-x86_64-linux/gcc/ -O2
-march=skylake -ftree-slp-vectorize -mtune-ctrl=^sse_typeless_stores
-mprefer-vector-width=256  -S y.i
[hjl@gnu-cfl-1 xxx]$ cat y.s
        .file   "y.i"
        .text
        .p2align 4
        .globl  foo
        .type   foo, @function
foo:
.LFB0:
        .cfi_startproc
        vmovq   %rdi, %xmm1
        subq    $40, %rsp
        .cfi_def_cfa_offset 48
        vpinsrq $1, %rsi, %xmm1, %xmm0
        vmovq   %rdx, %xmm2
        vmovdqa %xmm0, (%rsp)
        movq    %rsp, %rdi
        vpinsrq $1, %rcx, %xmm2, %xmm0
        vmovdqa %xmm0, 16(%rsp)
        call    bar
        addq    $40, %rsp
        .cfi_def_cfa_offset 8
        ret
        .cfi_endproc
.LFE0:
        .size   foo, .-foo
        .ident  "GCC: (GNU) 10.0.0 20190918 (experimental)"
        .section        .note.GNU-stack,"",@progbits
[hjl@gnu-cfl-1 xxx]$ 

Is it possible to use 256-bit YMM register store?

Reply via email to