diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1996-11-12 14:22:21 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1996-11-12 14:22:21 -0500 |
commit | dfb331d6941fa829b0f060e79568875991e3eb70 (patch) | |
tree | 8966e186227411b0d58d7430cd9325619f67b640 | |
parent | 720283f2ebd1517cce58eb73f41701c2e4bc7fad (diff) | |
download | gcc-dfb331d6941fa829b0f060e79568875991e3eb70.zip gcc-dfb331d6941fa829b0f060e79568875991e3eb70.tar.gz gcc-dfb331d6941fa829b0f060e79568875991e3eb70.tar.bz2 |
(negsi2): Change into define_expand.
(negsi2_internal): Rename from old negsi2, changed condition to !TARGET_5200.
(negsi2_5200): New insn.
(one_cmplsi2): Change into define_expand.
(one_cmplsi2_internal): Rename from old one_cmplsi2, changed
condition to !TARGET_5200.
(one_cmplsi2_5200): New insn.
(negdi2_5200): Corrected constraints.
(one_cmpldi2): Changed condition to !TARGET_5200.
From-SVN: r13136
-rw-r--r-- | gcc/config/m68k/m68k.md | 59 |
1 files changed, 46 insertions, 13 deletions
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index 538c8dd..b9b3bff 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -3712,24 +3712,38 @@ } ") (define_insn "negdi2_5200" - [(set (match_operand:DI 0 "general_operand" "=<,do") - (neg:DI (match_operand:DI 1 "general_operand" "0,0")))] + [(set (match_operand:DI 0 "general_operand" "=d") + (neg:DI (match_operand:DI 1 "general_operand" "0")))] "TARGET_5200" "* { - if (which_alternative == 0) - return \"neg%.l %0\;negx%.l %0\"; - if (GET_CODE (operands[0]) == REG) - operands[1] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1); - else - operands[1] = adj_offsettable_operand (operands[0], 4); + operands[1] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1); return \"neg%.l %1\;negx%.l %0\"; } ") -(define_insn "negsi2" +(define_expand "negsi2" + [(set (match_operand:SI 0 "general_operand" "") + (neg:SI (match_operand:SI 1 "general_operand" "")))] + "" + " +{ + if (TARGET_5200) + emit_insn (gen_negsi2_5200 (operands[0], operands[1])); + else + emit_insn (gen_negsi2_internal (operands[0], operands[1])); + DONE; +}") + +(define_insn "negsi2_internal" [(set (match_operand:SI 0 "general_operand" "=dm") (neg:SI (match_operand:SI 1 "general_operand" "0")))] - "" + "!TARGET_5200" + "neg%.l %0") + +(define_insn "negsi2_5200" + [(set (match_operand:SI 0 "general_operand" "=d") + (neg:SI (match_operand:SI 1 "general_operand" "0")))] + "TARGET_5200" "neg%.l %0") (define_insn "neghi2" @@ -3993,7 +4007,7 @@ (define_insn "one_cmpldi2" [(set (match_operand:DI 0 "general_operand" "=dm") (not:DI (match_operand:DI 1 "general_operand" "0")))] - "" + "!TARGET_5200" "* { CC_STATUS_INIT; @@ -4007,10 +4021,29 @@ return \"not%.l %1\;not%.l %0\"; }") -(define_insn "one_cmplsi2" +(define_expand "one_cmplsi2" + [(set (match_operand:SI 0 "general_operand" "") + (not:SI (match_operand:SI 1 "general_operand" "")))] + "" + " +{ + if (TARGET_5200) + emit_insn (gen_one_cmplsi2_5200 (operands[0], operands[1])); + else + emit_insn (gen_one_cmplsi2_internal (operands[0], operands[1])); + DONE; +}") + +(define_insn "one_cmplsi2_internal" [(set (match_operand:SI 0 "general_operand" "=dm") (not:SI (match_operand:SI 1 "general_operand" "0")))] - "" + "!TARGET_5200" + "not%.l %0") + +(define_insn "one_cmplsi2_5200" + [(set (match_operand:SI 0 "general_operand" "=d") + (not:SI (match_operand:SI 1 "general_operand" "0")))] + "TARGET_5200" "not%.l %0") (define_insn "one_cmplhi2" |