https://gcc.gnu.org/g:f1823d8037e355cd755087e695051d190ffe755e

commit r15-4711-gf1823d8037e355cd755087e695051d190ffe755e
Author: H.J. Lu <hjl.to...@gmail.com>
Date:   Sat Oct 12 05:53:49 2024 +0800

    gcc.target/i386/pr53533-[13].c: Adjust assembly scan
    
    Before
    
    1089d083117 Simplify (B * v + C) * D -> BD* v + CD when B,C,D are all 
INTEGER_CST.
    
    the loop was
    
    .L2:
            movl    (%rdi,%rdx), %eax
            addl    $12345, %eax
            imull   $-1564285888, %eax, %eax
            leal    -333519936(%rax), %eax
            movl    %eax, (%rsi,%rdx)
            addq    $4, %rdx
            cmpq    $1024, %rdx
            jne     .L2
    
    There were 1 addl and 1 leal. 1 addq was to update the loop counter.  The
    optimized loop is
    
    .L2:
            imull   $-1564285888, (%rdi,%rax), %edx
            subl    $1269844480, %edx
            movl    %edx, (%rsi,%rax)
            addq    $4, %rax
            cmpq    $1024, %rax
            jne     .L2
    
    1 addl is changed to subl and leal is removed. Adjust assembly scan to
    check for 1 subl and 1 addl/addq as well as lea removal.
    
            * gcc.target/i386/pr53533-1.c: Adjust assembly scan.
            * gcc.target/i386/pr53533-3.c: Likewise.
    
    Signed-off-by: H.J. Lu <hjl.to...@gmail.com>

Diff:
---
 gcc/testsuite/gcc.target/i386/pr53533-1.c | 4 +++-
 gcc/testsuite/gcc.target/i386/pr53533-3.c | 4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/gcc/testsuite/gcc.target/i386/pr53533-1.c 
b/gcc/testsuite/gcc.target/i386/pr53533-1.c
index 095de6653665..11d12015145b 100644
--- a/gcc/testsuite/gcc.target/i386/pr53533-1.c
+++ b/gcc/testsuite/gcc.target/i386/pr53533-1.c
@@ -1,7 +1,9 @@
 /* { dg-do compile } */
 /* { dg-options "-O1" } */
 /* { dg-final { scan-assembler-times "imull\[ \t\]" "1" } } */
-/* { dg-final { scan-assembler-times "(?:addl|subl)\[ \t\]" "1" { target { ! 
ia32 } } } } */
+/* { dg-final { scan-assembler-times "subl\[ \t\]" "1" } } */
+/* { dg-final { scan-assembler-times "add(?:l|q)\[ \t\]" "1" } } */
+/* { dg-final { scan-assembler-not "leal" } } */
 
 void
 __attribute__((noipa))
diff --git a/gcc/testsuite/gcc.target/i386/pr53533-3.c 
b/gcc/testsuite/gcc.target/i386/pr53533-3.c
index 3b260d134e91..347fa828eb76 100644
--- a/gcc/testsuite/gcc.target/i386/pr53533-3.c
+++ b/gcc/testsuite/gcc.target/i386/pr53533-3.c
@@ -1,7 +1,9 @@
 /* { dg-do compile } */
 /* { dg-options "-O1 -fwrapv" } */
 /* { dg-final { scan-assembler-times "imull\[ \t\]" "1" } } */
-/* { dg-final { scan-assembler-times "(?:addl|subl)\[ \t\]" "1" { target { ! 
ia32 } } } } */
+/* { dg-final { scan-assembler-times "subl\[ \t\]" "1" } } */
+/* { dg-final { scan-assembler-times "add(?:l|q)\[ \t\]" "1" } } */
+/* { dg-final { scan-assembler-not "leal" } } */
 
 void
 __attribute__((noipa))

Reply via email to