aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-04-26 16:21:55 -0700
committerRichard Henderson <rth@gcc.gnu.org>1998-04-26 16:21:55 -0700
commit5d02ee6677b34d1ea94eb2a40993f3d61fc41b6e (patch)
tree1252f36e519dd63fabc7b89bd070e13a57e0b6d1
parentfcce69a9e93a8e1491d626e90cea99d36b2c4b26 (diff)
downloadgcc-5d02ee6677b34d1ea94eb2a40993f3d61fc41b6e.zip
gcc-5d02ee6677b34d1ea94eb2a40993f3d61fc41b6e.tar.gz
gcc-5d02ee6677b34d1ea94eb2a40993f3d61fc41b6e.tar.bz2
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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/alpha/alpha.h42
2 files changed, 44 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 64d05df..6631624 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+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>
* cplus-dem.c (gnu_special): Fix off-by-one bug when checking the
diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h
index 7823d1c..6fd6acd 100644
--- a/gcc/config/alpha/alpha.h
+++ b/gcc/config/alpha/alpha.h
@@ -1671,7 +1671,9 @@ do { \
if (INTVAL (RTX) >= 0 && INTVAL (RTX) < 256) \
return 0; \
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))) \
return 0; \
else if (add_operand (RTX, VOIDmode) || and_operand (RTX, VOIDmode)) \
@@ -1686,7 +1688,9 @@ do { \
case PROCESSOR_EV4: \
return COSTS_N_INSNS (3); \
case PROCESSOR_EV5: \
+ case PROCESSOR_EV6: \
return COSTS_N_INSNS (2); \
+ default: abort(); \
}
/* Provide the costs of a rtl expression. This is in the body of a
@@ -1700,7 +1704,9 @@ do { \
case PROCESSOR_EV4: \
return COSTS_N_INSNS (6); \
case PROCESSOR_EV5: \
+ case PROCESSOR_EV6: \
return COSTS_N_INSNS (4); \
+ default: abort(); \
} \
else if (GET_CODE (XEXP (X, 0)) == MULT \
&& const48_operand (XEXP (XEXP (X, 0), 1), VOIDmode)) \
@@ -1721,19 +1727,37 @@ do { \
return COSTS_N_INSNS (12); \
else \
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: \
if (GET_CODE (XEXP (X, 1)) == CONST_INT \
&& INTVAL (XEXP (X, 1)) <= 3) \
break; \
/* ... fall through ... */ \
- case ASHIFTRT: case LSHIFTRT: case IF_THEN_ELSE: \
+ case ASHIFTRT: case LSHIFTRT: \
switch (alpha_cpu) \
{ \
case PROCESSOR_EV4: \
return COSTS_N_INSNS (2); \
case PROCESSOR_EV5: \
+ case PROCESSOR_EV6: \
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: \
switch (alpha_cpu) \
@@ -1751,15 +1775,25 @@ do { \
else if (GET_MODE (X) == DFmode) \
return COSTS_N_INSNS (22); \
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: \
switch (alpha_cpu) \
{ \
case PROCESSOR_EV4: \
+ case PROCESSOR_EV6: \
return COSTS_N_INSNS (3); \
case PROCESSOR_EV5: \
return COSTS_N_INSNS (2); \
+ default: abort(); \
} \
case NEG: case ABS: \
if (! FLOAT_MODE_P (GET_MODE (X))) \
@@ -1772,7 +1806,9 @@ do { \
case PROCESSOR_EV4: \
return COSTS_N_INSNS (6); \
case PROCESSOR_EV5: \
+ case PROCESSOR_EV6: \
return COSTS_N_INSNS (4); \
+ default: abort(); \
}
/* Control the assembler format that we output. */