diff options
author | Joern Rennecke <amylaar@gcc.gnu.org> | 1996-10-28 14:06:28 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 1996-10-28 14:06:28 +0000 |
commit | 0f68f06bf4d93a68339490f45921d895a21e6d07 (patch) | |
tree | 177c8c78394bf7bfcb140c9db48f49bc4933369e /gcc | |
parent | 7f74cc8d2062ae68efbf5be2130c8474fc039260 (diff) | |
download | gcc-0f68f06bf4d93a68339490f45921d895a21e6d07.zip gcc-0f68f06bf4d93a68339490f45921d895a21e6d07.tar.gz gcc-0f68f06bf4d93a68339490f45921d895a21e6d07.tar.bz2 |
(SECONDARY_INPUT_RELOAD_CLASS): Define.
From-SVN: r13047
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/sh/sh.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 0d7a5c9..217ce5a 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -585,6 +585,21 @@ extern enum reg_class reg_class_from_letter[]; #define PREFERRED_RELOAD_CLASS(X, CLASS) CLASS +/* ??? Should make FPUL register a nn-fixed register and make it's + use explicit in the rtl; then change this definition here to + ... ? FPUL_REGS : NO_REGS) . */ +#define SECONDARY_OUTPUT_RELOAD_CLASS(CLASS,MODE,X) \ + ((((CLASS == FP_REGS || CLASS == FP0_REGS) \ + && GET_CODE (X) == REG && REGNO (X) <= AP_REG) \ + || (CLASS == GENERAL_REGS && GET_CODE (X) == REG \ + && REGNO (X) <= FIRST_FP_REG && REGNO (X) >= LAST_FP_REG)) \ + ? /* FPUL_REGS */ NO_REGS : NO_REGS) + +#define SECONDARY_INPUT_RELOAD_CLASS(CLASS,MODE,X) \ + (((CLASS == FP_REGS || CLASS == FP0_REGS) && immediate_operand (X, MODE)\ + && ! (fp_one_operand (X) || fp_one_operand (X))) \ + ? R0_REGS : SECONDARY_OUTPUT_RELOAD_CLASS(CLASS,MODE,X)) + /* Return the maximum number of consecutive registers needed to represent mode MODE in a register of class CLASS. |