From 0f68f06bf4d93a68339490f45921d895a21e6d07 Mon Sep 17 00:00:00 2001 From: Joern Rennecke Date: Mon, 28 Oct 1996 14:06:28 +0000 Subject: [PATCH] (SECONDARY_INPUT_RELOAD_CLASS): Define. From-SVN: r13047 --- gcc/config/sh/sh.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 0d7a5c9c7e04..217ce5ad9392 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.