From 6c4b811d6aa61afa9afa247eb480aec55b341108 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Thu, 15 Jan 1998 00:08:12 +0000 Subject: [PATCH] * config/tc-mips.c (macro): Rework division code to avoid unfilled delay slot. --- gas/ChangeLog | 5 +++++ gas/config/tc-mips.c | 22 ++++++++++++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 74194bd..b83f30e 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +Wed Jan 14 15:41:41 1998 Jeffrey A Law (law@cygnus.com) + + * config/tc-mips.c (macro): Rework division code to avoid unfilled + delay slot. + start-sanitize-d30v Wed Jan 14 18:04:20 1998 Michael Meissner diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index e2bf296..33d1a68 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -3864,16 +3864,20 @@ macro (ip) mips_emit_delays (true); ++mips_opts.noreorder; mips_any_noreorder = 1; - macro_build ((char *) NULL, &icnt, NULL, - dbl ? "ddiv" : "div", - "z,s,t", sreg, treg); if (mips_trap) - 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, + dbl ? "ddiv" : "div", + "z,s,t", sreg, treg); + } else { expr1.X_add_number = 8; macro_build ((char *) NULL, &icnt, &expr1, "bne", "s,t,p", treg, 0); - macro_build ((char *) NULL, &icnt, NULL, "nop", "", 0); + macro_build ((char *) NULL, &icnt, NULL, + dbl ? "ddiv" : "div", + "z,s,t", sreg, treg); macro_build ((char *) NULL, &icnt, NULL, "break", "c", 7); } expr1.X_add_number = -1; @@ -4005,14 +4009,16 @@ macro (ip) mips_emit_delays (true); ++mips_opts.noreorder; mips_any_noreorder = 1; - macro_build ((char *) NULL, &icnt, NULL, s, "z,s,t", sreg, treg); if (mips_trap) - 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); + } else { expr1.X_add_number = 8; macro_build ((char *) NULL, &icnt, &expr1, "bne", "s,t,p", treg, 0); - macro_build ((char *) NULL, &icnt, NULL, "nop", "", 0); + macro_build ((char *) NULL, &icnt, NULL, s, "z,s,t", sreg, treg); macro_build ((char *) NULL, &icnt, NULL, "break", "c", 7); } --mips_opts.noreorder; -- 2.7.4