mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 07:08:01 +08:00
* config/tc-mips.c (macro): For div and udiv, close the
reorder block as soon as possible.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
Tue Jun 2 14:52:56 1998 Jeffrey A Law (law@cygnus.com)
|
||||||
|
|
||||||
|
* config/tc-mips.c (macro): For div and udiv, close the
|
||||||
|
reorder block as soon as possible.
|
||||||
|
|
||||||
Tue Jun 2 15:36:13 1998 Ian Lance Taylor <ian@cygnus.com>
|
Tue Jun 2 15:36:13 1998 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
From Matt Semersky <matts@scd.hp.com>:
|
From Matt Semersky <matts@scd.hp.com>:
|
||||||
|
@ -3998,13 +3998,22 @@ macro (ip)
|
|||||||
(int) BFD_RELOC_HI16);
|
(int) BFD_RELOC_HI16);
|
||||||
}
|
}
|
||||||
if (mips_trap)
|
if (mips_trap)
|
||||||
macro_build ((char *) NULL, &icnt, NULL, "teq", "s,t", sreg, AT);
|
{
|
||||||
|
macro_build ((char *) NULL, &icnt, NULL, "teq", "s,t", sreg, AT);
|
||||||
|
/* We want to close the noreorder block as soon as possible, so
|
||||||
|
that later insns are available for delay slot filling. */
|
||||||
|
--mips_opts.noreorder;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
expr1.X_add_number = 8;
|
expr1.X_add_number = 8;
|
||||||
macro_build ((char *) NULL, &icnt, &expr1, "bne", "s,t,p", sreg, AT);
|
macro_build ((char *) NULL, &icnt, &expr1, "bne", "s,t,p", sreg, AT);
|
||||||
macro_build ((char *) NULL, &icnt, NULL, "nop", "", 0);
|
macro_build ((char *) NULL, &icnt, NULL, "nop", "", 0);
|
||||||
|
|
||||||
|
/* We want to close the noreorder block as soon as possible, so
|
||||||
|
that later insns are available for delay slot filling. */
|
||||||
|
--mips_opts.noreorder;
|
||||||
|
|
||||||
/* start-sanitize-r5900 */
|
/* start-sanitize-r5900 */
|
||||||
if (mips_5900)
|
if (mips_5900)
|
||||||
macro_build ((char *) NULL, &icnt, NULL, "break", "B", 6);
|
macro_build ((char *) NULL, &icnt, NULL, "break", "B", 6);
|
||||||
@ -4012,7 +4021,6 @@ macro (ip)
|
|||||||
/* end-sanitize-r5900 */
|
/* end-sanitize-r5900 */
|
||||||
macro_build ((char *) NULL, &icnt, NULL, "break", "c", 6);
|
macro_build ((char *) NULL, &icnt, NULL, "break", "c", 6);
|
||||||
}
|
}
|
||||||
--mips_opts.noreorder;
|
|
||||||
macro_build ((char *) NULL, &icnt, NULL, s, "d", dreg);
|
macro_build ((char *) NULL, &icnt, NULL, s, "d", dreg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4121,12 +4129,19 @@ macro (ip)
|
|||||||
{
|
{
|
||||||
macro_build ((char *) NULL, &icnt, NULL, "teq", "s,t", treg, 0);
|
macro_build ((char *) NULL, &icnt, NULL, "teq", "s,t", treg, 0);
|
||||||
macro_build ((char *) NULL, &icnt, NULL, s, "z,s,t", sreg, treg);
|
macro_build ((char *) NULL, &icnt, NULL, s, "z,s,t", sreg, treg);
|
||||||
|
/* We want to close the noreorder block as soon as possible, so
|
||||||
|
that later insns are available for delay slot filling. */
|
||||||
|
--mips_opts.noreorder;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
expr1.X_add_number = 8;
|
expr1.X_add_number = 8;
|
||||||
macro_build ((char *) NULL, &icnt, &expr1, "bne", "s,t,p", treg, 0);
|
macro_build ((char *) NULL, &icnt, &expr1, "bne", "s,t,p", treg, 0);
|
||||||
macro_build ((char *) NULL, &icnt, NULL, s, "z,s,t", sreg, treg);
|
macro_build ((char *) NULL, &icnt, NULL, s, "z,s,t", sreg, treg);
|
||||||
|
|
||||||
|
/* We want to close the noreorder block as soon as possible, so
|
||||||
|
that later insns are available for delay slot filling. */
|
||||||
|
--mips_opts.noreorder;
|
||||||
/* start-sanitize-r5900 */
|
/* start-sanitize-r5900 */
|
||||||
if (mips_5900)
|
if (mips_5900)
|
||||||
macro_build ((char *) NULL, &icnt, NULL, "break", "B", 7);
|
macro_build ((char *) NULL, &icnt, NULL, "break", "B", 7);
|
||||||
@ -4134,7 +4149,6 @@ macro (ip)
|
|||||||
/* end-sanitize-r5900 */
|
/* end-sanitize-r5900 */
|
||||||
macro_build ((char *) NULL, &icnt, NULL, "break", "c", 7);
|
macro_build ((char *) NULL, &icnt, NULL, "break", "c", 7);
|
||||||
}
|
}
|
||||||
--mips_opts.noreorder;
|
|
||||||
macro_build ((char *) NULL, &icnt, NULL, s2, "d", dreg);
|
macro_build ((char *) NULL, &icnt, NULL, s2, "d", dreg);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user