From 548e44b3366c210afee8754753a82a8641118684 Mon Sep 17 00:00:00 2001 From: Lutz Vieweg Date: Wed, 6 Jan 1999 23:06:29 +0000 Subject: [PATCH] pa.h (reg_class): Add FPUPPER_REGS. * 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 | 10 ++++++++++ gcc/config/pa/pa.h | 13 ++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0afa05b..dc4f252 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +Thu Jan 7 00:01:38 1999 Lutz Vieweg + + * 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 * fixincludes: For HP/UX 10.20, also look in curses_colr/curses.h diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index a0f9ff0..d25e0d2 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -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)) /* Stack layout; function entry, exit and calling. */ -- 2.7.4