OSDN Git Service

gcc/
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 27 Nov 2011 10:18:25 +0000 (10:18 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 27 Nov 2011 10:18:25 +0000 (10:18 +0000)
PR target/51278
* config/mips/mips.c (mips_rtx_costs): Handle baddu.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181763 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/mips/mips.c

index 88ad9d8..2105c64 100644 (file)
@@ -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>
index 0559a9b..d3fd709 100644 (file)
@@ -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;