Commit 9be13211 by DJ Delorie Committed by DJ Delorie

stormy16.md (negsi2): Allocate the pseudos before reload, but defer the split until after.

* config/stormy16/stormy16.md (negsi2): Allocate the pseudos
before reload, but defer the split until after.
* config/stormy16/stormy16.c (xstormy16_expand_arith): Modify
to match.

From-SVN: r66485
parent 517f3315
2003-05-05 DJ Delorie <dj@redhat.com>
* config/stormy16/stormy16.md (negsi2): Allocate the pseudos
before reload, but defer the split until after.
* config/stormy16/stormy16.c (xstormy16_expand_arith): Modify
to match.
2003-05-05 David Edelsohn <edelsohn@gnu.org> 2003-05-05 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 440 support. * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 440 support.
......
...@@ -1873,20 +1873,13 @@ xstormy16_expand_arith (mode, code, dest, src0, src1, carry) ...@@ -1873,20 +1873,13 @@ xstormy16_expand_arith (mode, code, dest, src0, src1, carry)
int firstloop = 1; int firstloop = 1;
if (code == NEG) if (code == NEG)
{ emit_move_insn (src0, const0_rtx);
rtx zero_reg = gen_reg_rtx (word_mode);
emit_move_insn (zero_reg, src0);
src0 = zero_reg;
}
for (i = 0; i < num_words; i++) for (i = 0; i < num_words; i++)
{ {
rtx w_src0, w_src1, w_dest; rtx w_src0, w_src1, w_dest;
rtx insn; rtx insn;
if (code == NEG)
w_src0 = src0;
else
w_src0 = simplify_gen_subreg (word_mode, src0, mode, w_src0 = simplify_gen_subreg (word_mode, src0, mode,
i * UNITS_PER_WORD); i * UNITS_PER_WORD);
w_src1 = simplify_gen_subreg (word_mode, src1, mode, i * UNITS_PER_WORD); w_src1 = simplify_gen_subreg (word_mode, src1, mode, i * UNITS_PER_WORD);
......
...@@ -603,11 +603,23 @@ ...@@ -603,11 +603,23 @@
[(set_attr "length" "4")]) [(set_attr "length" "4")])
(define_expand "negsi2" (define_expand "negsi2"
[(set (match_operand:SI 0 "register_operand" "") [(parallel [(set (match_operand:SI 0 "register_operand" "")
(neg:SI (match_operand:SI 1 "register_operand" "")))] (neg:SI (match_operand:SI 1 "register_operand" "")))
(clobber (match_scratch:BI 2 ""))])]
""
"{ operands[2] = gen_reg_rtx (HImode);
operands[3] = gen_reg_rtx (BImode); }")
(define_insn_and_split "*negsi2_internal"
[(set (match_operand:SI 0 "register_operand" "=&r")
(neg:SI (match_operand:SI 1 "register_operand" "r")))
(clobber (match_scratch:BI 2 "=y"))]
"" ""
"{ xstormy16_expand_arith (SImode, NEG, operands[0], const0_rtx, "#"
operands[1], gen_reg_rtx (BImode)); DONE; }") "reload_completed"
[(pc)]
"{ xstormy16_expand_arith (SImode, NEG, operands[0], operands[0],
operands[1], operands[2]); DONE; }")
;; :::::::::::::::::::: ;; ::::::::::::::::::::
;; :: ;; ::
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment