mips-protos.h (mips_output_load_label): Declare.
* config/mips/mips-protos.h (mips_output_load_label): Declare. * config/mips/mips.c (mips_output_load_label): New function. (mips_output_conditional_branch): Use it. * config/mips/mips.md (jump): And here. From-SVN: r67220
This commit is contained in:
parent
39d85b61e3
commit
c8520e562e
@ -1,3 +1,10 @@
|
|||||||
|
2003-05-29 Richard Sandiford <rsandifo@redhat.com>
|
||||||
|
|
||||||
|
* config/mips/mips-protos.h (mips_output_load_label): Declare.
|
||||||
|
* config/mips/mips.c (mips_output_load_label): New function.
|
||||||
|
(mips_output_conditional_branch): Use it.
|
||||||
|
* config/mips/mips.md (jump): And here.
|
||||||
|
|
||||||
2003-05-28 Bob Wilson <bob.wilson@acm.org>
|
2003-05-28 Bob Wilson <bob.wilson@acm.org>
|
||||||
|
|
||||||
* config/xtensa/xtensa-protos.h (smalloffset_double_mem_p): Delete.
|
* config/xtensa/xtensa-protos.h (smalloffset_double_mem_p): Delete.
|
||||||
|
@ -108,6 +108,7 @@ extern void print_operand_address PARAMS ((FILE *, rtx));
|
|||||||
extern void print_operand PARAMS ((FILE *, rtx, int));
|
extern void print_operand PARAMS ((FILE *, rtx, int));
|
||||||
extern struct rtx_def * embedded_pic_offset PARAMS ((rtx));
|
extern struct rtx_def * embedded_pic_offset PARAMS ((rtx));
|
||||||
extern int build_mips16_call_stub PARAMS ((rtx, rtx, rtx, int));
|
extern int build_mips16_call_stub PARAMS ((rtx, rtx, rtx, int));
|
||||||
|
extern const char *mips_output_load_label PARAMS ((void));
|
||||||
extern const char *mips_output_conditional_branch PARAMS ((rtx, rtx *,
|
extern const char *mips_output_conditional_branch PARAMS ((rtx, rtx *,
|
||||||
int, int, int,
|
int, int, int,
|
||||||
int));
|
int));
|
||||||
|
@ -9932,6 +9932,35 @@ mips_adjust_insn_length (insn, length)
|
|||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Return an asm sequence to start a noat block and load the address
|
||||||
|
of a label into $1. */
|
||||||
|
|
||||||
|
const char *
|
||||||
|
mips_output_load_label ()
|
||||||
|
{
|
||||||
|
if (TARGET_EXPLICIT_RELOCS)
|
||||||
|
switch (mips_abi)
|
||||||
|
{
|
||||||
|
case ABI_N32:
|
||||||
|
return "%[lw\t%@,%%got_page(%0)(%+)\n\taddiu\t%@,%@,%%got_ofst(%0)";
|
||||||
|
|
||||||
|
case ABI_64:
|
||||||
|
return "%[ld\t%@,%%got_page(%0)(%+)\n\tdaddiu\t%@,%@,%%got_ofst(%0)";
|
||||||
|
|
||||||
|
default:
|
||||||
|
return "%[lw\t%@,%%got(%0)(%+)\n\taddiu\t%@,%@,%%lo(%0)";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (Pmode == DImode)
|
||||||
|
return "%[dla\t%@,%0";
|
||||||
|
else
|
||||||
|
return "%[la\t%@,%0";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Output assembly instructions to peform a conditional branch.
|
/* Output assembly instructions to peform a conditional branch.
|
||||||
|
|
||||||
INSN is the branch instruction. OPERANDS[0] is the condition.
|
INSN is the branch instruction. OPERANDS[0] is the condition.
|
||||||
@ -10125,10 +10154,8 @@ mips_output_conditional_branch (insn,
|
|||||||
output_asm_insn ("j\t%0", &orig_target);
|
output_asm_insn ("j\t%0", &orig_target);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Pmode == DImode)
|
output_asm_insn (mips_output_load_label (), &orig_target);
|
||||||
output_asm_insn ("%[dla\t%@,%0\n\tjr\t%@%]", &orig_target);
|
output_asm_insn ("jr\t%@%]", 0);
|
||||||
else
|
|
||||||
output_asm_insn ("%[la\t%@,%0\n\tjr\t%@%]", &orig_target);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (length != 16 && length != 28 && mips_branch_likely)
|
if (length != 16 && length != 28 && mips_branch_likely)
|
||||||
|
@ -9350,10 +9350,11 @@ move\\t%0,%z4\\n\\
|
|||||||
{
|
{
|
||||||
if (get_attr_length (insn) <= 8)
|
if (get_attr_length (insn) <= 8)
|
||||||
return \"%*b\\t%l0\";
|
return \"%*b\\t%l0\";
|
||||||
else if (Pmode == DImode)
|
|
||||||
return \"%[dla\\t%@,%l0\;%*jr\\t%@%]\";
|
|
||||||
else
|
else
|
||||||
return \"%[la\\t%@,%l0\;%*jr\\t%@%]\";
|
{
|
||||||
|
output_asm_insn (mips_output_load_label (), operands);
|
||||||
|
return \"%*jr\\t%@%]\";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return \"%*j\\t%l0\";
|
return \"%*j\\t%l0\";
|
||||||
|
Loading…
Reference in New Issue
Block a user