Simplify SH DImode add, sub, neg patterns.
authorOleg Endo <olegendo@gcc.gnu.org>
Tue, 31 May 2016 15:27:54 +0000 (15:27 +0000)
committerOleg Endo <olegendo@gcc.gnu.org>
Tue, 31 May 2016 15:27:54 +0000 (15:27 +0000)
* config/sh/sh.md (adddi3, subdi3, negdi2, abs<mode>2): Remove
define_expand patterns.
(adddi3_compact): Rename to adddi3.
(subdi3_compact): Rename to subdi3.
(*negdi2): Rename to negdi2.
(*abs<mode>2): Rename to abs<mode>2.

From-SVN: r236927

gcc/ChangeLog
gcc/config/sh/sh.md

index bdc3d172c4ed55adb19d9bf452b267ee1b1a6fcb..dca3e9cfbc2b99147f6fc6bff9d80be3ef344c92 100644 (file)
@@ -1,3 +1,12 @@
+2016-05-31  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       * config/sh/sh.md (adddi3, subdi3, negdi2, abs<mode>2): Remove
+       define_expand patterns.
+       (adddi3_compact): Rename to adddi3.
+       (subdi3_compact): Rename to subdi3.
+       (*negdi2): Rename to negdi2.
+       (*abs<mode>2): Rename to abs<mode>2.
+
 2016-05-31  Oleg Endo  <olegendo@gcc.gnu.org>
 
        * config/rx/rx.md (FETCHOP_NO_MINUS): New code iterator.
index 406721dc7369ff665f6001ee41f59d3025e63fab..30948ca7c8aff641cc9aa85ba016ab07121c5c74 100644 (file)
 ;; Addition instructions
 ;; -------------------------------------------------------------------------
 
-(define_expand "adddi3"
-  [(set (match_operand:DI 0 "arith_reg_operand")
-       (plus:DI (match_operand:DI 1 "arith_reg_operand")
-                (match_operand:DI 2 "arith_operand")))]
-  ""
-{
-  operands[2] = force_reg (DImode, operands[2]);
-  emit_insn (gen_adddi3_compact (operands[0], operands[1], operands[2]));
-  DONE;
-})
-
-(define_insn_and_split "adddi3_compact"
+(define_insn_and_split "adddi3"
   [(set (match_operand:DI 0 "arith_reg_dest")
        (plus:DI (match_operand:DI 1 "arith_reg_operand")
                 (match_operand:DI 2 "arith_reg_operand")))
 ;; Subtraction instructions
 ;; -------------------------------------------------------------------------
 
-(define_expand "subdi3"
-  [(set (match_operand:DI 0 "arith_reg_operand" "")
-       (minus:DI (match_operand:DI 1 "arith_reg_or_0_operand" "")
-                 (match_operand:DI 2 "arith_reg_operand" "")))]
-  ""
-{
-  operands[1] = force_reg (DImode, operands[1]);
-  emit_insn (gen_subdi3_compact (operands[0], operands[1], operands[2]));
-  DONE;
-})
-
-(define_insn_and_split "subdi3_compact"
+(define_insn_and_split "subdi3"
   [(set (match_operand:DI 0 "arith_reg_dest")
        (minus:DI (match_operand:DI 1 "arith_reg_operand")
-                (match_operand:DI 2 "arith_reg_operand")))
+                 (match_operand:DI 2 "arith_reg_operand")))
    (clobber (reg:SI T_REG))]
   "TARGET_SH1"
   "#"
 
 ;; Don't split into individual negc insns immediately so that neg:DI (abs:DI)
 ;; can be combined.
-(define_expand "negdi2"
-  [(parallel [(set (match_operand:DI 0 "arith_reg_dest")
-                  (neg:DI (match_operand:DI 1 "arith_reg_operand")))
-             (clobber (reg:SI T_REG))])]
-  "TARGET_SH1")
-
-(define_insn_and_split "*negdi2"
+(define_insn_and_split "negdi2"
   [(set (match_operand:DI 0 "arith_reg_dest")
        (neg:DI (match_operand:DI 1 "arith_reg_operand")))
    (clobber (reg:SI T_REG))]
 }
   [(set_attr "type" "arith")])
 
-(define_expand "abs<mode>2"
-  [(parallel [(set (match_operand:SIDI 0 "arith_reg_dest")
-                  (abs:SIDI (match_operand:SIDI 1 "arith_reg_operand")))
-             (clobber (reg:SI T_REG))])]
-  "TARGET_SH1")
-
-(define_insn_and_split "*abs<mode>2"
+(define_insn_and_split "abs<mode>2"
   [(set (match_operand:SIDI 0 "arith_reg_dest")
        (abs:SIDI (match_operand:SIDI 1 "arith_reg_operand")))
    (clobber (reg:SI T_REG))]