aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2022-12-08 14:55:46 +0100
committerJakub Jelinek <jakub@redhat.com>2022-12-08 14:55:46 +0100
commit1dc49df4eeaec311f19638861c64e90d7ec696e5 (patch)
treed932cedc88282c350b01d21b4515bf593fa09e31 /libgcc
parent0ef9991d8767932f51fa97753c16058d17b29b18 (diff)
downloadgcc-1dc49df4eeaec311f19638861c64e90d7ec696e5.zip
gcc-1dc49df4eeaec311f19638861c64e90d7ec696e5.tar.gz
gcc-1dc49df4eeaec311f19638861c64e90d7ec696e5.tar.bz2
i386: Add *concat<mode><dwi>3_{5,6,7} patterns [PR107627]
On Thu, Dec 01, 2022 at 09:09:51AM +0100, Jakub Jelinek via Gcc-patches wrote: > BTW, I wonder if we couldn't add additional patterns which would catch > the case where one of the operands is constant. The following patch does add those. The difference with the patch on the 2 testcases is: baz: - movq 8(%rsi), %rax + movq 8(%rsi), %rsi + movq %rdi, %r8 movl %edx, %ecx - xorl %r8d, %r8d - xorl %edx, %edx - movabsq $-2401053089206453570, %r9 - orq %r8, %rax - orq %r9, %rdx - shrdq %rdx, %rax - movq %rax, (%rdi) + movabsq $-2401053089206453570, %rdi + movq %rsi, %rax + shrdq %rdi, %rax + movq %rax, (%r8) qux: - movq (%rsi), %rax + movq %rdi, %r8 + movq (%rsi), %rdi movl %edx, %ecx - xorl %r9d, %r9d - movabsq $-2401053089206453570, %r8 - movq %rax, %rdx - xorl %eax, %eax - orq %r8, %rax - orq %r9, %rdx - shrdq %rdx, %rax - movq %rax, (%rdi) + movabsq $-2401053089206453570, %rsi + movq %rsi, %rax + shrdq %rdi, %rax + movq %rax, (%r8) and garply: pushl %esi - xorl %edx, %edx + movl $-559038737, %esi pushl %ebx movl 16(%esp), %eax - orl $-559038737, %edx movl 20(%esp), %ecx - movl 4(%eax), %eax - shrdl %edx, %eax movl 12(%esp), %edx + movl 4(%eax), %ebx + movl %ebx, %eax + shrdl %esi, %eax fred: ... movl 16(%esp), %eax + movl $-889275714, %ebx movl 20(%esp), %ecx - movl (%eax), %eax - movl %eax, %edx - movl $0, %eax - orl $-889275714, %eax - shrdl %edx, %eax movl 12(%esp), %edx + movl (%eax), %esi + movl %ebx, %eax + shrdl %esi, %eax 2022-12-08 Jakub Jelinek <jakub@redhat.com> PR target/107627 * config/i386/i386.md (HALF, half): New mode attributes. (*concat<half><mode>3_5, *concat<mode><dwi>3_6, *concat<mode><dwi>3_7): New define_insn_and_split patterns. * gcc.target/i386/pr107627-3.c: New test. * gcc.target/i386/pr107627-4.c: New test.
Diffstat (limited to 'libgcc')
0 files changed, 0 insertions, 0 deletions