alpha.h (enum reg_class): Add PV_REG.
authorRichard Henderson <rth@redhat.com>
Fri, 27 Oct 2000 21:30:52 +0000 (14:30 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 27 Oct 2000 21:30:52 +0000 (14:30 -0700)
        * config/alpha/alpha.h (enum reg_class): Add PV_REG.
        (REG_CLASS_NAMES, REG_CLASS_CONTENTS, REGNO_REG_CLASS): Update.
        (REG_CLASS_FROM_LETTER): Assign it to 'c'.
        * config/alpha/alpha.md (call_osf_1): Use it.
        (call_value_osf_1): Likewise.

From-SVN: r37091

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

index 39e1ff39ac8c43ae53411f1dc4477ca1c3677d02..db875db9d3f9f3803be7628120132a0e8f9e9448 100644 (file)
@@ -1,5 +1,11 @@
 2000-10-27  Richard Henderson  <rth@redhat.com>
 
+       * config/alpha/alpha.h (enum reg_class): Add PV_REG.
+       (REG_CLASS_NAMES, REG_CLASS_CONTENTS, REGNO_REG_CLASS): Update.
+       (REG_CLASS_FROM_LETTER): Assign it to 'c'.
+       * config/alpha/alpha.md (call_osf_1): Use it.
+       (call_value_osf_1): Likewise.
+
        * config/ia64/ia64.c: Revert 10-23 patch.
        (ia64_hard_regno_rename_ok): New.
        * config/ia64/ia64-protos.h: Declare it.
index 4d5729e51f2492017234486adfbe4f3911dc751d..428bd47403e0718911ffd37a132ee0200bd11717 100644 (file)
@@ -719,7 +719,7 @@ extern const char *alpha_mlat_string;       /* For -mmemory-latency= */
    For any two classes, it is very desirable that there be another
    class that represents their union.  */
    
-enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS,
+enum reg_class { NO_REGS, PV_REG, GENERAL_REGS, FLOAT_REGS, ALL_REGS,
                 LIM_REG_CLASSES };
 
 #define N_REG_CLASSES (int) LIM_REG_CLASSES
@@ -727,22 +727,24 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS,
 /* Give names of register classes as strings for dump file.   */
 
 #define REG_CLASS_NAMES                                \
- {"NO_REGS", "GENERAL_REGS", "FLOAT_REGS", "ALL_REGS" }
+ {"NO_REGS", "PV_REG", "GENERAL_REGS", "FLOAT_REGS", "ALL_REGS" }
 
 /* Define which registers fit in which classes.
    This is an initializer for a vector of HARD_REG_SET
    of length N_REG_CLASSES.  */
 
 #define REG_CLASS_CONTENTS     \
-  { {0, 0}, {~0, 0x80000000}, {0, 0x7fffffff}, {~0, ~0} }
+  { {0, 0}, {0x08000000, 0}, {~0, 0x80000000}, {0, 0x7fffffff}, {~0, ~0} }
 
 /* The same information, inverted:
    Return the class number of the smallest class containing
    reg number REGNO.  This could be a conditional expression
    or could index an array.  */
 
-#define REGNO_REG_CLASS(REGNO) \
- ((REGNO) >= 32 && (REGNO) <= 62 ? FLOAT_REGS : GENERAL_REGS)
+#define REGNO_REG_CLASS(REGNO)                 \
+ ((REGNO) == 27 ? PV_REG                       \
+  : (REGNO) >= 32 && (REGNO) <= 62 ? FLOAT_REGS        \
+  : GENERAL_REGS)
 
 /* The class value for index registers, and the one for base regs.  */
 #define INDEX_REG_CLASS NO_REGS
@@ -751,7 +753,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS,
 /* Get reg_class from a letter such as appears in the machine description.  */
 
 #define REG_CLASS_FROM_LETTER(C)       \
- ((C) == 'f' ? FLOAT_REGS : NO_REGS)
+ ((C) == 'c' ? PV_REG : (C) == 'f' ? FLOAT_REGS : NO_REGS)
 
 /* Define this macro to change register usage conditional on target flags.  */
 /* #define CONDITIONAL_REGISTER_USAGE  */
index 4fcaaecd11ff5c1d40003cf0cfd3a7f61c44d622..eb1c2e5e1d920a01073674279e98ebbeb1072ec8 100644 (file)
 }")
 
 (define_insn "*call_osf_1"
-  [(call (mem:DI (match_operand:DI 0 "call_operand" "r,R,i"))
+  [(call (mem:DI (match_operand:DI 0 "call_operand" "c,R,i"))
         (match_operand 1 "" ""))
    (clobber (reg:DI 27))
    (clobber (reg:DI 26))]
 
 (define_insn "*call_value_osf_1"
   [(set (match_operand 0 "" "")
-       (call (mem:DI (match_operand:DI 1 "call_operand" "r,R,i"))
+       (call (mem:DI (match_operand:DI 1 "call_operand" "c,R,i"))
              (match_operand 2 "" "")))
    (clobber (reg:DI 27))
    (clobber (reg:DI 26))]