Commit 5d02ee66 by Richard Henderson Committed by Richard Henderson

alpha.h (CONST_COSTS): Zero is always free.

* alpha.h (CONST_COSTS): Zero is always free.
(RTX_COSTS): Add EV6 costs.  Abort if alpha_cpu is unknown.

From-SVN: r19420
parent fcce69a9
Sun Apr 26 23:19:10 1998 Richard Henderson <rth@cygnus.com>
* alpha.h (CONST_COSTS): Zero is always free.
(RTX_COSTS): Add EV6 costs. Abort if alpha_cpu is unknown.
Sun Apr 26 15:38:50 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> Sun Apr 26 15:38:50 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* cplus-dem.c (gnu_special): Fix off-by-one bug when checking the * cplus-dem.c (gnu_special): Fix off-by-one bug when checking the
......
...@@ -1671,7 +1671,9 @@ do { \ ...@@ -1671,7 +1671,9 @@ do { \
if (INTVAL (RTX) >= 0 && INTVAL (RTX) < 256) \ if (INTVAL (RTX) >= 0 && INTVAL (RTX) < 256) \
return 0; \ return 0; \
case CONST_DOUBLE: \ case CONST_DOUBLE: \
if (((OUTER_CODE) == PLUS && add_operand (RTX, VOIDmode)) \ if ((RTX) == CONST0_RTX (GET_MODE (RTX))) \
return 0; \
else if (((OUTER_CODE) == PLUS && add_operand (RTX, VOIDmode)) \
|| ((OUTER_CODE) == AND && and_operand (RTX, VOIDmode))) \ || ((OUTER_CODE) == AND && and_operand (RTX, VOIDmode))) \
return 0; \ return 0; \
else if (add_operand (RTX, VOIDmode) || and_operand (RTX, VOIDmode)) \ else if (add_operand (RTX, VOIDmode) || and_operand (RTX, VOIDmode)) \
...@@ -1686,7 +1688,9 @@ do { \ ...@@ -1686,7 +1688,9 @@ do { \
case PROCESSOR_EV4: \ case PROCESSOR_EV4: \
return COSTS_N_INSNS (3); \ return COSTS_N_INSNS (3); \
case PROCESSOR_EV5: \ case PROCESSOR_EV5: \
case PROCESSOR_EV6: \
return COSTS_N_INSNS (2); \ return COSTS_N_INSNS (2); \
default: abort(); \
} }
/* Provide the costs of a rtl expression. This is in the body of a /* Provide the costs of a rtl expression. This is in the body of a
...@@ -1700,7 +1704,9 @@ do { \ ...@@ -1700,7 +1704,9 @@ do { \
case PROCESSOR_EV4: \ case PROCESSOR_EV4: \
return COSTS_N_INSNS (6); \ return COSTS_N_INSNS (6); \
case PROCESSOR_EV5: \ case PROCESSOR_EV5: \
case PROCESSOR_EV6: \
return COSTS_N_INSNS (4); \ return COSTS_N_INSNS (4); \
default: abort(); \
} \ } \
else if (GET_CODE (XEXP (X, 0)) == MULT \ else if (GET_CODE (XEXP (X, 0)) == MULT \
&& const48_operand (XEXP (XEXP (X, 0), 1), VOIDmode)) \ && const48_operand (XEXP (XEXP (X, 0), 1), VOIDmode)) \
...@@ -1721,19 +1727,37 @@ do { \ ...@@ -1721,19 +1727,37 @@ do { \
return COSTS_N_INSNS (12); \ return COSTS_N_INSNS (12); \
else \ else \
return COSTS_N_INSNS (8); \ return COSTS_N_INSNS (8); \
case PROCESSOR_EV6: \
if (FLOAT_MODE_P (GET_MODE (X))) \
return COSTS_N_INSNS (4); \
else \
return COSTS_N_INSNS (7); \
default: abort(); \
} \ } \
case ASHIFT: \ case ASHIFT: \
if (GET_CODE (XEXP (X, 1)) == CONST_INT \ if (GET_CODE (XEXP (X, 1)) == CONST_INT \
&& INTVAL (XEXP (X, 1)) <= 3) \ && INTVAL (XEXP (X, 1)) <= 3) \
break; \ break; \
/* ... fall through ... */ \ /* ... fall through ... */ \
case ASHIFTRT: case LSHIFTRT: case IF_THEN_ELSE: \ case ASHIFTRT: case LSHIFTRT: \
switch (alpha_cpu) \ switch (alpha_cpu) \
{ \ { \
case PROCESSOR_EV4: \ case PROCESSOR_EV4: \
return COSTS_N_INSNS (2); \ return COSTS_N_INSNS (2); \
case PROCESSOR_EV5: \ case PROCESSOR_EV5: \
case PROCESSOR_EV6: \
return COSTS_N_INSNS (1); \ return COSTS_N_INSNS (1); \
default: abort(); \
} \
case IF_THEN_ELSE: \
switch (alpha_cpu) \
{ \
case PROCESSOR_EV4: \
case PROCESSOR_EV6: \
return COSTS_N_INSNS (2); \
case PROCESSOR_EV5: \
return COSTS_N_INSNS (1); \
default: abort(); \
} \ } \
case DIV: case UDIV: case MOD: case UMOD: \ case DIV: case UDIV: case MOD: case UMOD: \
switch (alpha_cpu) \ switch (alpha_cpu) \
...@@ -1751,15 +1775,25 @@ do { \ ...@@ -1751,15 +1775,25 @@ do { \
else if (GET_MODE (X) == DFmode) \ else if (GET_MODE (X) == DFmode) \
return COSTS_N_INSNS (22); \ return COSTS_N_INSNS (22); \
else \ else \
return COSTS_N_INSNS (70); /* EV5 ??? */ \ return COSTS_N_INSNS (70); /* ??? */ \
case PROCESSOR_EV6: \
if (GET_MODE (X) == SFmode) \
return COSTS_N_INSNS (12); \
else if (GET_MODE (X) == DFmode) \
return COSTS_N_INSNS (15); \
else \
return COSTS_N_INSNS (70); /* ??? */ \
default: abort(); \
} \ } \
case MEM: \ case MEM: \
switch (alpha_cpu) \ switch (alpha_cpu) \
{ \ { \
case PROCESSOR_EV4: \ case PROCESSOR_EV4: \
case PROCESSOR_EV6: \
return COSTS_N_INSNS (3); \ return COSTS_N_INSNS (3); \
case PROCESSOR_EV5: \ case PROCESSOR_EV5: \
return COSTS_N_INSNS (2); \ return COSTS_N_INSNS (2); \
default: abort(); \
} \ } \
case NEG: case ABS: \ case NEG: case ABS: \
if (! FLOAT_MODE_P (GET_MODE (X))) \ if (! FLOAT_MODE_P (GET_MODE (X))) \
...@@ -1772,7 +1806,9 @@ do { \ ...@@ -1772,7 +1806,9 @@ do { \
case PROCESSOR_EV4: \ case PROCESSOR_EV4: \
return COSTS_N_INSNS (6); \ return COSTS_N_INSNS (6); \
case PROCESSOR_EV5: \ case PROCESSOR_EV5: \
case PROCESSOR_EV6: \
return COSTS_N_INSNS (4); \ return COSTS_N_INSNS (4); \
default: abort(); \
} }
/* Control the assembler format that we output. */ /* Control the assembler format that we output. */
......
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