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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|pinskia at gcc dot gnu.org         |unassigned at gcc dot 
gnu.org
             Target|                            |x86_64-linux-gnu
             Status|ASSIGNED                    |NEW
           Keywords|                            |missed-optimization

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I think I accidently set this to assigned rather than just new.

x86_64 produces now:
        movdqa  .LC0(%rip), %xmm0
        movabsq $1229782938247303441, %rax
        movups  %xmm0, (%rdi)
        movq    %rax, 15(%rdi)

Which is slightly better.

x86_64 with -mavx2 produces:
        movl    $17, %eax
        vmovd   %eax, %xmm0
        movabsq $1229782938247303441, %rax
        vpbroadcastb    %xmm0, %xmm0
        vmovdqu %xmm0, (%rdi)
        movq    %rax, 15(%rdi)

which is only slightly better but we need to produce 0x1111111111111111 in rax,
then why not use that for the broadcast ?

aarch64 is reasonible though:

        movi    v31.16b, 0x11
        str     q31, [x0]
        str     d31, [x0, 15]

Reply via email to