diff options
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-mips.c | 20 |
2 files changed, 22 insertions, 3 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 4b7c34f..8f831da 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 <ian@cygnus.com> From Matt Semersky <matts@scd.hp.com>: diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 8dcd4b0..869fdf2 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; |