diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 88ad9d8..2105c64 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com> + PR target/51278 + * config/mips/mips.c (mips_rtx_costs): Handle baddu. + +2011-11-27 Richard Sandiford <rdsandiford@googlemail.com> + * config/mips/mips.c (mips16_unextended_reference_p): Test for BLKmode. 2011-11-27 Richard Sandiford <rdsandiford@googlemail.com> diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 0559a9b..d3fd709 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -3777,6 +3777,16 @@ mips_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED, return false; case ZERO_EXTEND: + if (outer_code == SET + && ISA_HAS_BADDU + && (GET_CODE (XEXP (x, 0)) == TRUNCATE + || GET_CODE (XEXP (x, 0)) == SUBREG) + && GET_MODE (XEXP (x, 0)) == QImode + && GET_CODE (XEXP (XEXP (x, 0), 0)) == PLUS) + { + *total = set_src_cost (XEXP (XEXP (x, 0), 0), speed); + return true; + } *total = mips_zero_extend_cost (mode, XEXP (x, 0)); return false; |