aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1993-03-17 14:01:25 -0700
committerJeff Law <law@gcc.gnu.org>1993-03-17 14:01:25 -0700
commit6b0ae684af62be7ca8682388b263a475b09dce8a (patch)
tree15c1c86465bd496d5c6045675cf04c7092f04908
parenta9a54fe80d50adac44457f49bc0b67524ed04c05 (diff)
downloadgcc-6b0ae684af62be7ca8682388b263a475b09dce8a.zip
gcc-6b0ae684af62be7ca8682388b263a475b09dce8a.tar.gz
gcc-6b0ae684af62be7ca8682388b263a475b09dce8a.tar.bz2
pa.h (SECONDARY_MEMORY_NEEDED): Define.
* pa.h (SECONDARY_MEMORY_NEEDED): Define. (SECONDARY_MEMORY_NEEDED_RTX): Define. From-SVN: r3766
-rw-r--r--gcc/config/pa/pa.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
index e50ce45..d2550cb 100644
--- a/gcc/config/pa/pa.h
+++ b/gcc/config/pa/pa.h
@@ -600,6 +600,16 @@ enum reg_class { NO_REGS, R1_REGS, GENERAL_REGS, FP_REGS, GENERAL_OR_FP_REGS,
#define SECONDARY_RELOAD_CLASS(CLASS,MODE,IN) \
secondary_reload_class (CLASS, MODE, IN)
+/* On the PA it is not possible to directly move data between
+ GENERAL_REGS and FP_REGS. */
+#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \
+ ((FP_REG_CLASS_P (CLASS1) && ! FP_REG_CLASS_P (CLASS2)) \
+ || (! FP_REG_CLASS_P (CLASS1) && FP_REG_CLASS_P (CLASS2)))
+
+/* Return the stack location to use for secondary memory needed reloads. */
+#define SECONDARY_MEMORY_NEEDED_RTX(MODE) \
+ gen_rtx (MEM, MODE, gen_rtx (PLUS, Pmode, stack_pointer_rtx, GEN_INT (-16)))
+
/* Return the maximum number of consecutive registers
needed to represent mode MODE in a register of class CLASS. */
#define CLASS_MAX_NREGS(CLASS, MODE) \