diff options
author | Richard Henderson <rth@cygnus.com> | 1998-04-26 16:21:55 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1998-04-26 16:21:55 -0700 |
commit | 5d02ee6677b34d1ea94eb2a40993f3d61fc41b6e (patch) | |
tree | 1252f36e519dd63fabc7b89bd070e13a57e0b6d1 | |
parent | fcce69a9e93a8e1491d626e90cea99d36b2c4b26 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.h | 42 |
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. */ |