h8300-protos.h: Add a prototype for h8300_expand_branch.
* config/h8300/h8300-protos.h: Add a prototype for h8300_expand_branch. * config/h8300/h8300.c (h8300_expand_branch): New. * config/h8300/h8300.md (ble, bleu, bge, bgeu, blt, bltu, bgt, bgtu, beq, bne): Call h8300_expand_branch(). From-SVN: r78052
This commit is contained in:
parent
07ee3b586d
commit
8981ecd360
@ -1,3 +1,11 @@
|
|||||||
|
2004-02-18 Kazu Hirata <kazu@cs.umass.edu>
|
||||||
|
|
||||||
|
* config/h8300/h8300-protos.h: Add a prototype for
|
||||||
|
h8300_expand_branch.
|
||||||
|
* config/h8300/h8300.c (h8300_expand_branch): New.
|
||||||
|
* config/h8300/h8300.md (ble, bleu, bge, bgeu, blt, bltu, bgt,
|
||||||
|
bgtu, beq, bne): Call h8300_expand_branch().
|
||||||
|
|
||||||
2004-02-18 Kazu Hirata <kazu@cs.umass.edu>
|
2004-02-18 Kazu Hirata <kazu@cs.umass.edu>
|
||||||
|
|
||||||
* config/h8300/h8300-protos.h: Add prototypes for
|
* config/h8300/h8300-protos.h: Add prototypes for
|
||||||
|
@ -45,6 +45,7 @@ extern const char *output_logical_op (enum machine_mode, rtx *);
|
|||||||
extern unsigned int compute_logical_op_length (enum machine_mode,
|
extern unsigned int compute_logical_op_length (enum machine_mode,
|
||||||
rtx *);
|
rtx *);
|
||||||
extern int compute_logical_op_cc (enum machine_mode, rtx *);
|
extern int compute_logical_op_cc (enum machine_mode, rtx *);
|
||||||
|
extern void h8300_expand_branch (enum rtx_code, rtx);
|
||||||
extern void expand_a_shift (enum machine_mode, int, rtx[]);
|
extern void expand_a_shift (enum machine_mode, int, rtx[]);
|
||||||
extern int h8300_shift_needs_scratch_p (int, enum machine_mode);
|
extern int h8300_shift_needs_scratch_p (int, enum machine_mode);
|
||||||
extern int expand_a_rotate (rtx[]);
|
extern int expand_a_rotate (rtx[]);
|
||||||
|
@ -2675,6 +2675,20 @@ compute_logical_op_cc (enum machine_mode mode, rtx *operands)
|
|||||||
return cc;
|
return cc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Expand a conditional branch. */
|
||||||
|
|
||||||
|
void
|
||||||
|
h8300_expand_branch (enum rtx_code code, rtx label)
|
||||||
|
{
|
||||||
|
rtx tmp;
|
||||||
|
|
||||||
|
tmp = gen_rtx_fmt_ee (code, VOIDmode, cc0_rtx, const0_rtx);
|
||||||
|
tmp = gen_rtx_IF_THEN_ELSE (VOIDmode, tmp,
|
||||||
|
gen_rtx_LABEL_REF (VOIDmode, label),
|
||||||
|
pc_rtx);
|
||||||
|
emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx, tmp));
|
||||||
|
}
|
||||||
|
|
||||||
/* Shifts.
|
/* Shifts.
|
||||||
|
|
||||||
We devote a fair bit of code to getting efficient shifts since we
|
We devote a fair bit of code to getting efficient shifts since we
|
||||||
|
@ -1566,94 +1566,54 @@
|
|||||||
;; Conditional jump instructions
|
;; Conditional jump instructions
|
||||||
|
|
||||||
(define_expand "ble"
|
(define_expand "ble"
|
||||||
[(set (pc)
|
[(match_operand 0 "" "")]
|
||||||
(if_then_else (le (cc0)
|
|
||||||
(const_int 0))
|
|
||||||
(label_ref (match_operand 0 "" ""))
|
|
||||||
(pc)))]
|
|
||||||
""
|
""
|
||||||
"")
|
"h8300_expand_branch (LE, operands[0]); DONE;")
|
||||||
|
|
||||||
(define_expand "bleu"
|
(define_expand "bleu"
|
||||||
[(set (pc)
|
[(match_operand 0 "" "")]
|
||||||
(if_then_else (leu (cc0)
|
|
||||||
(const_int 0))
|
|
||||||
(label_ref (match_operand 0 "" ""))
|
|
||||||
(pc)))]
|
|
||||||
""
|
""
|
||||||
"")
|
"h8300_expand_branch (LEU, operands[0]); DONE;")
|
||||||
|
|
||||||
(define_expand "bge"
|
(define_expand "bge"
|
||||||
[(set (pc)
|
[(match_operand 0 "" "")]
|
||||||
(if_then_else (ge (cc0)
|
|
||||||
(const_int 0))
|
|
||||||
(label_ref (match_operand 0 "" ""))
|
|
||||||
(pc)))]
|
|
||||||
""
|
""
|
||||||
"")
|
"h8300_expand_branch (GE, operands[0]); DONE;")
|
||||||
|
|
||||||
(define_expand "bgeu"
|
(define_expand "bgeu"
|
||||||
[(set (pc)
|
[(match_operand 0 "" "")]
|
||||||
(if_then_else (geu (cc0)
|
|
||||||
(const_int 0))
|
|
||||||
(label_ref (match_operand 0 "" ""))
|
|
||||||
(pc)))]
|
|
||||||
""
|
""
|
||||||
"")
|
"h8300_expand_branch (GEU, operands[0]); DONE;")
|
||||||
|
|
||||||
(define_expand "blt"
|
(define_expand "blt"
|
||||||
[(set (pc)
|
[(match_operand 0 "" "")]
|
||||||
(if_then_else (lt (cc0)
|
|
||||||
(const_int 0))
|
|
||||||
(label_ref (match_operand 0 "" ""))
|
|
||||||
(pc)))]
|
|
||||||
""
|
""
|
||||||
"")
|
"h8300_expand_branch (LT, operands[0]); DONE;")
|
||||||
|
|
||||||
(define_expand "bltu"
|
(define_expand "bltu"
|
||||||
[(set (pc)
|
[(match_operand 0 "" "")]
|
||||||
(if_then_else (ltu (cc0)
|
|
||||||
(const_int 0))
|
|
||||||
(label_ref (match_operand 0 "" ""))
|
|
||||||
(pc)))]
|
|
||||||
""
|
""
|
||||||
"")
|
"h8300_expand_branch (LTU, operands[0]); DONE;")
|
||||||
|
|
||||||
(define_expand "bgt"
|
(define_expand "bgt"
|
||||||
[(set (pc)
|
[(match_operand 0 "" "")]
|
||||||
(if_then_else (gt (cc0)
|
|
||||||
(const_int 0))
|
|
||||||
(label_ref (match_operand 0 "" ""))
|
|
||||||
(pc)))]
|
|
||||||
""
|
""
|
||||||
"")
|
"h8300_expand_branch (GT, operands[0]); DONE;")
|
||||||
|
|
||||||
(define_expand "bgtu"
|
(define_expand "bgtu"
|
||||||
[(set (pc)
|
[(match_operand 0 "" "")]
|
||||||
(if_then_else (gtu (cc0)
|
|
||||||
(const_int 0))
|
|
||||||
(label_ref (match_operand 0 "" ""))
|
|
||||||
(pc)))]
|
|
||||||
""
|
""
|
||||||
"")
|
"h8300_expand_branch (GTU, operands[0]); DONE;")
|
||||||
|
|
||||||
(define_expand "beq"
|
(define_expand "beq"
|
||||||
[(set (pc)
|
[(match_operand 0 "" "")]
|
||||||
(if_then_else (eq (cc0)
|
|
||||||
(const_int 0))
|
|
||||||
(label_ref (match_operand 0 "" ""))
|
|
||||||
(pc)))]
|
|
||||||
""
|
""
|
||||||
"")
|
"h8300_expand_branch (EQ, operands[0]); DONE;")
|
||||||
|
|
||||||
(define_expand "bne"
|
(define_expand "bne"
|
||||||
[(set (pc)
|
[(match_operand 0 "" "")]
|
||||||
(if_then_else (ne (cc0)
|
|
||||||
(const_int 0))
|
|
||||||
(label_ref (match_operand 0 "" ""))
|
|
||||||
(pc)))]
|
|
||||||
""
|
""
|
||||||
"")
|
"h8300_expand_branch (NE, operands[0]); DONE;")
|
||||||
|
|
||||||
(define_insn "branch_true"
|
(define_insn "branch_true"
|
||||||
[(set (pc)
|
[(set (pc)
|
||||||
|
Loading…
Reference in New Issue
Block a user