From 4de54e922f4123559dba5215e0cd160dd7bcd264 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Wed, 17 Feb 1993 23:32:16 +0000 Subject: [PATCH] (CONST_COSTS): Updated to better reflect the actual constant costs on a we32k. (GO_IF_LEGITIMATE_ADDRESS): Added support for deferred addressing. From-SVN: r3482 --- gcc/config/we32k/we32k.h | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/gcc/config/we32k/we32k.h b/gcc/config/we32k/we32k.h index 05fb13dd3b4..974b8e603f2 100644 --- a/gcc/config/we32k/we32k.h +++ b/gcc/config/we32k/we32k.h @@ -580,10 +580,14 @@ enum reg_class { NO_REGS, GENERAL_REGS, #define GO_IF_LEGITIMATE_ADDRESS(MODE, X, LABEL) \ { register rtx Addr = X; \ - if (REG_P(Addr) && REG_OK_FOR_BASE_P(Addr)) \ - goto LABEL; \ + if ((MODE) == QImode || (MODE) == HImode || \ + (MODE) == PSImode || (MODE) == SImode || (MODE) == SFmode) \ + if (GET_CODE(Addr) == MEM) \ + Addr = XEXP(Addr, 0); \ if (CONSTANT_ADDRESS_P(Addr)) \ goto LABEL; \ + if (REG_P(Addr) && REG_OK_FOR_BASE_P(Addr)) \ + goto LABEL; \ if (GET_CODE(Addr) == PLUS && \ ((REG_P(XEXP(Addr, 0)) && REG_OK_FOR_BASE_P(XEXP(Addr, 0)) && \ CONSTANT_ADDRESS_P(XEXP(Addr, 1))) || \ @@ -672,14 +676,16 @@ enum reg_class { NO_REGS, GENERAL_REGS, of a switch statement. If the code is computed here, return it with a return statement. Otherwise, break from the switch. */ -#define CONST_COSTS(RTX,CODE, OUTER_CODE) \ - case CONST_INT: \ - if ((unsigned) INTVAL (RTX) < 077) return 1; \ - case CONST: \ - case LABEL_REF: \ - case SYMBOL_REF: \ - return 3; \ - case CONST_DOUBLE: \ +#define CONST_COSTS(RTX,CODE, OUTER_CODE) \ + case CONST_INT: \ + if (INTVAL (RTX) >= -16 && INTVAL (RTX) <= 63) return 0; \ + if (INTVAL (RTX) >= -128 && INTVAL (RTX) <= 127) return 1; \ + if (INTVAL (RTX) >= -32768 && INTVAL (RTX) <= 32767) return 2; \ + case CONST: \ + case LABEL_REF: \ + case SYMBOL_REF: \ + return 3; \ + case CONST_DOUBLE: \ return 5; /* Tell final.c how to eliminate redundant test instructions. */ -- 2.30.2