i386: Eliminate sign extension after logic operation [PR89954]
commit6f4459c478b1c09e4b5e7d629fbf46d2a4fe4560
authorUros Bizjak <ubizjak@gmail.com>
Thu, 30 Sep 2021 17:33:49 +0000 (30 19:33 +0200)
committerUros Bizjak <ubizjak@gmail.com>
Thu, 30 Sep 2021 17:35:13 +0000 (30 19:35 +0200)
tree2e6c870cf2ff525719423c95eeee41361f91fa10
parent643e8f4ee3a2a59a9b96fbcd1ffa8bacbda5b383
i386: Eliminate sign extension after logic operation [PR89954]

Convert (sign_extend:WIDE (any_logic:NARROW (memory, immediate)))
to (any_logic:WIDE (sign_extend (memory)), (sign_extend (immediate))).
This eliminates sign extension after logic operation.

2021-09-30  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
PR target/89954
* config/i386/i386.md
(sign_extend:WIDE (any_logic:NARROW (memory, immediate)) splitters):
New splitters.

gcc/testsuite/
PR target/89954
* gcc.target/i386/pr89954.c: New test.
gcc/config/i386/i386.md
gcc/testsuite/gcc.target/i386/pr89954.c [new file with mode: 0644]