]> git.ipfire.org Git - thirdparty/gcc.git/commit
[arm] Add alternative canonicalizations for subtract-with-carry + shift
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 18 Oct 2019 19:03:19 +0000 (19:03 +0000)
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 18 Oct 2019 19:03:19 +0000 (19:03 +0000)
commit263f9e4d0ee3c4908cc083d5075b48d775ba9f74
treee4aea46ee82842c8dc421bca46b1c22e20ade936
parent01089cc74345278016eb2bc21ed8d5589f4aafac
[arm] Add alternative canonicalizations for subtract-with-carry + shift

This patch adds a couple of alternative canonicalizations to allow
combine to match a subtract-with-carry operation when one of the operands
is shifted first.  The most common case of this is when combining a
sign-extend of one operand with a long-long value during subtraction.
The RSC variant is only enabled for Arm, the SBC variant for any 32-bit
compilation.

* config/arm/arm.md (subsi3_carryin_shift_alt): New pattern.
(rsbsi3_carryin_shift_alt): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@277176 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/arm/arm.md