Commit a9d1723f by DJ Delorie Committed by DJ Delorie

mep.c (mep_vliw_jmp_match): New function.

* config/mep/mep.c (mep_vliw_jmp_match): New function.
* config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
* config/mep/mep.md (sibcall_internal): Change test from
mep_vliw_mode_match to mep_vliw_jmp_match.
(sibcall_value_internal): Likewise.

From-SVN: r149644
parent 868e7c37
2009-07-14 DJ Delorie <dj@redhat.com>
* config/mep/mep.c (mep_vliw_jmp_match): New function.
* config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
* config/mep/mep.md (sibcall_internal): Change test from
mep_vliw_mode_match to mep_vliw_jmp_match.
(sibcall_value_internal): Likewise.
2009-07-14 Uros Bizjak <ubizjak@gmail.com> 2009-07-14 Uros Bizjak <ubizjak@gmail.com>
* config/i386/sse.md (copysign<mode>3): New expander. * config/i386/sse.md (copysign<mode>3): New expander.
......
...@@ -33,6 +33,7 @@ extern bool mep_allow_clip (rtx, rtx, int); ...@@ -33,6 +33,7 @@ extern bool mep_allow_clip (rtx, rtx, int);
extern bool mep_bit_position_p (rtx, bool); extern bool mep_bit_position_p (rtx, bool);
extern bool mep_split_mov (rtx *, int); extern bool mep_split_mov (rtx *, int);
extern bool mep_vliw_mode_match (rtx); extern bool mep_vliw_mode_match (rtx);
extern bool mep_vliw_jmp_match (rtx);
extern bool mep_multi_slot (rtx); extern bool mep_multi_slot (rtx);
extern bool mep_legitimate_address (enum machine_mode, rtx, int); extern bool mep_legitimate_address (enum machine_mode, rtx, int);
extern int mep_legitimize_address (rtx *, rtx, enum machine_mode); extern int mep_legitimize_address (rtx *, rtx, enum machine_mode);
......
...@@ -1182,6 +1182,20 @@ mep_vliw_mode_match (rtx tgt) ...@@ -1182,6 +1182,20 @@ mep_vliw_mode_match (rtx tgt)
return src_vliw == tgt_vliw; return src_vliw == tgt_vliw;
} }
/* Like the above, but also test for near/far mismatches. */
bool
mep_vliw_jmp_match (rtx tgt)
{
bool src_vliw = mep_vliw_function_p (cfun->decl);
bool tgt_vliw = INTVAL (tgt);
if (mep_section_tag (DECL_RTL (cfun->decl)) == 'f')
return false;
return src_vliw == tgt_vliw;
}
bool bool
mep_multi_slot (rtx x) mep_multi_slot (rtx x)
{ {
......
...@@ -1923,7 +1923,7 @@ ...@@ -1923,7 +1923,7 @@
] ]
"SIBLING_CALL_P (insn)" "SIBLING_CALL_P (insn)"
{ {
if (mep_vliw_mode_match (operands[2])) if (mep_vliw_jmp_match (operands[2]))
return "jmp\t%0"; return "jmp\t%0";
else else
return return
...@@ -1994,7 +1994,7 @@ ...@@ -1994,7 +1994,7 @@
] ]
"SIBLING_CALL_P (insn)" "SIBLING_CALL_P (insn)"
{ {
if (mep_vliw_mode_match (operands[3])) if (mep_vliw_jmp_match (operands[3]))
return "jmp\t%1"; return "jmp\t%1";
else else
return return
......
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