This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[mep] further refinements of cross-vliw jumps
- From: DJ Delorie <dj at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 14 Jul 2009 18:35:07 -0400
- Subject: [mep] further refinements of cross-vliw jumps
Committed.
* config/mep/mep.md (sibcall_internal): Include non-toggling
non-jmp case.
(sibcall_value_internal): Likewise.
Index: config/mep/mep.md
===================================================================
--- config/mep/mep.md (revision 149644)
+++ config/mep/mep.md (working copy)
@@ -1922,12 +1922,16 @@
(clobber (reg:SI REGSAVE_CONTROL_TEMP))
]
"SIBLING_CALL_P (insn)"
{
if (mep_vliw_jmp_match (operands[2]))
return "jmp\t%0";
+ else if (mep_vliw_mode_match (operands[2]))
+ return
+ "movu $11, %0\n\
+ jmp $11";
else
return
"ldc $12, $lp\n\
movh $11, %%hi(%0)\n\
xor3 $12, $12, 1\n\
add3 $11, $11, %%lo(%0+1)\n\
@@ -1993,12 +1997,16 @@
(clobber (reg:SI REGSAVE_CONTROL_TEMP))
]
"SIBLING_CALL_P (insn)"
{
if (mep_vliw_jmp_match (operands[3]))
return "jmp\t%1";
+ else if (mep_vliw_mode_match (operands[3]))
+ return
+ "movu $11, %1\n\
+ jmp $11";
else
return
"ldc $12, $lp\n\
movh $11, %%hi(%1)\n\
xor3 $12, $12, 1\n\
add3 $11, $11, %%lo(%1+1)\n\