rs6000.md (strlensi): Don't use subsi3 with a constant, use addsi3 directly.
authorSegher Boessenkool <segher@kernel.crashing.org>
Sun, 21 Sep 2014 18:01:59 +0000 (20:01 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Sun, 21 Sep 2014 18:01:59 +0000 (20:01 +0200)
commit9f31288f440e5b75ef5d7759310bfd95362610a7
treed612891d64412ce8d718e903fc294c62cccd5b3a
parentb4e2da9e22fc9eb0a585951fe6a02d4b1ad0f4fe
rs6000.md (strlensi): Don't use subsi3 with a constant, use addsi3 directly.

2014-09-21  Segher Boessenkool  <segher@kernel.crashing.org>

* config/rs6000/rs6000.md (strlensi): Don't use subsi3 with a
constant, use addsi3 directly.
(three anonymous define_insn, two define_split): Delete.
(sub<mode>3): Move.  Do not allow constant second operand.
Generate different insn for constant first operand.
(*subf<mode>3, *subf<mode>3_dot, *subf<mode>3_dot2): New.
(subf<mode>3_imm): New.
(ctz<mode>2, ffs<mode>2): Clobber CA_REGNO where required.
(*plus_ltu<mode>): Only handle registers.
(*plus_ltu<mode>_1): New.  Handle integer third operand.
(*plus_gtu<mode>): Only handle registers.
(*plus_gtu<mode>_1): New.  Handle integer third operand.

From-SVN: r215434
gcc/ChangeLog
gcc/config/rs6000/rs6000.md