On Tue, Oct 19, 2021 at 11:42 PM Uros Bizjak <ubiz...@gmail.com> wrote:
>
> On Tue, Oct 19, 2021 at 8:23 PM H.J. Lu <hjl.to...@gmail.com> wrote:
> >
> > commit 247c407c83f0015f4b92d5f71e45b63192f6757e
> > Author: Roger Sayle <ro...@nextmovesoftware.com>
> > Date:   Mon Oct 18 12:15:40 2021 +0100
> >
> >     Try placing RTL folded constants in the constant pool.
> >
> >     My recent attempts to come up with a testcase for my patch to evaluate
> >     ss_plus in simplify-rtx.c, identified a missed optimization opportunity
> >     (that's potentially a long-time regression): The RTL optimizers no 
> > longer
> >     place constants in the constant pool.
> >
> > changed -m32 codegen from
> >
> >         movq    .LC1, %mm0
> >         paddb   .LC0, %mm0
> >         movq    %mm0, x
> >         ret
> >
> > to
> >
> >         movl    $807671820, %eax
> >         movl    $1616136252, %edx
> >         movl    %eax, x
> >         movl    %edx, x+4
> >         ret
> >
> > and -m64 codegen from
> >
> >         movq    .LC1(%rip), %mm0
> >         paddb   .LC0(%rip), %mm0
> >         movq    %xmm0, x(%rip)
> >         ret
> >
> > to
> >
> >         movq    .LC2(%rip), %rax
> >         movq    %rax, x(%rip)
> >         ret
> >
> > Adjust pr22076.c to check that MMX register isn't used since avoiding
> > MMX register isn't a bad thing.
> >
> >         PR testsuite/102840
> >         * gcc.target/i386/pr22076.c: Updated to check that MMX register
> >         isn't used.
>
> The compiler is now able to evaluate the result at the compile time
> and it optimizes the test accordingly. Let's provide some MMX
> instruction that is implemented with UNSPEC, so the compiler won't be
> able to outsmart us.
>
> Something like the attached patch.
>
> Uros.

Works for me.

Thanks.

-- 
H.J.

Reply via email to