aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-03-05 19:17:43 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1994-03-05 19:17:43 -0500
commitacd94aaf191a1c09fe1154b58c7409a95846d6a5 (patch)
tree5ff287788f6befd41561b6830a90d00695be4228 /gcc
parent64609742de886744acea45f6f00589b4a055eb2b (diff)
downloadgcc-acd94aaf191a1c09fe1154b58c7409a95846d6a5.zip
gcc-acd94aaf191a1c09fe1154b58c7409a95846d6a5.tar.gz
gcc-acd94aaf191a1c09fe1154b58c7409a95846d6a5.tar.bz2
(SECONDARY_MEMORY_NEEDED_MODE): New macro.
From-SVN: r6698
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/alpha/alpha.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h
index 71d8953..ccb46c4 100644
--- a/gcc/config/alpha/alpha.h
+++ b/gcc/config/alpha/alpha.h
@@ -554,6 +554,15 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS,
#define SECONDARY_MEMORY_NEEDED(CLASS1,CLASS2,MODE) ((CLASS1) != (CLASS2))
+/* Specify the mode to be used for memory when a secondary memory
+ location is needed. If MODE is floating-point, use it. Otherwise,
+ widen to a word like the default. This is needed because we always
+ store integers in FP registers in quadword format. This whole
+ area is very tricky! */
+#define SECONDARY_MEMORY_NEEDED_MODE(MODE) \
+ (GET_MODE_CLASS (MODE) == MODE_FLOAT ? (MODE) \
+ : mode_for_size (BITS_PER_WORD, GET_MODE_CLASS (MODE), 0))
+
/* Return the maximum number of consecutive registers
needed to represent mode MODE in a register of class CLASS. */