Commit 4de54e92 by Richard Stallman

(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
parent cd3383a3
...@@ -580,10 +580,14 @@ enum reg_class { NO_REGS, GENERAL_REGS, ...@@ -580,10 +580,14 @@ enum reg_class { NO_REGS, GENERAL_REGS,
#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, LABEL) \ #define GO_IF_LEGITIMATE_ADDRESS(MODE, X, LABEL) \
{ register rtx Addr = X; \ { register rtx Addr = X; \
if (REG_P(Addr) && REG_OK_FOR_BASE_P(Addr)) \ if ((MODE) == QImode || (MODE) == HImode || \
goto LABEL; \ (MODE) == PSImode || (MODE) == SImode || (MODE) == SFmode) \
if (GET_CODE(Addr) == MEM) \
Addr = XEXP(Addr, 0); \
if (CONSTANT_ADDRESS_P(Addr)) \ if (CONSTANT_ADDRESS_P(Addr)) \
goto LABEL; \ goto LABEL; \
if (REG_P(Addr) && REG_OK_FOR_BASE_P(Addr)) \
goto LABEL; \
if (GET_CODE(Addr) == PLUS && \ if (GET_CODE(Addr) == PLUS && \
((REG_P(XEXP(Addr, 0)) && REG_OK_FOR_BASE_P(XEXP(Addr, 0)) && \ ((REG_P(XEXP(Addr, 0)) && REG_OK_FOR_BASE_P(XEXP(Addr, 0)) && \
CONSTANT_ADDRESS_P(XEXP(Addr, 1))) || \ CONSTANT_ADDRESS_P(XEXP(Addr, 1))) || \
...@@ -672,14 +676,16 @@ enum reg_class { NO_REGS, GENERAL_REGS, ...@@ -672,14 +676,16 @@ enum reg_class { NO_REGS, GENERAL_REGS,
of a switch statement. If the code is computed here, of a switch statement. If the code is computed here,
return it with a return statement. Otherwise, break from the switch. */ return it with a return statement. Otherwise, break from the switch. */
#define CONST_COSTS(RTX,CODE, OUTER_CODE) \ #define CONST_COSTS(RTX,CODE, OUTER_CODE) \
case CONST_INT: \ case CONST_INT: \
if ((unsigned) INTVAL (RTX) < 077) return 1; \ if (INTVAL (RTX) >= -16 && INTVAL (RTX) <= 63) return 0; \
case CONST: \ if (INTVAL (RTX) >= -128 && INTVAL (RTX) <= 127) return 1; \
case LABEL_REF: \ if (INTVAL (RTX) >= -32768 && INTVAL (RTX) <= 32767) return 2; \
case SYMBOL_REF: \ case CONST: \
return 3; \ case LABEL_REF: \
case CONST_DOUBLE: \ case SYMBOL_REF: \
return 3; \
case CONST_DOUBLE: \
return 5; return 5;
/* Tell final.c how to eliminate redundant test instructions. */ /* Tell final.c how to eliminate redundant test instructions. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment