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.
---
 gcc/testsuite/gcc.target/i386/pr22076.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gcc/testsuite/gcc.target/i386/pr22076.c 
b/gcc/testsuite/gcc.target/i386/pr22076.c
index 427ffcd4920..aa06f057690 100644
--- a/gcc/testsuite/gcc.target/i386/pr22076.c
+++ b/gcc/testsuite/gcc.target/i386/pr22076.c
@@ -15,5 +15,6 @@ void test ()
   x = _mm_add_pi8 (mm0, mm1);
 }
 
-/* { dg-final { scan-assembler-times "movq" 2 } } */
-/* { dg-final { scan-assembler-not "movl" { target nonpic } } } */
+/* { dg-final { scan-assembler-times "movq" 2 { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "movl" 4 { target { nonpic && ia32 } } } 
} */
+/* { dg-final { scan-assembler-not "%mm" } }  */
-- 
2.32.0

Reply via email to