aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-01-13 06:00:57 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1994-01-13 06:00:57 -0500
commit9f7287cd93b2472aa761b9c26302c70167ada35e (patch)
treeb2f9f1d44cb8709e6e4cfd86ceaba52c93c21931
parent3450f7ba602421ce9fd4f61b8aba38ee21ea7ec1 (diff)
downloadgcc-9f7287cd93b2472aa761b9c26302c70167ada35e.zip
gcc-9f7287cd93b2472aa761b9c26302c70167ada35e.tar.gz
gcc-9f7287cd93b2472aa761b9c26302c70167ada35e.tar.bz2
(REG_CLASS_CONTENTS): Fix problems with last word of register set in
some classes. (MEMORY_MOVE_COST): New macro. From-SVN: r6388
-rw-r--r--gcc/config/a29k/a29k.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/gcc/config/a29k/a29k.h b/gcc/config/a29k/a29k.h
index cc32cc9..6e923e7 100644
--- a/gcc/config/a29k/a29k.h
+++ b/gcc/config/a29k/a29k.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler, for AMD Am29000 CPU.
- Copyright (C) 1988, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
+ Copyright (C) 1988, 90, 91, 92, 93, 1994 Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@nyu.edu)
This file is part of GNU CC.
@@ -525,7 +525,7 @@ enum reg_class { NO_REGS, LR0_REGS, GENERAL_REGS, BP_REGS, FC_REGS, CR_REGS,
#define REG_CLASS_CONTENTS \
{ {0, 0, 0, 0, 0, 0, 0, 0}, \
{0, 1, 0, 0, 0, 0, 0, 0}, \
- {~0, ~0, ~0, ~0, ~0, ~ 0xfffe0000, ~ 0xfff, 0xfffff}, \
+ {~0, ~0, ~0, ~0, ~0, ~ 0xfffe0000, ~ 0xfff, 0xfff}, \
{0, 0, 0, 0, 0, 0x20000, 0, 0}, \
{0, 0, 0, 0, 0, 0x40000, 0, 0}, \
{0, 0, 0, 0, 0, 0x80000, 0, 0}, \
@@ -533,8 +533,8 @@ enum reg_class { NO_REGS, LR0_REGS, GENERAL_REGS, BP_REGS, FC_REGS, CR_REGS,
{0, 0, 0, 0, 0, 0xfffe0000, 0xff, 0}, \
{0, 0, 0, 0, 0, 0, 0x100, 0}, \
{0, 0, 0, 0, 0, 0, 0xf00, 0}, \
- {~0, ~0, ~0, ~0, ~0, ~ 0xfffe0000, ~ 0xff, ~0}, \
- {~0, ~0, ~0, ~0, ~0, ~0, ~0, ~0} }
+ {~0, ~0, ~0, ~0, ~0, ~ 0xfffe0000, ~ 0xff, 0xfff}, \
+ {~0, ~0, ~0, ~0, ~0, ~0, ~0, 0xfff} }
/* The same information, inverted:
Return the class number of the smallest class containing
@@ -661,6 +661,15 @@ extern struct rtx_def *a29k_get_reloaded_address ();
#define REGISTER_MOVE_COST(CLASS1, CLASS2) \
((CLASS1) == GENERAL_REGS || (CLASS2) == GENERAL_REGS ? 2 : 4)
+/* A C expressions returning the cost of moving data of MODE from a register to
+ or from memory.
+
+ It takes extra insns on the 29k to form addresses, so we want to make
+ this higher. In addition, we need to keep it more expensive than the
+ most expensive register-register copy. */
+
+#define MEMORY_MOVE_COST(MODE) 6
+
/* A C statement (sans semicolon) to update the integer variable COST
based on the relationship between INSN that is dependent on
DEP_INSN through the dependence LINK. The default is to make no