Commit 8f8b5612 by Geoff Keating Committed by Geoffrey Keating

mips.md (div_trap_normal): Don't ask for the REGNO of (const_int 0)...

* config/mips/mips.md (div_trap_normal): Don't ask for the REGNO
of (const_int 0), when what we really care about is
whether it's a zero constant anyway.
(div_trap_mips16): Likewise.

From-SVN: r30648
parent 428248f7
1999-11-24 Geoffrey Keating <geoffk@cygnus.com>
* config/mips/mips.md (div_trap_normal): Don't ask for the REGNO
of (const_int 0), when what we really care about is
whether it's a zero constant anyway.
(div_trap_mips16): Likewise.
1999-11-23 Mark Mitchell <mark@codesourcery.com> 1999-11-23 Mark Mitchell <mark@codesourcery.com>
* loop.c (loop_optimize): Always find_loop_tree_blocks and * loop.c (loop_optimize): Always find_loop_tree_blocks and
......
...@@ -2395,8 +2395,8 @@ ...@@ -2395,8 +2395,8 @@
}") }")
(define_insn "div_trap_normal" (define_insn "div_trap_normal"
[(trap_if (eq (match_operand 0 "register_operand" "d") [(trap_if (eq (match_operand 0 "register_operand" "d,d")
(match_operand 1 "true_reg_or_0_operand" "dJ")) (match_operand 1 "true_reg_or_0_operand" "d,J"))
(match_operand 2 "immediate_operand" ""))] (match_operand 2 "immediate_operand" ""))]
"!TARGET_MIPS16" "!TARGET_MIPS16"
"* "*
...@@ -2411,20 +2411,20 @@ ...@@ -2411,20 +2411,20 @@
if ((int) REG_DEP_ANTI == (int) REG_NOTE_KIND (link) if ((int) REG_DEP_ANTI == (int) REG_NOTE_KIND (link)
&& GET_CODE (XEXP (link, 0)) == INSN && GET_CODE (XEXP (link, 0)) == INSN
&& GET_CODE (PATTERN (XEXP (link, 0))) == TRAP_IF && GET_CODE (PATTERN (XEXP (link, 0))) == TRAP_IF
&& REGNO (operands[1]) == 0) && which_alternative == 1)
have_dep_anti = 1; have_dep_anti = 1;
if (! have_dep_anti) if (! have_dep_anti)
{ {
if (GENERATE_BRANCHLIKELY) if (GENERATE_BRANCHLIKELY)
{ {
if (GET_CODE (operands[1]) == CONST_INT) if (which_alternative == 1)
return \"%(beql\\t%0,$0,1f\\n\\tbreak\\t%2\\n%~1:%)\"; return \"%(beql\\t%0,$0,1f\\n\\tbreak\\t%2\\n%~1:%)\";
else else
return \"%(beql\\t%0,%1,1f\\n\\tbreak\\t%2\\n%~1:%)\"; return \"%(beql\\t%0,%1,1f\\n\\tbreak\\t%2\\n%~1:%)\";
} }
else else
{ {
if (GET_CODE (operands[1]) == CONST_INT) if (which_alternative == 1)
return \"%(bne\\t%0,$0,1f\\n\\tnop\\n\\tbreak\\t%2\\n%~1:%)\"; return \"%(bne\\t%0,$0,1f\\n\\tnop\\n\\tbreak\\t%2\\n%~1:%)\";
else else
return \"%(bne\\t%0,%1,1f\\n\\tnop\\n\\tbreak\\t%2\\n%~1:%)\"; return \"%(bne\\t%0,%1,1f\\n\\tnop\\n\\tbreak\\t%2\\n%~1:%)\";
...@@ -2439,8 +2439,8 @@ ...@@ -2439,8 +2439,8 @@
;; The mips16 bne insns is a macro which uses reg 24 as an intermediate. ;; The mips16 bne insns is a macro which uses reg 24 as an intermediate.
(define_insn "div_trap_mips16" (define_insn "div_trap_mips16"
[(trap_if (eq (match_operand 0 "register_operand" "d") [(trap_if (eq (match_operand 0 "register_operand" "d,d")
(match_operand 1 "true_reg_or_0_operand" "dJ")) (match_operand 1 "true_reg_or_0_operand" "d,J"))
(match_operand 2 "immediate_operand" "")) (match_operand 2 "immediate_operand" ""))
(clobber (reg:SI 24))] (clobber (reg:SI 24))]
"TARGET_MIPS16" "TARGET_MIPS16"
...@@ -2456,12 +2456,12 @@ ...@@ -2456,12 +2456,12 @@
if ((int) REG_DEP_ANTI == (int) REG_NOTE_KIND (link) if ((int) REG_DEP_ANTI == (int) REG_NOTE_KIND (link)
&& GET_CODE (XEXP (link, 0)) == INSN && GET_CODE (XEXP (link, 0)) == INSN
&& GET_CODE (PATTERN (XEXP (link, 0))) == TRAP_IF && GET_CODE (PATTERN (XEXP (link, 0))) == TRAP_IF
&& REGNO (operands[1]) == 0) && which_alternative == 1)
have_dep_anti = 1; have_dep_anti = 1;
if (! have_dep_anti) if (! have_dep_anti)
{ {
/* No branch delay slots on mips16. */ /* No branch delay slots on mips16. */
if (GET_CODE (operands[1]) == CONST_INT) if (which_alternative == 1)
return \"%(bnez\\t%0,1f\\n\\tbreak\\t%2\\n%~1:%)\"; return \"%(bnez\\t%0,1f\\n\\tbreak\\t%2\\n%~1:%)\";
else else
return \"%(bne\\t%0,%1,1f\\n\\tbreak\\t%2\\n%~1:%)\"; return \"%(bne\\t%0,%1,1f\\n\\tbreak\\t%2\\n%~1:%)\";
......
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