https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100865
Bug ID: 100865 Summary: pass_data_constant_pool_broadcast doesn't work on TImode Product: gcc Version: 11.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: crazylht at gmail dot com Target Milestone: --- Target: x86-64 [hjl@gnu-cfl-2 gcc]$ cat /tmp/y.c extern char *dst; void foo (void) { __builtin_memset (dst, 12, 16); } [hjl@gnu-cfl-2 gcc]$ ./xgcc -B./ -S -O2 -march=skylake-avx512 /tmp/y.c [hjl@gnu-cfl-2 gcc]$ cat y.s .file "y.c" .text .p2align 4 .globl foo .type foo, @function foo: .LFB0: .cfi_startproc movq dst(%rip), %rax vmovdqa .LC0(%rip), %xmm0 vmovdqu %xmm0, (%rax) ret .cfi_endproc .LFE0: .size foo, .-foo .section .rodata.cst16,"aM",@progbits,16 .align 16 .LC0: .quad 868082074056920076 .quad 868082074056920076 .ident "GCC: (GNU) 12.0.0 20210602 (experimental)" .section .note.GNU-stack,"",@progbits [hjl@gnu-cfl-2 gcc]$ Also should broadcast from register be used to avoid memory load?