]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
alpha.h (HARD_REGNO_MODE_OK): Allow only 4 and 8 byte unit modes in FP regs.
authorRichard Henderson <rth@cygnus.com>
Wed, 17 Mar 1999 14:49:22 +0000 (06:49 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 17 Mar 1999 14:49:22 +0000 (06:49 -0800)
        * alpha.h (HARD_REGNO_MODE_OK): Allow only 4 and 8 byte unit modes
        in FP regs.
        (MODES_TIEABLE_P): Define asymmetricly wrt modes illegal in FP regs.

From-SVN: r25825

gcc/ChangeLog
gcc/config/alpha/alpha.h

index d4d97d8451e353176e81dc8904066483ef9aba80..3d8f5fe8c4459d58736baa2d1e147231360544e6 100644 (file)
@@ -1,3 +1,9 @@
+Wed Mar 17 14:51:19 1999  Richard Henderson  <rth@cygnus.com>
+
+       * alpha.h (HARD_REGNO_MODE_OK): Allow only 4 and 8 byte unit modes
+       in FP regs.
+       (MODES_TIEABLE_P): Define asymmetricly wrt modes illegal in FP regs.
+
 Wed Mar 17 14:41:41 1999  Nick Clifton  <nickc@cygnus.com>
 
        * config/arm/aout.h (ASM_GENERATE_INTERNAL_LABEL): Fix compile
index 3e119a70afdd54e2b0ba3c655557e5f95d6945df..4587bbf96f0d708dbeb868f2fb27921a0cebd067 100644 (file)
@@ -622,17 +622,20 @@ extern void override_options ();
    registers can hold 32-bit and 64-bit integers as well, but not 16-bit
    or 8-bit values.  */
 
-#define HARD_REGNO_MODE_OK(REGNO, MODE)                        \
-  ((REGNO) < 32 || ((MODE) != QImode && (MODE) != HImode))
+#define HARD_REGNO_MODE_OK(REGNO, MODE)                                \
+  ((REGNO) >= 32 && (REGNO) <= 62                                      \
+   ? GET_MODE_UNIT_SIZE (MODE) == 8 || GET_MODE_UNIT_SIZE (MODE) == 4  \
+   : 1)
+
+/* A C expression that is nonzero if a value of mode
+   MODE1 is accessible in mode MODE2 without copying.
 
-/* Value is 1 if it is a good idea to tie two pseudo registers
-   when one has mode MODE1 and one has mode MODE2.
-   If HARD_REGNO_MODE_OK could produce different values for MODE1 and MODE2,
-   for any hard reg, then this must be 0 for correct output.  */
+   This asymmetric test is true when MODE1 could be put
+   in an FP register but MODE2 could not.  */
 
 #define MODES_TIEABLE_P(MODE1, MODE2)                          \
-  ((MODE1) == QImode || (MODE1) == HImode                      \
-   ? (MODE2) == QImode || (MODE2) == HImode                    \
+  (HARD_REGNO_MODE_OK (32, (MODE1))                            \
+   ? HARD_REGNO_MODE_OK (32, (MODE2))                          \
    : 1)
 
 /* Specify the registers used for certain standard purposes.