From 056a4e5a5d1dae8c0c2722a4c2f8be0154d26268 Mon Sep 17 00:00:00 2001 From: wilson Date: Mon, 3 May 2010 20:43:19 +0000 Subject: [PATCH] * config/mips/mips.c (mips_output_division): When GENERATE_DIVIDE_TRAPS, emit the trap instruction before the divide for TUNE_74K. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159004 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/mips/mips.c | 17 ++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 727f89724ce..a3b1c94c4e6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-05-03 David Ung + James E. Wilson + + * config/mip/mips.c (mips_output_division): When GENERATE_DIVIDE_TRAPS, + emit the trap instruction before the divide for TUNE_74K. + 2010-05-03 Steven Bosscher * doc/tm.texi (defmac SMALL_REGISTER_CLASSES): Remove. diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index e246981222e..345645dbb25 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -1,6 +1,6 @@ /* Subroutines used for MIPS code generation. Copyright (C) 1989, 1990, 1991, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by A. Lichnewsky, lich@inria.inria.fr. Changes by Michael Meissner, meissner@osf.org. @@ -11817,10 +11817,17 @@ mips_output_division (const char *division, rtx *operands) s = "bnez\t%2,1f\n\tbreak\t7\n1:"; } else if (GENERATE_DIVIDE_TRAPS) - { - output_asm_insn (s, operands); - s = "teq\t%2,%.,7"; - } + { + /* Avoid long replay penalty on load miss by putting the trap before + the divide. */ + if (TUNE_74K) + output_asm_insn ("teq\t%2,%.,7", operands); + else + { + output_asm_insn (s, operands); + s = "teq\t%2,%.,7"; + } + } else { output_asm_insn ("%(bne\t%2,%.,1f", operands); -- 2.11.4.GIT