From edc8f76e73316b8c23b29e7e75eb4aa486d65f46 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Tue, 2 Jun 1998 20:54:35 +0000 Subject: [PATCH] * config/tc-mips.c (macro): For div and udiv, close the reorder block as soon as possible. --- gas/ChangeLog | 5 +++++ gas/config/tc-mips.c | 20 +++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 4b7c34fdbb3..8f831da3c85 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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 From Matt Semersky : diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 8dcd4b05e5a..869fdf23db1 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -3998,13 +3998,22 @@ macro (ip) (int) BFD_RELOC_HI16); } 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 { expr1.X_add_number = 8; macro_build ((char *) NULL, &icnt, &expr1, "bne", "s,t,p", sreg, AT); 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 */ if (mips_5900) macro_build ((char *) NULL, &icnt, NULL, "break", "B", 6); @@ -4012,7 +4021,6 @@ macro (ip) /* end-sanitize-r5900 */ macro_build ((char *) NULL, &icnt, NULL, "break", "c", 6); } - --mips_opts.noreorder; macro_build ((char *) NULL, &icnt, NULL, s, "d", dreg); break; @@ -4121,12 +4129,19 @@ macro (ip) { macro_build ((char *) NULL, &icnt, NULL, "teq", "s,t", treg, 0); 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 { expr1.X_add_number = 8; macro_build ((char *) NULL, &icnt, &expr1, "bne", "s,t,p", treg, 0); 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 */ if (mips_5900) macro_build ((char *) NULL, &icnt, NULL, "break", "B", 7); @@ -4134,7 +4149,6 @@ macro (ip) /* end-sanitize-r5900 */ macro_build ((char *) NULL, &icnt, NULL, "break", "c", 7); } - --mips_opts.noreorder; macro_build ((char *) NULL, &icnt, NULL, s2, "d", dreg); return; -- 2.30.2