pa.h (reg_class): Add FPUPPER_REGS.
authorLutz Vieweg <lkv@mania.robin.de>
Wed, 6 Jan 1999 23:06:29 +0000 (23:06 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 6 Jan 1999 23:06:29 +0000 (16:06 -0700)
        * pa.h (reg_class): Add FPUPPER_REGS.
        (REG_CLASS_NAMES): Similarly.
        (REG_CLASS_CONTENTS): Similarly
        (REGNO_REG_CLASS): Handle FPUPPER_REGS.
        (FP_REG_CLASS_P): Likewise.
        (REG_CLASS_FROM_LETTER): Similarly.
        (CLASS_MAX_NREGS): Similarly.

From-SVN: r24546

gcc/ChangeLog
gcc/config/pa/pa.h

index 0afa05b..dc4f252 100644 (file)
@@ -1,3 +1,13 @@
+Thu Jan  7 00:01:38 1999  Lutz Vieweg <lkv@mania.robin.de>
+
+       * pa.h (reg_class): Add FPUPPER_REGS.
+       (REG_CLASS_NAMES): Similarly.
+       (REG_CLASS_CONTENTS): Similarly
+       (REGNO_REG_CLASS): Handle FPUPPER_REGS.
+       (FP_REG_CLASS_P): Likewise.
+       (REG_CLASS_FROM_LETTER): Similarly.
+       (CLASS_MAX_NREGS): Similarly.
+
 1999-01-06  Brendan Kehoe  <brendan@cygnus.com>
 
        * fixincludes: For HP/UX 10.20, also look in curses_colr/curses.h
index a0f9ff0..d25e0d2 100644 (file)
@@ -687,7 +687,7 @@ do {                                                                \
      1.1 fp regs, and the high 1.1 fp regs, to which the operands of
      fmpyadd and fmpysub are restricted.  */
 
-enum reg_class { NO_REGS, R1_REGS, GENERAL_REGS, FP_REGS, GENERAL_OR_FP_REGS,
+enum reg_class { NO_REGS, R1_REGS, GENERAL_REGS, FPUPPER_REGS, FP_REGS, GENERAL_OR_FP_REGS,
   SHIFT_REGS, ALL_REGS, LIM_REG_CLASSES};
 
 #define N_REG_CLASSES (int) LIM_REG_CLASSES
@@ -695,7 +695,7 @@ enum reg_class { NO_REGS, R1_REGS, GENERAL_REGS, FP_REGS, GENERAL_OR_FP_REGS,
 /* Give names of register classes as strings for dump file.   */
 
 #define REG_CLASS_NAMES \
-  {"NO_REGS", "R1_REGS", "GENERAL_REGS", "FP_REGS",                    \
+  {"NO_REGS", "R1_REGS", "GENERAL_REGS", "FPUPPER_REGS", "FP_REGS", \
    "GENERAL_OR_FP_REGS", "SHIFT_REGS", "ALL_REGS"}
 
 /* Define which registers fit in which classes.
@@ -707,6 +707,7 @@ enum reg_class { NO_REGS, R1_REGS, GENERAL_REGS, FP_REGS, GENERAL_OR_FP_REGS,
  {{0x00000000, 0x00000000, 0x00000000},        /* NO_REGS */                   \
   {0x00000002, 0x00000000, 0x00000000},        /* R1_REGS */                   \
   {0xfffffffe, 0x00000000, 0x00000000},        /* GENERAL_REGS */              \
+  {0x00000000, 0xff000000, 0x00ffffff},        /* FPUPPER_REGS */                      \
   {0x00000000, 0xffffffff, 0x00ffffff},        /* FP_REGS */                   \
   {0xfffffffe, 0xffffffff, 0x00ffffff},        /* GENERAL_OR_FP_REGS */        \
   {0x00000000, 0x00000000, 0x01000000},        /* SHIFT_REGS */                \
@@ -721,7 +722,8 @@ enum reg_class { NO_REGS, R1_REGS, GENERAL_REGS, FP_REGS, GENERAL_OR_FP_REGS,
   ((REGNO) == 0 ? NO_REGS                                              \
    : (REGNO) == 1 ? R1_REGS                                            \
    : (REGNO) < 32 ? GENERAL_REGS                                       \
-   : (REGNO) < 88 ? FP_REGS                                            \
+   : (REGNO) < 56 ? FP_REGS                                            \
+   : (REGNO) < 88 ? FPUPPER_REGS                                               \
    : SHIFT_REGS)
 
 /* The class value for index registers, and the one for base regs.  */
@@ -729,12 +731,13 @@ enum reg_class { NO_REGS, R1_REGS, GENERAL_REGS, FP_REGS, GENERAL_OR_FP_REGS,
 #define BASE_REG_CLASS GENERAL_REGS
 
 #define FP_REG_CLASS_P(CLASS) \
-  ((CLASS) == FP_REGS)
+  ((CLASS) == FP_REGS || (CLASS) == FPUPPER_REGS)
 
 /* Get reg_class from a letter such as appears in the machine description.  */
 /* Keep 'x' for backward compatibility with user asm.   */
 #define REG_CLASS_FROM_LETTER(C) \
   ((C) == 'f' ? FP_REGS :                                      \
+   (C) == 'y' ? FPUPPER_REGS :                                 \
    (C) == 'x' ? FP_REGS :                                      \
    (C) == 'q' ? SHIFT_REGS :                                   \
    (C) == 'a' ? R1_REGS :                                      \
@@ -808,7 +811,7 @@ int zdepi_cint_p ();
 /* Return the maximum number of consecutive registers
    needed to represent mode MODE in a register of class CLASS.  */
 #define CLASS_MAX_NREGS(CLASS, MODE)                                   \
-  (!TARGET_SNAKE && (CLASS) == FP_REGS ? 1 :                           \
+  (!TARGET_SNAKE && ((CLASS) == FP_REGS || (CLASS) == FPUPPER_REGS) ? 1 :                              \
    ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
 \f
 /* Stack layout; function entry, exit and calling.  */