diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2013-08-01 15:02:19 +0000 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@gcc.gnu.org> | 2013-08-01 15:02:19 +0000 |
commit | ce852f9c3afff56097da5c352aba32e6191cdd3e (patch) | |
tree | bd69c6200fe4d7ee6636f784009cad9e74c0651e /gcc | |
parent | c743b246435838c846861d22430fea543a4eed7d (diff) | |
download | gcc-ce852f9c3afff56097da5c352aba32e6191cdd3e.zip gcc-ce852f9c3afff56097da5c352aba32e6191cdd3e.tar.gz gcc-ce852f9c3afff56097da5c352aba32e6191cdd3e.tar.bz2 |
arm.md (minmax_arithsi_non_canon): Emit canonical RTL form when subtracting a constant.
2013-08-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm.md (minmax_arithsi_non_canon): Emit canonical RTL form
when subtracting a constant.
From-SVN: r201412
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.md | 7 |
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5480545..d60161e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2013-08-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + * config/arm/arm.md (minmax_arithsi_non_canon): Emit canonical RTL form + when subtracting a constant. + +2013-08-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + * config/arm/arm.md (peepholes for eq (reg1) (reg2/imm)): Generate canonical plus rtx with negated immediate instead of minus where appropriate. diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 322aa20..45e9ada 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -3717,8 +3717,7 @@ (match_dup 2)))) (cond_exec (match_op_dup 5 [(reg:CC CC_REGNUM) (const_int 0)]) (set (match_dup 0) - (minus:SI (match_dup 1) - (match_dup 3))))] + (match_dup 6)))] { enum machine_mode mode = SELECT_CC_MODE (GET_CODE (operands[1]), operands[2], operands[3]); @@ -3731,6 +3730,10 @@ else rc = reverse_condition (rc); operands[5] = gen_rtx_fmt_ee (rc, SImode, operands[2], operands[3]); + if (CONST_INT_P (operands[3])) + operands[6] = plus_constant (SImode, operands[1], -INTVAL (operands[3])); + else + operands[6] = gen_rtx_MINUS (SImode, operands[1], operands[3]); } [(set_attr "conds" "clob") (set (attr "length") |