]> git.ipfire.org Git - thirdparty/gcc.git/commit
i386: Add more peephole2 for APX NDD
authorHu, Lin1 <lin1.hu@intel.com>
Mon, 10 Mar 2025 08:52:22 +0000 (16:52 +0800)
committerHu, Lin1 <lin1.hu@intel.com>
Wed, 4 Jun 2025 06:19:46 +0000 (14:19 +0800)
commit102b21f9ce7d7a30cdee7c729a152e95c96107ac
treeb5e4f0de1961c14c0a11ba00c4cd23a2930c1c6a
parent31b887bcc898787a228672d417ec0b33a15b2fb2
i386: Add more peephole2 for APX NDD

The patch aims to optimize
         movb    (%rdi), %al
         movq    %rdi, %rbx
         xorl    %esi, %eax, %edx
         movb    %dl, (%rdi)
         cmpb    %sil, %al
 jne
to
         xorb    %sil, (%rdi)
         movq    %rdi, %rbx
 jne

Reduce 2 mov and 1 cmp instructions.

Due to APX NDD allowing the dest register and source register to be different,
some original peephole2 are invalid. Add new peephole2 patterns for APX NDD.

gcc/ChangeLog:

* config/i386/i386.md (define_peephole2): Define some new peephole2 for
APX NDD.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr49095-2.c: New test.
gcc/config/i386/i386.md
gcc/testsuite/gcc.target/i386/pr49095-2.c [new file with mode: 0644]