]> git.ipfire.org Git - thirdparty/gcc.git/commit
gcc.target/i386/pr53533-[13].c: Adjust assembly scan
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 11 Oct 2024 21:53:49 +0000 (05:53 +0800)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 28 Oct 2024 05:31:55 +0000 (13:31 +0800)
commitf1823d8037e355cd755087e695051d190ffe755e
tree7185c1651dcd8209b2a1f9e65587706dcfae7e34
parentae0dbea896b77686fcd1c890e5b7c5fed6197767
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.tools@gmail.com>
gcc/testsuite/gcc.target/i386/pr53533-1.c
gcc/testsuite/gcc.target/i386/pr53533-3.c