aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@redhat.com>2004-07-16 07:35:58 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2004-07-16 07:35:58 +0000
commit629198e2662378fe918e4b72e1c3d0ee901a54c6 (patch)
tree93b802895ed81376bab161f6cdafb9b9d7feed6c /gcc
parent2bff1abfb0f49a467a7a70c79c359795a373c750 (diff)
downloadgcc-629198e2662378fe918e4b72e1c3d0ee901a54c6.zip
gcc-629198e2662378fe918e4b72e1c3d0ee901a54c6.tar.gz
gcc-629198e2662378fe918e4b72e1c3d0ee901a54c6.tar.bz2
mips.c (mips_rtx_costs): In mips16 code, set the cost of 0...255 to 0 when inside a SET.
* config/mips/mips.c (mips_rtx_costs): In mips16 code, set the cost of 0...255 to 0 when inside a SET. From-SVN: r84804
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/mips/mips.c14
2 files changed, 19 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ae09368..8507a92 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2004-07-16 Richard Sandiford <rsandifo@redhat.com>
+ * config/mips/mips.c (mips_rtx_costs): In mips16 code, set the cost
+ of 0...255 to 0 when inside a SET.
+
+2004-07-16 Richard Sandiford <rsandifo@redhat.com>
+
* config/mips/mips.md: Remove mips16 define_peepholes.
2004-07-16 Daniel Berlin <dberlin@dberlin.org>
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 679416c..7f72535 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -2192,6 +2192,20 @@ mips_rtx_costs (rtx x, int code, int outer_code, int *total)
return true;
}
+ /* Constants in the range 0...255 can be loaded with an unextended
+ instruction. They are therefore as cheap as a register move.
+
+ Given the choice between "li R1,0...255" and "move R1,R2"
+ (where R2 is a known constant), it is usually better to use "li",
+ since we do not want to unnessarily extend the lifetime of R2. */
+ if (outer_code == SET
+ && INTVAL (x) >= 0
+ && INTVAL (x) < 256)
+ {
+ *total = 0;
+ return true;
+ }
+
/* Otherwise fall through to the handling below. */
case CONST: