(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
This commit is contained in:
Richard Stallman 1993-02-17 23:32:16 +00:00
parent cd3383a393
commit 4de54e922f

View File

@ -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. */