diff options
author | Richard Sandiford <rsandifo@redhat.com> | 2004-07-16 07:35:58 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2004-07-16 07:35:58 +0000 |
commit | 629198e2662378fe918e4b72e1c3d0ee901a54c6 (patch) | |
tree | 93b802895ed81376bab161f6cdafb9b9d7feed6c /gcc | |
parent | 2bff1abfb0f49a467a7a70c79c359795a373c750 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 14 |
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: |