Hello, The attach patch replaces the use of the 'addc1' pattern with 'addc' and the use of the 'subc1' pattern with 'subc'. Tested with
make -k check RUNTESTFLAGS="--target_board=sh-sim \{-m2/-ml,-m2/-mb,-m2a/-mb,-m2a-single/-mb,-m4/-ml,-m4/-mb,-m4-single/-ml, -m4-single/-mb,-m4a-single/-ml,-m4a-single/-mb}" and no new failures. CSiBE result-size also doesn't show any change for '-O2 -m4-single -ml -mpretend-cmove'. OK? Cheers, Oleg ChangeLog: * config/sh/sh.md (addc1, subc1): Delete. (adddi3_compact): Use addc instead of addc1. (subdi3_compact): Use subc instead of subc1.
Index: gcc/config/sh/sh.md =================================================================== --- gcc/config/sh/sh.md (revision 189747) +++ gcc/config/sh/sh.md (working copy) @@ -1447,7 +1447,7 @@ emit_insn (gen_clrt ()); emit_insn (gen_addc (low0, low0, gen_lowpart (SImode, operands[2]))); - emit_insn (gen_addc1 (high0, high0, high2)); + emit_insn (gen_addc (high0, high0, high2)); DONE; }) @@ -1462,16 +1462,6 @@ "addc %2,%0" [(set_attr "type" "arith")]) -(define_insn "addc1" - [(set (match_operand:SI 0 "arith_reg_dest" "=r") - (plus:SI (plus:SI (match_operand:SI 1 "arith_reg_operand" "0") - (match_operand:SI 2 "arith_reg_operand" "r")) - (reg:SI T_REG))) - (clobber (reg:SI T_REG))] - "TARGET_SH1" - "addc %2,%0" - [(set_attr "type" "arith")]) - (define_expand "addsi3" [(set (match_operand:SI 0 "arith_reg_operand" "") (plus:SI (match_operand:SI 1 "arith_operand" "") @@ -1565,7 +1555,7 @@ emit_insn (gen_clrt ()); emit_insn (gen_subc (low0, low0, gen_lowpart (SImode, operands[2]))); - emit_insn (gen_subc1 (high0, high0, high2)); + emit_insn (gen_subc (high0, high0, high2)); DONE; }) @@ -1582,16 +1572,6 @@ "subc %2,%0" [(set_attr "type" "arith")]) -(define_insn "subc1" - [(set (match_operand:SI 0 "arith_reg_dest" "=r") - (minus:SI (minus:SI (match_operand:SI 1 "arith_reg_operand" "0") - (match_operand:SI 2 "arith_reg_operand" "r")) - (reg:SI T_REG))) - (clobber (reg:SI T_REG))] - "TARGET_SH1" - "subc %2,%0" - [(set_attr "type" "arith")]) - ;; life_analysis thinks rn is live before subc rn,rn, so make a special ;; pattern for this case. This helps multimedia applications that compute ;; the sum of absolute differences.